下面的代码是我正在编码的一个口袋妖怪的版画,而列表中的口袋妖怪都是一个类的实例。该脚本不会抛出任何错误,但无论我输入什么内容,它都会转到else语句“那不是口袋妖怪”并调用player1_select()
......
pokemon_dict = {"joe":joe,"alex":alex,"ginger beard man":ginger_beard_man,"mark":mark}
pokemon_list = ["joe","alex","mark","ginger beard man"]
def player1_select():
print pokemon_list
response = raw_input("trainer 2 wants to battle! which pokemon do you choose!?")
for i,j in pokemon_dict.iteritems():
if response == i:
print "player1 selected " + i + "!"
p1 = j
player2_select(p1)
else:
print "That's not a pokemon! yet..."
player1_select()
答案 0 :(得分:2)
您正在测试字典中的每个元素,这意味着除零或一个之外的所有元素都不匹配。对于所有那些不匹配的else
分支执行。
但是,你有一本字典;不要循环,只需在映射中直接查找条目:
response = raw_input("trainer 2 wants to battle! which pokemon do you choose!?")
if response in pokemon_dict:
print "player1 selected " + response + "!"
p1 = pokemon_dict[response]
player2_select(p1)
else:
print "That's not a pokemon! yet..."
player1_select()
如果有匹配的密钥, response in pokemon_dict
为True。
答案 1 :(得分:1)
您以任意顺序遍历字典中的每个键/值对。如果您检查的第一个不是用户输入的内容,则将执行else
块。你可能想要这样的东西:
if response in pokemon_dict: # Checks if `response` is a key in the dictionary
print "player1 selected " + i + "!"
p1 = pokemon_dict[response]
player2_select(p1)
else:
print "That's not a pokemon! yet..."
player1_select()