我正在尝试制作一个脚本来询问数学方程,然后用户必须输入他们认为的答案,然后 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(使用前将#替换为@)