python中的数字输入识别

2024-01-31

我正在尝试制作一个脚本来询问数学方程,然后用户必须输入他们认为的答案,然后 python 会输出答案

然而,由于某种原因,python 不喜欢 raw_input() 与 eval 语句相关。

例如,代码是:

print "What's 5+4"
a = raw_input()
print eval('5+4')

如果我在 var 'a' 中输入 10,我会收到此错误消息。

Traceback (most recent call last):
File "/tmp/W1SVH/Math.py", line 3, in <module>
print eval('5 +4')
File "<string>", line 1, in <module>
TypeError: cannot concatenate 'str' and 'int' objects

但如果我将 raw_input 替换为数字“5”,脚本将如下所示。

print "What's 5+4"
a = 9
print eval('5+4')

那么它将返回 9,因此 5+4=9。

有没有办法解决这个问题,以便我可以使用 raw_input() 来提示用户?


返回的对象raw_input() is a string。您需要将其转换为integer在用它进行算术之前。您可以使用int内置功能。

print "What's 3+7"
a = int(raw_input())
print eval('a +4')

EDIT:

正如 ShadowRanger 观察到的,使用eval一次是多余的a是一个整数,所以你可以让Python计算结果:

print "What's 3+7"
a = int(raw_input())
print(a + 4)

这不仅更容易阅读,而且safer。使用eval从用户接收到的输入是危险的,应该避免。恶意用户可能输入一些内容,经过评估后可能会导致数据丢失或耗尽计算机资源。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

python中的数字输入识别 的相关文章

随机推荐