在Python语言中eva("input()")和val(input())之间的区别 [英] Difference between eval("input()") and eval(input()) in Python

查看:14
本文介绍了在Python语言中eva("input()")和val(input())之间的区别的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试以下函数:

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语言中eva(&quot;input()&quot;)和val(input())之间的区别的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆