实验二 计算器设计

课程:《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

posted @ 2021-05-06 14:07  西瓦沙拉  阅读(98)  评论(0编辑  收藏  举报