feat: 新增 calculator.py 计算器程序
This commit is contained in:
106
calculator.py
Normal file
106
calculator.py
Normal file
@@ -0,0 +1,106 @@
|
||||
#!/usr/bin/env python3
|
||||
# -*- coding: utf-8 -*-
|
||||
"""
|
||||
十进制四则运算计算器
|
||||
支持加、减、乘、除基本运算
|
||||
提供交互式命令行界面
|
||||
"""
|
||||
|
||||
def add(a, b):
|
||||
"""加法"""
|
||||
return a + b
|
||||
|
||||
def subtract(a, b):
|
||||
"""减法"""
|
||||
return a - b
|
||||
|
||||
def multiply(a, b):
|
||||
"""乘法"""
|
||||
return a * b
|
||||
|
||||
def divide(a, b):
|
||||
"""除法,处理除零错误"""
|
||||
if b == 0:
|
||||
raise ValueError("除数不能为零")
|
||||
return a / b
|
||||
|
||||
def calculate(expression):
|
||||
"""
|
||||
解析并计算表达式
|
||||
表达式格式: 数字1 运算符 数字2,例如: 5 + 3
|
||||
支持运算符: +, -, *, /
|
||||
"""
|
||||
try:
|
||||
# 分割表达式
|
||||
parts = expression.strip().split()
|
||||
if len(parts) != 3:
|
||||
raise ValueError("表达式格式错误,请使用格式: 数字 运算符 数字 (例如: 5 + 3)")
|
||||
|
||||
# 解析操作数
|
||||
try:
|
||||
num1 = float(parts[0])
|
||||
num2 = float(parts[2])
|
||||
except ValueError:
|
||||
raise ValueError("操作数必须是数字")
|
||||
|
||||
# 解析运算符并执行计算
|
||||
operator = parts[1]
|
||||
if operator == '+':
|
||||
result = add(num1, num2)
|
||||
elif operator == '-':
|
||||
result = subtract(num1, num2)
|
||||
elif operator == '*':
|
||||
result = multiply(num1, num2)
|
||||
elif operator == '/':
|
||||
result = divide(num1, num2)
|
||||
else:
|
||||
raise ValueError(f"不支持的运算符: {operator},请使用 +, -, *, /")
|
||||
|
||||
return result
|
||||
except ValueError as e:
|
||||
raise e
|
||||
except Exception as e:
|
||||
raise RuntimeError(f"计算错误: {e}")
|
||||
|
||||
def main():
|
||||
"""主函数,交互式计算器"""
|
||||
print("=" * 50)
|
||||
print("十进制四则运算计算器")
|
||||
print("=" * 50)
|
||||
print("使用说明:")
|
||||
print(" 1. 输入表达式,格式: 数字 运算符 数字")
|
||||
print(" 2. 支持的运算符: + (加), - (减), * (乘), / (除)")
|
||||
print(" 3. 示例: 5 + 3, 10.5 * 2, 8 / 4")
|
||||
print(" 4. 输入 'exit' 或 'quit' 退出程序")
|
||||
print("=" * 50)
|
||||
|
||||
while True:
|
||||
try:
|
||||
# 获取用户输入
|
||||
user_input = input("\n请输入表达式: ").strip()
|
||||
|
||||
# 检查退出命令
|
||||
if user_input.lower() in ['exit', 'quit', 'q']:
|
||||
print("\n感谢使用计算器,再见!")
|
||||
break
|
||||
|
||||
# 跳过空输入
|
||||
if not user_input:
|
||||
continue
|
||||
|
||||
# 计算并显示结果
|
||||
result = calculate(user_input)
|
||||
print(f"结果: {result}")
|
||||
|
||||
except ValueError as e:
|
||||
print(f"输入错误: {e}")
|
||||
except RuntimeError as e:
|
||||
print(f"计算错误: {e}")
|
||||
except KeyboardInterrupt:
|
||||
print("\n\n检测到中断信号,退出程序...")
|
||||
break
|
||||
except Exception as e:
|
||||
print(f"未知错误: {e}")
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
Reference in New Issue
Block a user