我正在从函数和用户那里获取诸如"+10"之类的操作的整数输入,并在计算后打印结果。到目前为止,我有这个
def Eval(arg1, arg2):
if (arg1 >= 100):
arg1 == 100
else:
arg1 = eval((arg1)(arg2))
print arg1
Eval(10,'+10')
但我有TypeError: 'int' object is not callable error
.有人可以告诉我我哪里做错了?
您可以使用ast.literal_eval
.出于安全考虑,建议不要eval
这样做。
from ast import literal_eval
def Eval(arg1, arg2):
if (arg1 >= 100):
arg1 == 100
return literal_eval(str(arg1)+arg2)
x = raw_input('Append string to variable for calculation:n') # '+10'
res = Eval(10, x)
print res # 20
问题来自尝试在仅接受str
时传递eval
int
和str
。您可以通过将 arg1 和 arg2 转换为str
后组合 arg1 和 arg2 来解决此问题。
arg1 = 10
arg2 = '+1'
evalInput = str(arg1) + arg2
eval(evalInput)
>> 11
这可以通过使用字符串格式来使它更清晰,但这应该给你一个大致的想法。