106 lines
2.9 KiB
Python
106 lines
2.9 KiB
Python
|
|
#!/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()
|