Files
hpme/calculator.py
2026-03-21 15:16:37 +08:00

106 lines
2.9 KiB
Python
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#!/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()