或者是python中的语法

时间:2016-12-23 06:02:10

标签: python-2.7

我试图了解这两个选项的结果差异,并可能获得更好的选择。我是一个新手,但我的指示并不是非常详细,而且我很难获得有关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;响应,但选项二只是给出一个错误。提前谢谢!

1 个答案:

答案 0 :(得分:2)

if "0" or "1" or "2" in choice

对于新程序员来说,这是一个非常常见的错误。

这可以理解为

if '0' == true or '1' == true or '2' in choice

你看到现在的问题了吗?作为非空字符串的"0"将是真的,并且将永远为真,因此其余的检查甚至都不会完成。

请记住,or只检查其中一个操作数是否为真(或真实)。它没有一些智能行为,允许它以英语阅读并按照您的预期运作。

版本1是正确的,虽然在未来的路上你会学到更好的写作方式。