我正在写一个python脚本,对一些与列表相关的逻辑感到困惑。 我有两个列表prizeList包含奖品元素,和一个获奖者名单包含获奖者元素。 对于winnerList中的每个元素,我想将一个prize元素与之关联。你知道吗
我有两个方法:包含此逻辑的distributePrizes和从distributePrizes方法调用的sendEmail方法。你知道吗
我遇到的问题是,当没有足够的奖品给每位获奖者时,剧本会在第一次检查后停止。你知道吗
有三种可能的情况: 1有足够的奖品奖励得奖者。在这种情况下,调用emailWinners方法。 2.奖品少于获奖者。给每一个与奖品匹配的获胜者打电话。 三。没有奖品。在这种情况下,输出一个错误。你知道吗
我不知道如何调用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)
您通常会对这样的东西使用
zip
函数。例如:这是预期的行为,因为检查
检查prizelist是否大于电子邮件列表。if语句没有else语句,因此脚本在
len(prizelist) <= len(emailList)
时停止无论是谁写的这篇文章,很可能应用了这个检查,这样就可以从那时起假设“每个人都有足够的奖品”。你知道吗
相关问题 更多 >
编程相关推荐