我正在尝试以下功能:
x = eval(input())
输入为 123,x 的类型也是int
,它工作正常:
In [22]: x=eval(input("enter:"))
enter:123
In [24]: print(type(x))
<class 'int'>
但是当输入为 abcd 时,它会抛出错误:
In [26]: x=eval(input("enter:"))
enter:abcd
---------------------------------------------------------------------------
NameError Traceback (most recent call last)
<ipython-input-26-fb0be0584c85> in <module>()
----> 1 x=eval(input("enter:"))
<string> in <module>()
NameError: name 'abcd' is not defined
另外,当我将代码更改为:
x=eval('input()')
它工作正常:
In [27]: x=eval('input("enter:")')
enter:abcd
In [28]: print(x)
abcd
但是当输入为 123 时,x 的类型为str
代替int
:
In [30]: x=eval('input("enter:")')
enter:123
In [31]: print(type(x))
<class 'str'>
eval
评估一段代码。input
从用户输入中获取字符串。所以:
eval(input())
评估用户输入的任何内容。如果用户输入123
,结果将是一个数字,如果他们输入"foo"
如果他们输入,它将是一个字符串?wrfs
,它会引发错误。
eval("input()")
评估字符串"input()"
,这会导致 Python 执行input
功能。这要求用户提供一个字符串(而不是其他),即 while123
将是字符串"123"
, ?wrfs
将是字符串"?wrfs"
, and "foo"
将是字符串'"foo"'
(!).
第三个版本可能会使差异变得明显:eval(eval("input()"))
完全相同eval(input())
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)