python if else只转到else部分

python if else只转到else部分,python,python-2.7,Python,Python 2.7,我有下面的简单代码,用于检查用户输入 while True: num = raw_input("Enter the number :") if (num >= 1 and num <= 5): break else: print "Error! Enter again :" 为True时: num=原始输入(“输入数字:”) 如果(num>=1且num您需要将其强制转换为int- num = int(raw_input("E

我有下面的简单代码,用于检查用户输入

while True:
    num = raw_input("Enter the number :")
    if (num >= 1 and num <= 5):
        break
    else:
        print "Error! Enter again :"
为True时:
num=原始输入(“输入数字:”)

如果(num>=1且num您需要将其强制转换为
int
-

 num = int(raw_input("Enter the number :"))

由于
raw\u input
读取行并将其转换为
string

num
是字符串,而不是数字。您需要首先使用
int()
raw\u input
的返回值转换为数字:

>>n=原始输入('Type stuff:')
打字:123
>>>类型(n)
>>>n
'123'
>>>int(n)
123
>>>类型(int(n))

可能是因为“num”实际上是一个字符串。您应该首先转换它。我认为尝试将字符串与数字进行比较是一个错误,但我编写Python已经有一段时间了。
num=int(原始输入(“输入数字”))
Fun python事实:您也可以编写
if 1,这称为链式比较表达式。出于好奇,为什么这不是一个错误?我想不出一个场景,其中比较字符串和数字是有意义的。@Carcigenicate您可以在这里找到有关此的更多详细信息:@Carcigenicate在python 3和ab中生成错误以上版本。你能解释一下
输入[2]-输出[2]
?因为如果用户提供
字符串作为输入,我也想拒绝它。@Marievi:
raw\u input()
总是返回字符串。由你来解释它们的意思。谢谢你的澄清!
>>> n = raw_input('Type stuff: ')
Type stuff: 123
>>> type(n)
<type 'str'>
>>> n
'123'
>>> int(n)
123
>>> type(int(n))
<type 'int'>