0

我正在创建一个计算器程序,我几乎完成了。我遇到的最后一个问题是处理第二个操作员。

该程序采用最多包含两个运算符的表达式(例如 2/3*4)。它将它分成 2,/,3,*,4 并使用许多不同的函数来求解表达式。现在我在下面展示的具体部分是解决第一个表达式的函数,(我已经解决了其余部分):

def firstOperationWithOneOperator(numEx1,numEx2,opEx1):

    if opEx1=="*":
        solution1=numEx1*numEx2
        print(solution1)
        return solution1
    elif opEx1=="/":
        solution1=numEx1/numEx2
        print(solution1)
        return solution1
    elif opEx1=="+":
        solution1=numEx1+numEx2
        print(solution1)
        return solution1
    elif opEx1=="-":
        solution1=numEx1-numEx2
        print(solution1)
        return solution1

所以我现在有一个工作功能,可以用一个运算符(例如 2/3)解决问题,如您在上面看到的。我需要一些帮助来了解如何在检查操作顺序的同时处理第二个操作员。那么如何解决2+3*5这样的表达式呢?如果有限制,我将继续更新我的 OP。如果有任何不清楚的地方,请询问,我将编辑 OP。

编辑:

def fowoo(nums1,fowoo(nums2,nums3,ops2),ops1):
    print(fOWOO(nums1, fOWOO(nums2, nums3, ops2), ops1))
4

1 回答 1

1
fOWOO = firstOperationWithOneOperator

您需要在以下之间做出决定:

fOWOO(num1, fOWOO(num2, num3, op2), op1)  # num1 `op1` (num2 `op2` num3)

fOWOO(fOWOO(num1, num2, op1), num3, op2)  # (num1 `op1` num2) `op2` num3

基于优先级op1op2


所以:

  • 2 / 3 + 4->fOWOO(fOWOO(2, 3, '/'), 4, '+')
  • 2 + 3 / 4->fOWOO(2, fOWOO(3, 4, '/'), '+')
于 2012-11-06T08:23:13.007 回答