【问题标题】:How to get a Computational string like ((2*3)+(3-1))+(4/2)) and return the answer in python?如何获得像 ((2*3)+(3-1))+(4/2)) 这样的计算字符串并在 python 中返回答案?
【发布时间】:2020-11-17 18:05:31
【问题描述】:

如何获取 ((2*3)+(3-1))+(4/2)) 这样的计算字符串并在 python 中返回答案?

我不能使用 eval 函数。 输入的短语应包括括号。 程序在计算时必须考虑优先级。

【问题讨论】:

标签: python python-3.x string list operators


【解决方案1】:

使用eval。像这样:ans = eval('((2*3)+(3-1))+(4/2))')

【讨论】:

  • 你应该在问题中提到这一点。
  • 您可以像exec('x =((2*3)+(3-1))+(4/2)) ') 一样使用exec 来“作弊”,然后访问变量x。如果这也不好,您需要为此创建自己的函数。
【解决方案2】:

为此,您必须使用eval() 函数。它将一个字符串变成一个python代码。一种应用它的方法是

def convert_to_code(some_string):
   
   return eval(some_string)


user_input = input()

result = convert_to_code(user_input)

print(result)

我发现在需要多次更改变量 x 的数学方程的情况下,使用返回 eval() 的专用函数更容易。例如,如果您知道数值方法,那么当您尝试创建一个计算多项式根的程序时,我是如何做到的将非常有用。但你可以自己使用eval()

【讨论】:

    【解决方案3】:

    使用e = input("Your question :")获取字符串。
    您可以使用e = eval(e) 计算字符串,也可以使用print(e) 显示它。

    完整代码:

    e = input("Your question :")
    e = eval(e)
    print(e)
    

    【讨论】:

    • @shaqayegh78 很抱歉,我帮不了你。你可以在exec函数上看到@user14654909的回复。一个例子:e = input("Your question:");f = exec("e="+e);print(e)
    猜你喜欢
    • 2021-07-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-16
    • 2012-07-30
    • 2021-04-04
    • 2015-09-04
    相关资源
    最近更新 更多