目錄
一、代碼逐步分析(適合剛入門的朋友看)
1.定義了一個名為simple_calculator的函數,封裝了整個計算器的邏輯。
二、深入分析代碼塊,用更加官方的語詞來說(適合想要深入學習的朋友)
主循環結構
退出機制
輸入處理核心
解析操作數和運算符
計算邏輯
結果顯示
錯誤處理
程序入口
完整代碼:
一、代碼逐步分析(適合剛入門的朋友看)
1.定義了一個名為simple_calculator
的函數,封裝了整個計算器的邏輯。
def simple_calculator():
2.打印歡迎信息和說明:
print("簡易計算器")
print("支持運算: + (加), - (減), * (乘), / (除)")
print("輸入 'q' 退出程序\n")
在程序開始時顯示歡迎信息,告知用戶支持的操作以及如何退出。
3.主循環:
while True:
使用一個無限循環,直到用戶輸入'q'退出。
4.?獲取用戶輸入:
expression = input("請輸入算式 (例如: 5 + 3): ")
5. 退出檢查:
if expression.lower() == 'q':print("\n感謝使用簡易計算器!")break
如果用戶輸入'q'(不區分大小寫),則打印感謝信息并退出循環。
6.?異常處理:
try:# 嘗試執行代碼
except ValueError:# 處理數值轉換錯誤
except Exception as e:# 處理其他異常
使用try-except塊來捕獲并處理可能出現的錯誤。
7. 表達式處理:
parts = expression.split()
將用戶輸入的表達式按空格分割成列表。
8.?輸入格式驗證:
if len(parts) != 3:print("錯誤: 請輸入有效的算式格式 (例如: 5 + 3)\n")continue
確保用戶輸入由三部分組成(兩個操作數和一個操作符)。
9.?操作數和操作符解析:
num1 = float(parts[0])
operator = parts[1]
num2 = float(parts[2])
將字符串轉換為浮點數,以便進行數學運算。
10.?執行計算:
if operator == '+':result = num1 + num2
elif operator == '-':result = num1 - num2
elif operator == '*':result = num1 * num2
elif operator == '/':if num2 == 0:print("錯誤: 除數不能為零\n")continueresult = num1 / num2
else:print(f"錯誤: 不支持的運算符 '{operator}'\n")continue
根據操作符執行相應的計算。除法時檢查除數是否為零。
11.?顯示結果:
print(f"結果: {result:.2f}\n")
以保留兩位小數的格式打印結果。
12.?錯誤處理:
ValueError
:當無法將輸入轉換為浮點數時觸發。Exception
:捕獲其他所有異常(一般不會觸發,但為了安全)。
13.?程序入口:
if __name__ == "__main__":simple_calculator()
當腳本直接運行時,調用計算器函數。
二、深入分析代碼塊,用更加官方的語詞來說(適合想要深入學習的朋友)
# 簡易計算器代碼分析我將詳細分析這個簡易計算器Python代碼的結構、功能和設計思想:## 整體結構1. **函數封裝**:`simple_calculator()`函數封裝了整個計算器邏輯
2. **主程序入口**:`if __name__ == "__main__":`確保腳本直接運行時啟動計算器
3. **交互循環**:使用`while True:`實現持續交互
4. **錯誤處理**:使用try-except塊處理各種可能的錯誤
## 代碼逐部分解析### 1. 用戶界面和說明
```python
print("簡易計算器")
print("支持運算: + (加), - (減), * (乘), / (除)")
print("輸入 'q' 退出程序\n")
- 功能:顯示計算器名稱和支持的操作
- 設計考慮:
- 清晰告知用戶可用操作
- 提示退出方法(輸入'q')
- 使用空行(
\n
)改善可讀性
主循環結構
while True:expression = input("請輸入算式 (例如: 5 + 3): ")
- 功能:創建無限循環,持續接收用戶輸入
- 設計考慮:
- 使用
while True:
實現計算器的持續使用 - 提供清晰的輸入提示,包含示例格式
- 使用
退出機制
if expression.lower() == 'q':print("\n感謝使用簡易計算器!")break
- 功能:檢查用戶是否想退出
- 設計考慮:
- 使用
lower()
使命令不區分大小寫 - 提供友好的退出消息
break
語句跳出循環,結束程序
- 使用
輸入處理核心
try:# 分割表達式parts = expression.split()# 驗證輸入格式if len(parts) != 3:print("錯誤: 請輸入有效的算式格式 (例如: 5 + 3)\n")continue
- 功能:
- 分割用戶輸入的表達式
- 驗證輸入格式是否正確
- 設計考慮:
split()
默認使用空格分割,要求用戶按"數字 運算符 數字"格式輸入- 驗證表達式是否恰好分成三部分
- 提供明確的錯誤提示和示例
continue
跳過當前循環,等待下一次輸入
解析操作數和運算符
num1 = float(parts[0])
operator = parts[1]
num2 = float(parts[2])
- 功能:將字符串轉換為可計算的數據
- 設計考慮:
- 使用
float()
支持整數和小數運算 - 分別提取第一個操作數、運算符和第二個操作數
- 使用
計算邏輯
result = None
if operator == '+':result = num1 + num2
elif operator == '-':result = num1 - num2
elif operator == '*':result = num1 * num2
elif operator == '/':if num2 == 0:print("錯誤: 除數不能為零\n")continueresult = num1 / num2
else:print(f"錯誤: 不支持的運算符 '{operator}'\n")continue
- 功能:根據運算符執行相應計算
- 設計考慮:
- 支持四種基本運算:加、減、乘、除
- 特殊處理除數為零的情況
- 檢查不支持的運算符
- 使用
continue
在遇到錯誤時跳過當前循環 - 使用
result = None
作為初始值,便于后續檢查
結果顯示
print(f"結果: {result:.2f}\n")
- 功能:格式化輸出計算結果
- 設計考慮:
- 使用f-string格式化輸出
:.2f
保留兩位小數,避免浮點數精度問題- 添加空行(
\n
)改善輸出可讀性
錯誤處理
except ValueError:print("錯誤: 請輸入有效的數字\n")
except Exception as e:print(f"發生錯誤: {str(e)}\n")
- 功能:捕獲并處理可能的錯誤
- 設計考慮:
ValueError
:處理無法轉換為數字的輸入Exception
:捕獲其他所有異常- 提供友好的錯誤提示
- 使用
\n
保持輸出格式一致
程序入口
if __name__ == "__main__":simple_calculator()
- 功能:定義程序啟動點
- 設計考慮:
- Python標準做法,確保腳本直接運行時啟動計算器
- 避免在導入時自動執行
完整代碼:
def simple_calculator():print("簡易計算器")print("支持運算: + (加), - (減), * (乘), / (除)")print("輸入 'q' 退出程序\n")while True:# 獲取用戶輸入expression = input("請輸入算式 (例如: 5 + 3): ")# 退出檢查if expression.lower() == 'q':print("\n感謝使用簡易計算器!")breaktry:# 分割表達式parts = expression.split()# 驗證輸入格式if len(parts) != 3:print("錯誤: 請輸入有效的算式格式 (例如: 5 + 3)\n")continue# 解析操作數和運算符num1 = float(parts[0])operator = parts[1]num2 = float(parts[2])# 執行計算result = Noneif operator == '+':result = num1 + num2elif operator == '-':result = num1 - num2elif operator == '*':result = num1 * num2elif operator == '/':if num2 == 0:print("錯誤: 除數不能為零\n")continueresult = num1 / num2else:print(f"錯誤: 不支持的運算符 '{operator}'\n")continue# 顯示結果print(f"結果: {result:.2f}\n") # 保留兩位小數except ValueError:print("錯誤: 請輸入有效的數字\n")except Exception as e:print(f"發生錯誤: {str(e)}\n")# 啟動計算器
if __name__ == "__main__":simple_calculator()