TypeError:locals必须是映射

时间:2015-04-10 17:18:44

标签: python math

在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

1 个答案:

答案 0 :(得分:1)

eval()有三个参数,后两个是可选的。第一个是要评估的表达式(作为str ing);后两者(如果存在)必须是将用于评估表达式的全局和本地名称空间的映射。有关详细信息,请参阅the documentation on eval()

作为Kevin,我不宽恕eval()的使用。您已经使用int()将字符串解析为整数;这是一个好的开始 - 考虑也只是添加或减去这些整数以获得真正的答案。