实验二 计算器设计 20192325郭权武

课程:《Python程序设计》
班级: 1923
姓名: 郭权武
学号:20192325
实验教师:王志强
实验日期:2021年5月7日
必修/选修: 公选课

1.实验内容

设计并完成一个完整的应用程序,完成加减乘除模等运算,功能多多益善。

考核基本语法、判定语句、循环语句、逻辑运算等知识点

2. 实验过程及结果

"""
作者:郭权武
文件名:计算器
时间:2021年5月7日
"""
import math

表达式运算

def test(date):
result = eval(date) #eval用于执行字符串表达式,返回值
return result

加法

def add(a, b):
return a + b

减法

def minus(a, b):
return a - b

乘法

def mul(a, b):
return a * b

除法

def div(a, b):
if b == 0:
print("Error")
else:
return a / b

求模

def mod(a, b):
return a % b

幂运算

def power(a, b):
return a ** b

while True:
print("计算器")
i = int(input("基本运算输1,表达式运算输2,高级功能输3,输0退出\n请输入:"))
if i == 1:
print("1:加法 2:减法 3:乘法 4:除法 5:求模 6:幂运算\n")
s = int(input("请输入运算方法:"))
n1 = float(input("请输入第一个数:"))
n2 = float(input("请输入第二个数:"))
print("结果为:")
if s == 1:
print(add(n1, n2))
if s == 2:
print(minus(n1, n2))
if s == 3:
print(mul(n1, n2))
if s == 4:
print(div(n1, n2))
if s == 5:
print(mod(n1, n2))
if s == 6:
print(power(n1, n2))
elif i == 2:
print("支持加减乘除和求模(%)与幂函数()\n示例:3+4-(3-2)2")
m = input("请输入表达式:")
print("结果为:", test(m))
elif i == 3:
print("1:对数函数 2:开方 3:向下取整 4:向上取整 5:弧度转换角度 6:角度转换弧度 7:正弦函数 8:余弦函数 9:正切函数 10:最大公约数")
s = int(input("请输入运算方法:"))
if s == 1:
print("对数运算")
n3 = float(input("请输入运算数:"))
n4 = float(input("请输入底数:"))
print("结果为:", math.log(n3, n4))
elif s == 10:
print("最大公约数")
n5 = float(input("请输入第一个运算数:"))
n6 = float(input("请输入第二个运算数:"))
print("结果为:", math.gcd(n5, n6))
elif 2 <= s <= 9:
n7 = float(input("请输入运算数(三角函数仅输入弧度制pi前的系数):"))
if s == 2:
print("开方运算\n结果为:", math.sqrt(n7))
if s == 3:
print("向下取整\n结果为:", math.trunc(n7))
if s == 4:
print("向上取整\n结果为:", math.ceil(n7))
if s == 5:
print("弧度转换角度\n结果为:", math.degrees(n7))
if s == 6:
print("角度转换弧度\n结果为:", math.radians(n7))
if s == 7:
print("正弦函数\n结果为:", math.sin(math.pin7))
if s == 8:
print("余弦函数\n结果为:", math.cos(math.pi
n7))
if s == 9:
print("正切函数\n结果为:", math.tan(math.pin7))
elif i == 0:
break
entry = ttk.Entry(win, justify="right", font=1)
entry.grid(row=0, column=0, columnspan=6, padx=20, pady=5)
b0 = ttk.Button(win, text='0', command=lambda: get(entry, '0'))
b0.grid(column=1, row=4)
b1 = ttk.Button(win, text='1', command=lambda: get(entry, '1'))
b1.grid(column=0, row=3)
b2 = ttk.Button(win, text='2', command=lambda: get(entry, '2'))
b2.grid(column=1, row=3)
b3 = ttk.Button(win, text='3', command=lambda: get(entry, '3'))
b3.grid(column=2, row=3)
b4 = ttk.Button(win, text='4', command=lambda: get(entry, '4'))
b4.grid(column=0, row=2)
b5 = ttk.Button(win, text='5', command=lambda: get(entry, '5'))
b5.grid(column=1, row=2)
b6 = ttk.Button(win, text='6', command=lambda: get(entry, '6'))
b6.grid(column=2, row=2)
b7 = ttk.Button(win, text='7', command=lambda: get(entry, '7'))
b7.grid(column=0, row=1)
b8 = ttk.Button(win, text='8', command=lambda: get(entry, '8'))
b8.grid(column=1, row=1)
b9 = ttk.Button(win, text='9', command=lambda: get(entry, '9'))
b9.grid(column=2, row=1)
bb0 = ttk.Button(win, text='.', command=lambda: get(entry, '.'))
bb0.grid(column=2, row=4)
bb1 = ttk.Button(win, text='+', command=lambda: get(entry, '+'))
bb1.grid(column=3, row=1)
bb2 = ttk.Button(win, text='-', command=lambda: get(entry, '-'))
bb2.grid(column=3, row=2)
bb3 = ttk.Button(win, text='
', command=lambda: get(entry, '*'))
bb3.grid(column=3, row=3)
bb4 = ttk.Button(win, text='/', command=lambda: get(entry, '/'))
bb4.grid(column=3, row=4)
bb5 = ttk.Button(win, text='->', command=lambda: back(entry))
bb5.grid(column=0, row=4)
bb6 = ttk.Button(win, text='x^n', command=lambda: get(entry, '**'))
bb6.grid(column=5, row=1)
bb7 = ttk.Button(win, text='mod', command=lambda: get(entry, '%'))
bb7.grid(column=5, row=2)
bb8 = ttk.Button(win, text='clear', command=lambda: clear(entry))
bb8.grid(column=5, row=3)
bb9 = ttk.Button(win, text='=', command=lambda: calculate(entry))
bb9.grid(column=5, row=4, )

win.mainloop()

实验二 计算器设计 20192325郭权武

实验二 计算器设计 20192325郭权武

实验二 计算器设计 20192325郭权武

3. 实验过程中遇到的问题和解决过程

加入新的,未使用过的正余弦函数时,对函数不理解,通过查阅资料了解了用法,并借助网上的源码,对高级功能进行了完善。

其他(感悟、思考等)

通过基本语法、判定语句、循环语句、逻辑运算等知识,可以完成简易计算器,在网上,很多大佬制作了有界面的计算器,需要继续学习python,学会更高的技巧。

参考资料

https://blog.csdn.net/cumudi0723/article/details/107803663

上一篇:【网络设计_RegNet】Designing Network Design Spaces


下一篇:python进度条Progressbar 实例