2013-07-23 113 views
0

我通过新手教程蟒工作,我试图通过添加条件的选项做一点点超过教程询问Python的条件if语句失败

elif option == "2": 
    print "Choose a number for opt 2" 
    var_in = raw_input("> ") 

    if 0 < var_in < 5 or 1 <= var_in < 5: 
     print "between 1-5" 
    elif var_in == "0": #works 
     print "Zero" 
    else: 
     print "Greater than 5!" #works 

如果我输入任何内容var_in以外的其他值为0,我得到消息“大于5!”。

我也尝试使用:

elif option == "2": 
    print "Choose a number for opt 2" 
    var_in = raw_input("> ") 

    if var_in in range(1, 5): 
     print "between 1-5" 
    elif var_in == "0": #works 
     print "Zero" 
    else: 
     print "Greater than 5!" #works 

其中有与上述相同的结果。

任何援助将不胜感激。谢谢!

+0

为什么你测试两个'0 user2357112

+1

转换为整数。 – Jiminion

回答

1

var_in是一个字符串,而不是一个整数。你应该这样做:

try: 
    var_in = int(raw_input("> ")) 
except: 
    print "Incorrect input." 
else: 
    if 0 < var_in <= 5 : 
     print "between 1-5" 
    elif var_in == 0: #works 
     print "Zero" 
    else: 
     print "Greater than 5!" #works 
+0

我以前没有使用过'try'和'except'。我认为这意味着如果一个int没有输入,它会失败并返回错误? – NULLZ

+0

除了使用'except'外,我可以推荐'除了ValueError'吗?最好的做法是只捕捉你所期望的例外情况。 – SethMMorton

+0

@ D3C4FF如果你的字符串不能转换为int,Python会产生一个'ValueError'。 'try:except:'块可用于捕获此错误并提供备用执行路径。 – SethMMorton

1

raw_input返回一个字符串。你不能将字符串与数字进行有意义的比较; Python 2会给你一个毫无意义的结果,而Python 3将会为TypeError。把它变成一个int你做比较之前:

user_input = int(raw_input('> ')) 
+0

完美,它修复了它的感谢。如何=='0'仍然工作? – NULLZ

+1

@ D3C4FF:“0”是一个字符串。按照您的预期,比较字符串是否与其他字符串相同。 – user2357112