如何执行以整数和字符串作为输入的算术运算



我正在从函数和用户那里获取诸如"+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时传递evalintstr。您可以通过将 arg1 和 arg2 转换为str后组合 arg1 和 arg2 来解决此问题。

arg1 = 10
arg2 = '+1'
evalInput = str(arg1) + arg2
eval(evalInput)
>> 11

这可以通过使用字符串格式来使它更清晰,但这应该给你一个大致的想法。

最新更新