Найти - Пользователи
Полная версия: Помогите написать цикл для сценарного дерева
Начало » Python для новичков » Помогите написать цикл для сценарного дерева
1
AndrewNovi
Добрый день!
Недавно начал изучать 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] 
doza_and
Ммм. Я бы сказал что проблемы возникают от попыток упихать в таблицы данные которые в таблицы плохл ложатся. В частности проблема от использования 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()]))
v - доступ к результатам раундов.
Тут делается массив пар . Дальше он сортируется (в лексиграфическом порядке) и печатается.
Те на выходе для раунда 9 будет .


AndrewNovi
Считать и прописывать значения соответствующему сценарному дереву. Если деревья совпадают, то считать среднюю арифметическую.
Где тут дерево непонятно. И соответственно неясно что надо усреднять.
AndrewNovi
Спасибо за ответ. Нашел решение проблемы.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB