【发布时间】:2018-12-05 04:53:04
【问题描述】:
我正在编写一个 python 脚本并且对一些与列表相关的逻辑感到困惑。 我有 2 个列表 PrizeList ,其中包含奖品元素,以及一个包含获胜者元素的获胜者列表。 对于获胜者列表中的每个元素,我都希望将奖品元素与之关联。
我有两个方法:distributePrizes 包含这个逻辑和 sendEmail 方法,它是从distributePrizes 方法调用的。
我遇到的问题是,当每个获胜者没有足够的奖品时,脚本会在第一次检查后停止。
有三种可能的情况: 1. 足够数量的奖品。在这种情况下,调用 emailWinners 方法。 2.奖品比得奖者少。为每个与奖品匹配的获胜者致电 emailWinners。 3.没有奖品。在这种情况下输出一个错误。
我不确定如何为每个与奖品匹配的获胜者调用 emailWinners 方法。当prizeList 和winnerList 的大小不同时,我尝试为每个获胜者调用emailWinner 时出现索引越界错误。
例如(winnerList[] = 长度 5,prizeList[] = 长度 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)
【问题讨论】:
-
不清楚你的问题是什么
-
您想将奖品分配给每位获奖者,但如果奖品不够,那就行不通了.. 购买更多奖品?你希望发生什么?
-
对造成的混乱表示歉意。有三种可能的情况, 1. 每个人都有足够的奖品 -> 调用 emailWinners 方法。 2. 没有足够的奖品 -> 通过电子邮件发送与有奖品相同数量的获奖者。 3.没有奖品,输出错误。