def prompt():
x = raw_input('Type a command: ')
return x
def nexus():
print 'Welcome to the Nexus,', RANK, '. Are you ready to fight?';
print 'Battle';
print 'Statistics';
print 'Shop';
command = prompt()
if command == "Statistics" or "Stats" or "Stat":
Statistics()
elif command == "Battle" or "Fight":
Battle()
elif command == "Shop" or "Buy" or "Trade":
Shop()
else:
print "I can't understand that..."
rankcheck()
实际上,应该做的是在输入stat时输入Stat功能,输入Battle时输入Battle功能,输入shop时输入shop功能。然而,我实际上遇到了问题(Duh)。当输入任何内容时,它会直接转到Stat函数。我相信这是因为我处理提示的方式。它几乎只看到第一个if语句并呈现它应该的函数。但是,如果我输入Battle,它仍然需要我进行统计。
我对Python很新,我来这里是为了寻求一些建议。这有什么想法?谢谢你提前。
答案 0 :(得分:7)
条件
command == "Statistics" or "Stats" or "Stat"
始终被视为True
。如果True
为command
,则评估为Statistics
,或评估为"Stats"
。你可能想要
if command in ["Statistics", "Stats", "Stat"]:
# ...
相反,或更好
command = command.strip().lower()
if command in ["statistics", "stats", "stat"]:
要放松一点。
答案 1 :(得分:3)
"Stats"
是一个非零长度的字符串,因此它充当布尔值True
。请尝试使用in
代替序列:
if command in ("Statistics", "Stats", "Stat"):
Statistics()
elif command in ("Battle", "Fight"):
Battle()
elif command in ("Shop", "Buy", "Trade"):
Shop()
else:
print "I can't understand that..."
rankcheck()
答案 2 :(得分:2)
此外,当使用带有和/或语句的简单if时,请确保始终引用要比较的元素。例如,
if command == "Statistics" or "Stats" or "Stat":
Statistics()
将是
if command == "Statistics" or command == "Stats" or command == "Stat":
Statistics()
但是,如前所述,最好使用简单的“in”关键字