我目前正在研究字典循环和Python循环。在这本词典里,人们对他们最喜欢的语言进行了投票,并得出了投票结果。参与者名单显示了必须参加的人;
我想循环遍历Participants
列表,如果他们在字典中,则打印他们已完成投票,打印他们的名字,并打印他们最喜欢的语言。如果没有,它打印他们需要完成投票,后面跟着他们的名字。
Poll = {
'Jen': 'Python',
'James': 'C++',
'John': 'Java',
}
Participants = ['Jade', 'Jen', 'James', 'Josh', 'John']
for Participant in Participants:
if Participant, Language in Poll.items():
print("Poll completed, " + Participant + '.' +
'Favorite language: ' + Language)
else:
print('Please complete the poll, ' + Participant)
首先,使用大写字母开始变量名是不好的做法。这些都应该改变;例如:Participants
应该是participants
。
问题出在这一行:
if participant, language in poll.items():
这会导致SyntaxError。您可能想要检查poll
是否有participant
的条目,如下所示:
if participant in poll:
print("Poll completed, " + participant + '.' +
'Favorite language: ' + poll[participant])
以上代码将检查participant
是否为poll
中的有效密钥(换句话说,poll
是否包含参与者的条目)。如果是,它将列出poll
的participant
条目作为语言。
正如评论中提到的,在这些情况下,通常更倾向于使用try-except
语句而不是if-else
语句(参见这篇博客文章),如下所示:
try:
print("Poll completed, " + participant + '.' +
'Favorite language: ' + poll[participant])
except KeyError:
print('Please complete the poll, ' + participant)
这实现了同样的事情;如果poll[participant]
不存在(意味着参与者在poll
中没有条目),则执行except
语句,打印参与者未完成投票。否则,try
语句将运行,输出参与者确实完成了投票。
我知道你想要什么:你的逻辑几乎正确,但你根本没有学会如何访问字典特征…但是你很接近了。
您不能比较语言是否在Poll.items()中—这是您从Poll
中提取的东西。你需要更多地练习变量是如何工作的。相反,你只问这个人是否在Poll
;如果是,则提取语言:
for Participant in Participants:
if Participant in Poll:
print("Poll completed, " + Participant + '.' +
'Favorite language: ' + Poll[Participant])
else:
print('Please complete the poll, ' + Participant)
也许您只需要看一下dictionarys https://docs.python.org/3/tutorial/datastructures.html的文档。你的代码不可能知道你的语言是什么意思。字典是键/值对。
Poll = {
'Jen': 'Python',
'James': 'C++',
'John': 'Java',
}
Participants = ['Jade', 'Jen', 'James', 'Josh', 'John']
for Participant in Participants:
if Participant in Poll:
print("Poll completed, " + Participant + '.' +
'Favorite language: ' + Poll[Participant])
else:
print('Please complete the poll, ' + Participant)