实验二 计算器设计
课程:《Python程序设计》
班级: 1813
姓名: 曾令杰
学号:20181316
实验教师:王志强
实验日期:2021年5月6日
必修/选修: 公选课
1.实验内容
编写一个功能尽可能强大的计算器
代码部分:
from tkinter import *
import math
def click(num):
global op
op = op + str(num)
iptext.set(op)
def evaluate():
global op
output = str(eval(op))
iptext.set(output)
def clearDisplay():
global op
op = ""
iptext.set(op)
def sc(a):
global op
op=int(op)
if a=='sin':
op=math.sin(op)
else:
op=math.cos(op)
iptext.set(op)
calc = Tk()
calc.title()
op=""
iptext=StringVar()
w = Entry(calc, font=('large,_font', 15, 'bold'), fg='red', bd=5,justify="center", insertwidth=4, textvariable=iptext).grid(
columnspan=10)
bt7 = Button(calc, font=('arial', 15, 'bold'), command=lambda: click(7), bg="lavender", text="7", bd=5, padx=15,
pady=10).grid(row=1, column=0)
bt8 = Button(calc, font=('arial', 15, 'bold'), command=lambda: click(8), bg="lavender", text="8", bd=5, padx=15,
pady=10).grid(row=1, column=1)
bt9 = Button(calc, font=('arial', 15, 'bold'), command=lambda: click(9), bg="lavender", text="9", bd=5, padx=15,
pady=10).grid(row=1, column=2)
add = Button(calc, font=('arial', 15, 'bold'), command=lambda: click('+'), bg="lavender", text="+", bd=5, padx=15,
pady=10).grid(row=1, column=3)
mod = Button(calc, font=('arial', 15, 'bold'), command=lambda: click('%'), bg="lavender", text="%", bd=5, padx=15,
pady=10).grid(row=1, column=4)
bt4 = Button(calc, font=('arial', 15, 'bold'), command=lambda: click(4), bg="lavender", text="4", bd=5, padx=15,
pady=10).grid(row=2, column=0)
bt5 = Button(calc, font=('arial', 15, 'bold'), command=lambda: click(5), bg="lavender", text="5", bd=5, padx=15,
pady=10).grid(row=2, column=1)
bt6 = Button(calc, font=('arial', 15, 'bold'), command=lambda: click(6), bg="lavender", text="6", bd=5, padx=15,
pady=10).grid(row=2, column=2)
sub = Button(calc, font=('arial', 15, 'bold'), command=lambda: click('-'), bg="lavender", text="-", bd=5, padx=15,
pady=10).grid(row=2, column=3)
factorial = Button(calc, font=('arial', 15, 'bold'), command=lambda: click('**'), bg="lavender", text="^", bd=5, padx=15,
pady=10).grid(row=2, column=4)
bt1 = Button(calc, font=('arial', 15, 'bold'), command=lambda: click(1), bg="lavender", text="1", bd=5, padx=15,
pady=10).grid(row=3, column=0)
bt2 = Button(calc, font=('arial', 15, 'bold'), command=lambda: click(2), bg="lavender", text="2", bd=5, padx=15,
pady=10).grid(row=3, column=1)
bt3 = Button(calc, font=('arial', 15, 'bold'), command=lambda: click(3), bg="lavender", text="3", bd=5, padx=15,
pady=10).grid(row=3, column=2)
mul = Button(calc, font=('arial', 15, 'bold'), command=lambda: click('*'), bg="lavender", text="*", bd=5, padx=15,
pady=10).grid(row=3, column=3)
sin = Button(calc, font=('arial', 15, 'bold'), command=lambda: sc('sin'), bg="lavender", text="sn", bd=5, padx=15,
pady=10).grid(row=3, column=4)
bt0 = Button(calc, font=('arial', 15, 'bold'), command=lambda: click(0), bg="lavender", text="0", bd=5, padx=15,
pady=10).grid(row=4, column=0)
btC = Button(calc, font=('arial', 15, 'bold'), command=clearDisplay, bg="lavender", text="C", bd=5, padx=15,
pady=10).grid(row=4, column=1)
eql = Button(calc, font=('arial', 15, 'bold'), command=evaluate, bg="lavender", text="=", bd=5, padx=15, pady=10).grid(
row=4, column=2)
div = Button(calc, font=('arial', 15, 'bold'), command=lambda: click('/'), bg="lavender", text="/", bd=5, padx=15,
pady=10).grid(row=4, column=3)
cos = Button(calc, font=('arial', 15, 'bold'), command=lambda: sc('cos'), bg="lavender", text="cs", bd=5, padx=15,
pady=10).grid(row=4, column=4)
calc.mainloop()
结果示例图:

代码参考了网上的,自己在网上代码的基础上增加了%,^ ,sin,cos的功能,下面是各个运算功能的截图:
1.加


2.减


3.乘


4.除


5.模


6.次方


7.sin
运算的为sin3

8.cos
运行的为cos3

2.实验困难
上述实现这个可视化模块一开始自己没有搞清楚是如何实现的,后来经过查找资料了解了tkinter库的用法,另外在实现sin和cos时候自己也是调用了math库。
3.实验感受
感觉越学不会的就越多!!!哈哈哈!!!
4.参考资料链接
https://www.jb51.net/article/133969.htm
浙公网安备 33010602011771号