【问题标题】:How can I perform arithmetic operation taking a integer and string as input如何以整数和字符串作为输入执行算术运算
【发布时间】:2018-05-08 15:42:51
【问题描述】:

我从函数中获取整数输入,并从用户那里获取诸如“+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。谁能告诉我哪里做错了?

【问题讨论】:

    标签: python python-2.7 input


    【解决方案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
    

    【讨论】:

      【解决方案2】:

      问题来自于尝试传递 evalintstr,而它只接受 str。在将 arg1 转换为 str 之后,您可以通过组合 arg1 和 arg2 来解决此问题。

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

      这可以通过使用字符串格式变得更简洁,但这应该会给你一个大致的概念。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2017-01-10
        • 2013-09-06
        • 2023-03-09
        • 2013-02-19
        • 1970-01-01
        • 2014-02-17
        • 1970-01-01
        相关资源
        最近更新 更多