winner_list
не возвращает значение вызывающей стороне.Здесь есть что распаковать, в том числе тот факт, что вы используете имена переменных, которые скрывают имена ваших функций, среди прочего я бы изменил, но в конечном итоге это не проблема, требующая рекурсии.
Почему бы и нет?Вы знаете, сколько раз максимально выбрать победителя (из form.number.data
), и у вас есть список конкурентов определенной длины.
В этом примере выбираются только уникальные победители.Если участник может «выиграть» более одного раза, просто удалите последнюю строчку.
results = []
how_many_winners = form.number_data
contestants = main_competitors[:]
while main_competitors and len(results) < how_many_winners:
this_winner = random.choice(contestants)
results.append(this_winner)
contestants.remove(this_winner) # Remove this line if a contestant can 'win' more than once