Я пытаюсь написать код, чтобы выбрать Secret Santas для своих кузенов. Код, который у меня есть, работает только для четного числа людей, но у меня есть нечетное число или двоюродные братья.
import random
def Santa(names, draw):
matches= []
while names:
giver = names.pop() #chooses giver and removes name
receiver = random.choice(draw) #picks random to receive
if giver != receiver:
matches.append([giver, receiver]) #adds pair
draw.remove(receiver) #removes person from receiving list
else:
names.append(giver) #if names are the same, adds name back to list
return matches
family1=['cousin1', 'cousin2', 'cousin3', 'cousin4']
family2=['cousin5', 'cousin6', 'cousin7','cousin8','cousin9','cousin10']
family3=['cousin11', 'cousin12', 'cousin13','cousin14']
family4=['cousin15', 'cousin16', 'cousin17']
family5=['cousin18', 'cousin19']
names = [ 'cousin1', 'cousin2', 'cousin3', 'cousin4','cousin5']
print(Santa(names,names))
Ошибка IndexError: Невозможно выбрать пустую последовательность из строки:
receiver = random.choice(draw)
Одно из ограничений, которое я добавлю в будущем, заключается в том, что у вас не может быть одного из ваших братьев и сестер или родственников. Любой совет, как сделать эту работу для нечетного списка имен или семейного ограничения, был бы очень полезен.