想寻求以下代码的帮助。根据我的理解,使用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!")
答案 0 :(得分:1)
当您输入60
时,它将作为字符串存储在next
中。 "0" in next
为True
,因为字符串"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!")