我试图了解这两个选项的结果差异,并可能获得更好的选择。我是一个新手,但我的指示并不是非常详细,而且我很难获得有关Python语法的信息 - 如果有人有很好的资源我很乐意欢迎它。 :)
def numberchoice():
print "How much do you take?"
choice = raw_input("> ")
if "0" in choice or "1" in choice or "2" in choice: #OPTION ONE
#if "0" or "1" or "2" in choice: #OPTION TWO
how_much = int(choice)
else:
print "please type a number."
numberchoice()
if how_much < 50:
exit("Nice, you're not greedy, you win!")
if how_much > 50:
exit("You greedy bastard!")
numberchoice()
我不明白的是为什么OPTION ONE和TWO不可互换;如果我使用选项一,用户输入错误的响应 - 即。字母而不是数字 - 选项一运行&#34;否则&#34;响应,但选项二只是给出一个错误。提前谢谢!
答案 0 :(得分:2)
if "0" or "1" or "2" in choice
对于新程序员来说,这是一个非常常见的错误。
这可以理解为
if '0' == true or '1' == true or '2' in choice
你看到现在的问题了吗?作为非空字符串的"0"
将是真的,并且将永远为真,因此其余的检查甚至都不会完成。
请记住,or
只检查其中一个操作数是否为真(或真实)。它没有一些智能行为,允许它以英语阅读并按照您的预期运作。
版本1是正确的,虽然在未来的路上你会学到更好的写作方式。