我是python的初学者。在Think Python中解决练习时发现了这一点。在此代码中,eval_loop函数迭代地提示用户,获取结果输入并使用eval对其进行评估,并打印结果。 它应该一直持续到用户输入'done',然后返回它评估的最后一个表达式的值。我怀疑是:
Eval必须有一个字符串作为其参数,但是这个代码即使在我们输入非字符串如5 + 4时也能工作,它会打印9.因为我们没有将输入转换成字符串,请告诉我它是怎么回事产生错误?def eval_loop():
result=0
while True:
s = input('>>>')
if s == 'done':
break
result = eval(s)
print(result)
print(result)
eval_loop()
更新
好的,我现在得到它,函数输入返回一个字符串。但现在我又有一个疑问:
如果输入函数返回一个字符串,那么当我输入-hello时,为什么它会产生错误,而周围没有任何引号。它给出NameError:未定义名称'hello'。如果输入返回一个字符串也不应该将其转换为字符串吗?
有人请帮助我,这变得非常混乱。 :(
答案 0 :(得分:0)
eval()用于将字符串计算为python表达式
print eval("3 + 2")
#5
a = 9
print eval("a == 9")
#true
你也可以使用raw_input()而不是input()来读取字符串