Python帮助:评估if语句

时间:2015-12-04 07:29:36

标签: python-2.7

想寻求以下代码的帮助。根据我的理解,使用IF,ELIF,ELSE与多个ifs之间的区别之一是所有IF都将被评估。

对于下面的特定代码,我很难理解为什么输入值为60会给你贪婪的混蛋!"而不是"男人,学会输入数字。"

我的思路如下:如果我键入60,它既不是0或1,因此不会输入how_much = int(next)而应直接转到

else:
dead("Man, learn to type a number.")

第二个if语句不应由Python处理,因为在第一个if语句中跳过了how_much = int(next)

完整代码:

def gold_room():
    print "This room is full of gold. How much do you take?"

    next = raw_input("> ")
    if "0" in next or "1" in next:
        how_much = int(next)
    else:
        dead("Man, learn to type a number.")
    if how_much < 50:
        print "Nice, you're not greedy, you win!"
        exit(0)
    else:
        dead("You greedy bastard!")

2 个答案:

答案 0 :(得分:1)

当您输入60时,它将作为字符串存储在next中。 "0" in nextTrue,因为字符串"60"中存在零,因此how_much将设置为整数60

如果if是所有数字的字符串,则以下next将为True:

if next.isdigit():
    how_much = int(next)

另一个选项是try/except

try:
    how_much = int(raw_input("> "))
except ValueError:
    dead("Man, learn to type a number.")

答案 1 :(得分:1)

in表示&#34;列表,str等。包括这个值&#34;?在这种情况下,是的,&#34; 60&#34;包括&#34; 0&#34;。但是,如果你要进入&#34; 54&#34;它 NOT 包括&#34; 0&#34;或&#34; 1&#34;所以你达到了第一个退出条件。

您可能需要考虑在try / except块中输出how_much:

def gold_room():
    print "This room is full of gold. How much do you take?"

    next = raw_input("> ")
    try:
        how_much = int(next)
    except:
        dead("Man, learn to type a number.")
        return # I generally put a "return" statement in places like this one.

    if how_much < 50:
        print "Nice, you're not greedy, you win!"
        exit(0)
    else:
        dead("You greedy bastard!")