Форум сайта python.su
Добрый день!
Недавно начал изучать Python для своих мат. вычислений, которые раньше делал в Excel. Начал переводить их в Python и столкнулся с тем, что не могу прописать в виде алгоритма то, что раньше делал самостоятельно даже не задумываясь. Знаний еще не хватает.
Суть дерева?
Это результаты 3-х раундных поединков между бойцами в смешанных единоборствах. В конце каждого раунда присуждается значение показывающий результат каждого раунда (от 1 до 7). Во второй части таблицы указаны сколько ударов они нанесли за этот раунд.
Что нужно сделать?
Создать цикл, который должен:
1. Прописывать значения всех результатов по раундам.
2. Прописывать их в порядке возрастания.
3. Считать и прописывать значения соответствующему сценарному дереву. Если деревья совпадают, то считать среднюю арифметическую.
P.S. Я смог придумать решение только для первого раунда. Использовал библиотеку Openpyxl. Возможно кто-то сможет предложить более простой способ построения дерева. Буду рад любому предложению.
#1 раунд v=[] for j in range(2,x3+1): if type(ws3.cell(2,j).value)==int: if ws3.cell(2,j).value in v: pass else: v.append(ws3.cell(2,j).value) else: pass for j in range(2,x3+1): if type(ws3.cell(15,j).value)==int: if ws3.cell(15,j).value in v: pass else: v.append(ws3.cell(15,j).value) else: pass def selection_sort(nums): # значение i соответствует тому, сколько значений было отсортировано for i in range(len(nums)): # Мы предполагаем, что первый элемент несортированного сегмента является наименьшим lowest_value_index = i # Этот цикл перебирает несортированные элементы for j in range(i + 1, len(nums)): if nums[j] < nums[lowest_value_index]: lowest_value_index = j # Поменять местами значения самого низкого несортированного элемента с первым несортированным nums[i], nums[lowest_value_index] = nums[lowest_value_index], nums[i] selection_sort(v) for i in range(len(v)): ws3.cell(33+i,1).value=v[i]
Прикреплённый файлы:
12345.jpg (109,5 KБ)
Офлайн
Ммм. Я бы сказал что проблемы возникают от попыток упихать в таблицы данные которые в таблицы плохл ложатся. В частности проблема от использования exel.
Программа обычно берет входные данные и преобразует в выходные. И то и другое надо четко описать.
насколько я понял данные такие.
results={ "Вася" : [7,[5,20,3]], "Петя" : [3,[0,1,4]], "Маша" : [1,[2,0,0]] }
AndrewNoviНу это входные данные, они и так есть.
1. Прописывать значения всех результатов по раундам.
AndrewNoviЯ так понял что результатом раунда является количество ударов.
2. Прописывать их(результаты) в порядке возрастания.
i_round=0 print(sorted([(v[1][i_round],k) for k,v in results.items()]))
AndrewNoviГде тут дерево непонятно. И соответственно неясно что надо усреднять.
Считать и прописывать значения соответствующему сценарному дереву. Если деревья совпадают, то считать среднюю арифметическую.
Офлайн
Спасибо за ответ. Нашел решение проблемы.
Офлайн