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() |