Форум сайта python.su
0
Здравствуй, сообщество. Пока что могу считать создание программных продуктов своим хобби. Недавно занялся детальным обмозгованием одного проекта, который связан с жеребьевкой команд. Ранее я пытался создать подобный на том же с++, но не вышло. На данном этапе все работает стабильно (ну, пока не пытаюсь допилить), но остается вопрос, связанный с тем, что команды при жеребьевке (на примере той же ЛЧ) имеют свою страну/конфедерацию, и не могут быть в одной группе вместе с командой из той же страны. Код выглядит так (всякое TODO уберу для читабельности
import random import os potA = []; potB = []; potC = []; potD = [] s = 0 l = [potA,potB,potC,potD] #pot_c = input ("Яка кількість команд у групі? ") #pot_c = int(pot_c) #pot = [] #pots = [] #for x in range (0, pot_c): pots.append(pot); pots[x] = [] #print(pots) #print(pots) gr_c = input ("Яка кількість груп? ") try: gr_c = int(gr_c) except ValueError: print("Ви ввели не число, і що нам з вами робити, га?"); exit() while gr_c < 2: print("Невірна кількість груп"); gr_c = int(input ("Яка кількість груп? ")) txt_file = input("Введемо назву файла, у нього запишуться наші групи (без формату, тільки назву): ") while os.path.exists(txt_file + ".txt") or txt_file == "": print ("Помилка при виборі імені файлу. Краще спробувати іншу назву ") txt_file = input("Введемо назву файла, у нього запишуться наші групи (без формату, тільки назву): ") #item = pot_c for item in l: #while s <= pot_c-1: s += 1 for i in range (1, gr_c+1): inp = input ("Введіть команду %i для кошика %i: " % (i,s)) # Тут мы берем значение для n груп, учитывая, что в каждой группе - 4 команды while inp=="": print("Ви нічого не написали, назва має ж бути, га?"); inp = input ("Введіть команду %i для кошика %i: " % (i,s)) if inp != '': item.append(inp) # Если простой игнор ввода, сразу выбиваем, при непустой строке (даже, если это пробел), вносим в список #print(pots) random.shuffle (potA); random.shuffle (potB); random.shuffle (potC); random.shuffle (potD) # Мешаем каждый список while potD: for counter in range (1,gr_c+1): f = open (txt_file + ".txt", "a") # Файл, в который будем пихать все группы без слов "1 група - ", открыли, а потом вновь помешали групы, для цикла это важно pop_a = potA.pop(); random.shuffle (potA) pop_b = potB.pop(); random.shuffle (potB) pop_c = potC.pop(); random.shuffle (potC) pop_d = potD.pop(); random.shuffle (potD) f.write(str(pop_a) + ", " + str(pop_b) + ", " + str(pop_c) + ", " + str(pop_d) + "\n") print(str(counter) + " група - " + str(pop_a) + ", " + str(pop_b) + ", " + str(pop_c) + ", " + str(pop_d)) # Каждой итерацией выкидываем элемент из файла, записывая ее для ввывода на экран f.write("\n") f.close() print("") input("А тепер натисніть <Enter> щоб покинути це страшне місце ") # Закончили все, просто, чтобы уйти красиво, а не после вывода резльтатов
Отредактировано makhauser (Июль 6, 2013 20:50:56)
Офлайн
857
makhauserне пиши код в одну строкуwhile gr_c < 2: print("Невірна кількість груп"); gr_c = int(input ("Яка кількість груп? "))
while gr_c < 2: print("Невірна кількість груп") gr_c = int(input ("Яка кількість груп? "))
makhauserвот, например, интерпретатор тебе сообщает, что ошибка в random.shuffle в этой строке; если даже есть каретка (а во многих компиляторах её просто нет), то она может показывать не тудаrandom.shuffle (potA); random.shuffle (potB); random.shuffle (potC); random.shuffle (potD) # Мешаем каждый список
# Мешаем каждый список random.shuffle(potA) random.shuffle(potB) random.shuffle(potC) random.shuffle(potD)
Отредактировано py.user.next (Июль 6, 2013 21:26:23)
Офлайн
0
py.user.nextСпасибо, это я учту. Таки да, лучше писать в большее количество строк, да и нагляднее будет
не пиши код в одну строку
Офлайн