2024年10月29日 星期二

不考慮運算符優先順序

 不考慮運算符的優先順序,而是簡單地從左到右計算,無論是加、減、乘或除,那麼程式碼可以進一步簡化。我們只需要將數字和運算符按順序排列,然後從左到右依次進行計算。

以下是簡化後的程式碼:

# 輸入數學表達式,例如:"1 + 2 * 3"
expression = input("輸入數學表達式,例如 '1 + 2 * 3': ")

# 步驟 1:把數字和符號分開
tokens = []
for i in expression.split():
    if i.isdigit():           # 如果 i 是數字
        tokens.append(int(i))  # 把數字轉為 int 並加入 tokens
    else:
        tokens.append(i)       # 把符號直接加到 tokens

# 步驟 2:從左到右依次計算
result = tokens[0]  # 初始值為第一個數字
i = 1               # 從第二個項目開始處理

while i < len(tokens):
    operator = tokens[i]       # 取得運算符
    next_number = tokens[i + 1] # 取得下一個數字

    # 根據運算符進行對應的計算
    if operator == '+':
        result += next_number
    elif operator == '-':
        result -= next_number
    elif operator == '*':
        result *= next_number
    elif operator == '/':
        result /= next_number

    i += 2  # 移動到下一組運算符和數字

# 結果
print("結果:", result)

說明

  1. 解析輸入:把表達式中的數字和運算符分開存入 tokens 列表中。數字轉為 int 型別,運算符則保留為字串。

  2. 從左到右依次計算

    • 取 tokens 中的第一個數字作為初始結果 result
    • 從第二個元素開始,依次讀取運算符和數字對。
    • 根據運算符進行相應的計算(加、減、乘、除),並將計算結果更新到 result
    • 重複以上步驟,直到處理完整個 tokens 列表。
  3. 輸出結果:最終的 result 即為計算結果。

範例執行

輸入:

1 + 2 * 3

執行過程:

  • tokens 會被解析為 [1, '+', 2, '*', 3]
  • 從左到右計算:
    1. 1 + 2 = 3
    2. 3 * 3 = 9

輸出:

結果: 9

沒有留言:

張貼留言