在Python 3中,我编写了一个简单的命令来接受用户的整数输入:
x = int(input("Enter a number: "))
如果我跳过int()
部分并只使用x = input("Enter a number: ")
,我输入的数据类型是字符串,而不是整数。我明白了。
但是,如果我使用以下命令:
x = eval(input("Enter a number: "))
输入的数据类型为'int'。
为什么会这样?
答案 0 :(得分:6)
为什么会这样?
x = eval(input("Enter a number: "))
与x = eval('input("Enter a number: ")')
前者首先调用input(...)
,获取一个字符串,例如'5'
然后评估它,这就是为什么你以这种方式获得int
的原因:
>>> eval('5') # the str '5' is e.g. the value it gets after calling input(...)
5 # You get an int
虽然后者(更符合您的期望),但评估表达式'input("Enter a number: ")'
>>> x = eval('input("Enter a number: ")')
Enter a number: 5
>>> x
'5' # Here you get a str
答案 1 :(得分:0)
因为数字是Python中的有效表达式,并且它的计算结果为自身(并且其类型为int)。例如,如果输入带有不存在名称的垃圾字符串(例如,' abcdefgh'),将引发NameError异常(评估时引发异常)。