Я пишу скрипт на python и запутался в какой-то логике, связанной со списком.У меня есть 2 списка призового листа, который содержит элементы приза, и список победителей, содержащий элементы победителя.Для каждого элемента в winnerList я хочу связать с ним элемент выигрыша.
У меня есть два метода: distribtePrizes, который содержит эту логику, и метод sendEmail, который вызывается из метода distribtePrizes.
Проблема, с которой я сталкиваюсь, заключается в том, что при недостаточном количестве призов для каждого победителя сценарий останавливается после первой проверки.
Существует три возможных условия: 1. Достаточно призов для количества победителей.В этом случае вызовите метод emailWinners.2. Меньше призов, чем есть победители.Назовите emailWinners для каждого победителя, которому соответствует приз.3. Нет призов.В этом случае выведите ошибку.
Я не уверен, как вызвать метод emailWinners для каждого победителя, которому назначен приз.Я получаю ошибки индексации при попытке вызвать emailWinner для каждого победителя, когда призовые листы и списки победителей имеют разные размеры.
например, (winnerList [] = длина 5, призовой список [] = длина 3. Следует отправить 3 победителей с призом, но вместо этого получить ошибку индексации за пределами границ.)
Вот что я пробовалдо сих пор:
if len(prizeArray) < len(winnerEmail):
# Not enough prizes for every winner
print("Not enough prizes for " + prizeType) # Alert if not enough prizes
for email in winnerEmail:
emailUserWithPrize(winnerEmailAddress, winnerPrize)
winnerEmailAddress = ""
winnerPrize = ""
for i in range(len(winnerEmail)):
# For every prize thats available, assign one email to it
winnerEmailAddress = winnerEmail[i]
# Assign an email from the list to a prize from the list
if i < len(prizeArray):
winnerPrize = prizeArray[i]
prizeArray.remove(winnerPrize)
# Write array content to prize file, essentially removing used prizes
openFile.close() # Should delete all content
writeToFile = open(prizeFile, 'w')
writeToFile.write(prizeArray[i]) # Should write remaining prizes back to file
else:
print("No prize available for " + winnerEmail[i])
# print(winnerEmailAddress, " won ", winnerPrize)
# also need to remove this entry from prize file
emailUserWithPrize(winnerEmailAddress, winnerPrize)