不考慮運算符的優先順序,而是簡單地從左到右計算,無論是加、減、乘或除,那麼程式碼可以進一步簡化。我們只需要將數字和運算符按順序排列,然後從左到右依次進行計算。
以下是簡化後的程式碼:
# 輸入數學表達式,例如:"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)
說明
解析輸入:把表達式中的數字和運算符分開存入
tokens
列表中。數字轉為int
型別,運算符則保留為字串。從左到右依次計算:
- 取
tokens
中的第一個數字作為初始結果result
。 - 從第二個元素開始,依次讀取運算符和數字對。
- 根據運算符進行相應的計算(加、減、乘、除),並將計算結果更新到
result
。 - 重複以上步驟,直到處理完整個
tokens
列表。
- 取
輸出結果:最終的
result
即為計算結果。
範例執行
輸入:
1 + 2 * 3
執行過程:
tokens
會被解析為[1, '+', 2, '*', 3]
- 從左到右計算:
1 + 2 = 3
3 * 3 = 9
輸出:
結果: 9
沒有留言:
張貼留言