我必须计算一个表达式,但运算符存储在Python中的字符串中

时间:2018-10-04 23:49:33

标签: python python-3.x

下面是我的代码:

def interpret(value, commands, args):
    ans = 0
    valid = ['+','-','*']
    if set(commands).issubset(valid):
        for ope,arg in zip(commands,args):
            ans = eval(r'value ope arg')
            value = ans
        return print (ans)
    else :
        return print('-1')

def main():
    interpret(1, ['+'], [1])

if __name__ == '__main__':
    main()

尝试过eval(value+ope+arg),但出现错误

TypeError: unsupported operand type(s) for +: 'int' and 'str'

还寻找了其他解决方案,例如使用正则表达式然后对其进行评估,但无法评估该表达式

预期答案= 2

1 个答案:

答案 0 :(得分:0)

与其他一些语言不同,Python在使用+运算符连接字符串时不会自动将数字转换为字符串。您必须明确地进行此转换。

ans = eval(str(value)+ope+str(arg))

但是请注意,using eval is generally a bad idea