在Python 3.4.3中我有这段代码。
operator = random.choice('-+')
numTheF = random.choice(numsUseF)
numTheS = random.choice(numsUseS)
print ('What is', int(numTheF), operator, int(numTheS))
ansReal = eval(int(numTheF), operator, int(numTheS))
ansUser = input ('?')
if ansUser == ansReal:
score += 1
question += 1
所有变量都已正确设置,但我无法通过ansReal
输出实际答案。
以下是错误消息。
Traceback (most recent call last):
File "C:\Users\Marko\Documents\Programming Princ\Task One.py", line 34, in <module>
ansReal = eval(int(numTheF), operator, int(numTheS))
TypeError: locals must be a mapping
答案 0 :(得分:1)
eval()
有三个参数,后两个是可选的。第一个是要评估的表达式(作为str
ing);后两者(如果存在)必须是将用于评估表达式的全局和本地名称空间的映射。有关详细信息,请参阅the documentation on eval()
。
作为Kevin,我不宽恕eval()
的使用。您已经使用int()
将字符串解析为整数;这是一个好的开始 - 考虑也只是添加或减去这些整数以获得真正的答案。