中国大学MOOCPython语言程序设计基础学习笔记和课后练习第8周(南京邮电大学)

前情提要

1.中国大学MOOCPython语言程序设计基础学习笔记和课后练习1-4周(南京邮电大学)

2.中国大学MOOCPython语言程序设计基础学习笔记和课后练习5-6周(南京邮电大学)

3.中国大学MOOCPython语言程序设计基础学习笔记和课后练习第7周(南京邮电大学)

第8周 面向对象程序设计

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
举例:

class Student:
    def __init__(self, name, num, sex):
        self.__name=name
        self.num=num
        self.sex=sex
    def introduce(self):
        print("姓名:", self.name, "学号:", self.num, "性别:", self.sex)
    def get_name(self):
        return self.__name
    def set_name(self, name):
        self.__name=name

stu1=Student("小张","A01","男生")
stu2=Student("小王","A02","女生")

print(stu1.get_name())
print(stu1.num)

在这里插入图片描述
在这里插入图片描述

举例,turtle类,类的继承

# -*- coding: gbk *-
import turtle as t
class Star:
    def __init__(self):
        self.size=200
    def draw(self):
        for i in range(5):
            t.forward(self.size)
            t.left(144)
class Big_Star(Star):
    def __init__(self):
        self.size=500
s=Star()
b=Big_Star()
s.draw()
b.draw()

GUI结合面向对象 使用tkinter库 编写整数计算器

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

# -*- coding: gbk *-
import tkinter as tk
win=tk.Tk()
win.title('整数计算机')
win.geometry('125x150')
win.resizable(False,False)
#默认保存文本框的内容于result变量中
result=tk.StringVar()

#创建文本框
ent=tk.Entry(win,textvariable=result)
ent.place(x=0,y=0,width=120,height=24)

#设置初值
result.set('0')

#设置16个按钮,文字放入列表中
txts=['1','2','3','+',
     '4','5','6','-',
     '7','8','9',"*",
     'C','0','=','/']
for i in range(16):
     strBtn=tk.StringVar()
     strBtn.set(txts[i])
     btn=tk.Button(win,textvariable=strBtn)
     btn.place(x=i%4*30,y=i//4*30+24,width=30)
tk.mainloop()

GUI结合面向对象 使用tkinter库 事件处理机制

在这里插入图片描述
代码

# -*- coding: gbk *-
import tkinter as tk
win=tk.Tk()
win.title('整数计算机')
win.geometry('125x150')
win.resizable(False,False)
#默认保存文本框的内容于result变量中
result=tk.StringVar()

#创建文本框
ent=tk.Entry(win,textvariable=result)
ent.place(x=0,y=0,width=120,height=24)

#设置初值
result.set('0')
#保存数字和功能,设初值
opt=0
ope=''
save=0
#事件处理机制函数,绑定变量
def calc(event):
     global opt
     global ope
     global save
     if  event.widget['text'] in ["0","1","2","3","4","5","6","7","8","9"]:
          opt=opt*10+int(event.widget['text'])
          result.set(str(opt))
     elif event.widget['text'] in ["+","-","*","/"]:
          save=opt
          ope=event.widget['text']
          opt=0
          result.set('0')
     elif event.widget['text'] =='C':
          opt=0
          result.set('0')
     elif event.widget['text'] =='=':
          if ope=='+':
               result.set(str(opt+save))
          elif ope=='-':
               result.set(str(save-opt))
          elif ope=='*':
               result.set(str(save*opt))
          elif ope=='/':
               result.set(str(save//opt))


#设置16个按钮,文字放入列表中
txts=['1','2','3','+',
     '4','5','6','-',
     '7','8','9',"*",
     'C','0','=','/']
for i in range(16):
     strBtn=tk.StringVar()
     strBtn.set(txts[i])
     btn=tk.Button(win,textvariable=strBtn)
     btn.place(x=i%4*30,y=i//4*30+24,width=30)
     btn.bind('<Button-1>',calc)
tk.mainloop()

单元测试

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


单元作业

1.请同学们为本周视频中的范例——简单整数计算器添加连续计算的功能。比如计算1+2+3的结果,或者10+23的结果,为了降低难度,其中不需要同学们考虑运算符的优先级,即算式10+23的结果显示为36而非16。

# -*- coding: gbk *-
#修改程序,使计算器具备连加功能
import tkinter as tk
win=tk.Tk()
win.title('整数计算器')
win.geometry('125x150')
win.resizable(False,False)
#默认保存文本框的内容于result变量中
result=tk.StringVar()

#创建文本框
ent=tk.Entry(win,textvariable=result)
ent.place(x=0,y=0,width=120,height=24)

#设置初值
result.set('0')
#保存数字和功能,设初值
opt=0
ope=''
save=0
#事件处理机制函数,绑定变量
def calc(event):
     global opt
     global ope
     global save
     if  event.widget['text'] in ["0","1","2","3","4","5","6","7","8","9"]:
         #opt变量中存放的是在文本框中显示的操作数
          opt=opt*10+int(event.widget['text'])
          result.set(str(opt))
     elif event.widget['text'] in ["+","-","*","/"]:
          #实现连续运算功能
          #如果ope里有内容,不为空字符串时候,用户不是第一次按按钮
          if ope!='':
               #根据保存在ope中的运算类型,对save和opt进行相应的运算
               if ope == '+':
                    save=opt + save
               elif ope == '-':
                    save=save - opt
               elif ope == '*':
                    save=save * opt
               elif ope == '/':
                    save=save // opt
          #否则为用户第一次按运算按钮的情形
          else:
               save=opt
          ope=event.widget['text']
          opt=0
          result.set('0')
     elif event.widget['text'] =='C':
          #增加连续运算功能后,必须清除上一层运算的ope变量
          ope=''
          opt=0
          result.set('0')
     elif event.widget['text'] =='=':
          if ope=='+':
               result.set(str(opt+save))
          elif ope=='-':
               result.set(str(save-opt))
          elif ope=='*':
               result.set(str(save*opt))
          elif ope=='/':
               result.set(str(save//opt))


#设置16个按钮,文字放入列表中
txts=['1','2','3','+',
     '4','5','6','-',
     '7','8','9',"*",
     'C','0','=','/']
for i in range(16):
     strBtn=tk.StringVar()
     strBtn.set(txts[i])
     btn=tk.Button(win,textvariable=strBtn)
     btn.place(x=i%4*30,y=i//4*30+24,width=30)
     btn.bind('<Button-1>',calc)
tk.mainloop()

实验周 图形用户界面

请编写Python程序完成以下要求:结合上周的范例程序——简单整数计算器,制作一个能够处理实数运算的计算器。

如果能力允许,同学们也可以模仿Windows计算器的功能,为自己设计开发的计算器加上一些实现数学函数的功能。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值