用Python写一个计算器,包括简单的加减乘除运算和复杂的开方等运算,并且能够将历史数据进行存储
时间: 2024-12-25 10:30:27 浏览: 2
你可以使用Python编写一个基本的命令行计算器,结合`math`库进行数学运算,同时利用`shelve`模块保存计算历史。下面是一个简单的示例:
```python
import math
import shelve
# 创建一个计算历史字典
history = shelve.open('calculator_history')
def add(x, y):
result = x + y
print(f"加法: {x} + {y} = {result}")
save_to_history('add', (x, y), result)
def subtract(x, y):
result = x - y
print(f"减法: {x} - {y} = {result}")
save_to_history('subtract', (x, y), result)
def multiply(x, y):
result = x * y
print(f"乘法: {x} * {y} = {result}")
save_to_history('multiply', (x, y), result)
def divide(x, y):
if y != 0:
result = x / y
print(f"除法: {x} / {y} = {result}")
save_to_history('divide', (x, y), result)
else:
print("错误:除数不能为零")
def sqrt(number):
if number >= 0:
result = math.sqrt(number)
print(f"平方根: √{number} = {result}")
save_to_history('sqrt', number, result)
else:
print("错误:负数没有实数平方根")
def save_to_history(operation, operands, result):
history[operation] = {'operands': operands, 'result': result}
history.sync()
if __name__ == '__main__':
while True:
user_input = input("请输入操作(如+、-、*、/、sqrt),或输入'history'查看历史记录,或输入'exit'退出:")
if user_input.lower() == 'exit':
break
elif user_input in ['+', '-', '*', '/']:
num1, num2 = map(float, input(f"{user_input}两个数字:").split())
eval(user_input)(num1, num2)
elif user_input.lower() == 'sqrt':
number = float(input("请输入一个非负数:"))
sqrt(number)
elif user_input.lower() == 'history':
print("\n历史记录:")
for operation, data in history.items():
print(f'{operation}: {data["operands"]} -> {data["result"]}')
else:
print("无效的操作,请重新输入。")
# 关闭历史文件
history.close()
```
当你运行这个程序时,它会提示用户输入相应的算式或命令,如加法、减法、乘法、除法、求平方根,以及查看历史记录。每次计算都会自动添加到历史记录中。
阅读全文