gpt4 book ai didi

python - Python 中 eval ("input()") 和 eval(input()) 的区别

转载 作者:太空狗 更新时间:2023-10-30 02:36:16 30 4
gpt4 key购买 nike

我正在尝试以下功能:

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 功能。这要求用户提供一个字符串(没有别的),而 123 将是字符串 "123"?wrfs 将是字符串 "?wrfs""foo" 将是字符串 '"foo"' (!)。

第三个版本可能会使差异变得明显:eval(eval("input()"))eval(input()) 完全相同。

关于python - Python 中 eval ("input()") 和 eval(input()) 的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55144515/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com