0

私は電卓プログラムを作成していますが、ほぼ完成しています。私が直面している最後の問題は、2 番目のオペレーターを扱うことです。

プログラムは、最大 2 つの演算子 (ex.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

したがって、上記のように、1 つの演算子 (ex.2/3) で何かを解決するための機能があります。操作の順序をチェックしながら、2 番目のオペレーターを処理する方法を見つけるための助けが必要でした。では、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

You need to decide between:

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

and

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

Based on the precedence of op1 and op2


So:

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