我正在尝试使用条件语句运行嵌套的for循环。在运行它时,我希望它能打印我在条件语句中定义的语句。但它没有打印任何东西。 (它不会无限期地运行)。 Pokemons_gyms是一个字符串列表。玩家是一本字典。我尝试添加else: continue
但它不起作用。我被卡住了因为我没有在运行代码时出现任何错误......
pokemon_gyms = ['reddit.com', 'amazon.com', 'twitter.com',
'linkedin.com', 'ebay.com','netflix.com',
'udacity.com','stackoverflow.com','github.com',
'quora.com']
players= {
1: {
'gyms_visited': ['amazon.com', 'ebay.com']
}
2:{
'gyms_visited' : ['stackoverflow.com','github.com']
}
}
for gym in pokemon_gyms:
for players_id in players:
if gym == players[players_id]['gyms_visited']:
print(str(players[players_id]['player_name']) +" has visited "+ str(gym))
答案 0 :(得分:4)
players[players_id]['gyms_visited']
会返回一个列表,因此gym == players[players_id]['gyms_visited']
始终评估为False
。
您应该使用in
检查会员资格:
if gym in players[players_id]['gyms_visited']:
...
答案 1 :(得分:3)
这里的问题是gym
将是str
而players[players_id]['gyms_visited']
是字符串的列表。因此,它们永远不会平等。
也许你想检查
if gym in players[players_id]['gyms_visited']:
答案 2 :(得分:0)
您的问题在if gym == players[players_id]['gyms_visited']:
行。 ==
检查是否相等,这样看看gym
是否等于字典中players[players_id]['gyms_visited']
中的列表。
如果您想检查列表中的任何项目是否与字符串相同,您可以使用in
关键字
for gym in pokemon_gyms:
for players_id in players:
if gym in players[player_id]['gyms_visited']:
# Do things here
请注意,对于大型列表,这可能会相当慢,因此如果您要让玩家拥有大量访问过的pokemon_gyms,您可能需要考虑使用set。
答案 3 :(得分:0)
YUP! 所有这一切,都是' =='因为类型(健身房)不同于类型(玩家[players_id] [' gyms_visited'])导致所有结果都是假的。
我更换了' =='通过' in'它运作得很好。
谢谢你们!