我从函数和" + 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
。有人能告诉我我做错了吗?
答案 0 :(得分:1)
您可以使用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
答案 1 :(得分:0)
问题来自尝试通过eval
int
和str
时只接受str
。在将arg1转换为str
之后,您可以通过组合arg1和arg2来解决此问题。
arg1 = 10
arg2 = '+1'
evalInput = str(arg1) + arg2
eval(evalInput)
>> 11
通过使用字符串格式化可以使这更清晰,但这应该给你一个大致的想法。