内容正文:
编写说明:安徽省普通高校对口招生专业理论和技能测试考试电子与信息大类《计算机编程基础—Python 语言考点双析卷》,依据《安徽省普通高校对口招生专业理论和技能测试考试纲要》编写。“考点双析卷”即围绕一个考点,一份是老师的讲解卷一份是学生的练习卷。助力师生构建 “讲练结合” 的学习闭环,适用于高考复习教学。
本专辑第47、第48卷精准对标安徽省考纲,知识模块(四)面向对象程序设计基础:
1. 基本概念
2. Tkinter库
3. 面向对象程序设计
安徽省分类招生和对口招生考试 电子与信息大类
《计算机编程基础—Python 语言》考点双析卷 第47卷
面向对象程序设计(4) 老师讲解卷
时间:45分钟 总分:100分
班级_______ 姓名_______ 学号_______ 成绩_______
一、单项选择题(本大题共10小题,每题3分,共30分)
1.以下关于Python中类属性的描述,正确的是( )
A.类属性只能通过类来访问 B.类属性只能通过实例来访问
C.类属性和实例属性不能共存 D.类属性可以被实例继承
2.在Python中,如何访问一个对象的属性( )
A.对象名.属性名 B.对象名[属性名]
C.对象名('属性名') D.getattr(对象名, 属性名)
3.以下关于Python中多态的描述,正确的是( )
A.多态允许不同类的对象对同一消息作出响应 B.多态只能在一个类中实现
C.多态只能在继承关系中实现 D.多态不允许使用继承
4.在Python中,如何定义一个方法( )
A.在类中使用`def`关键字 B.在类中使用`class`关键字
C.在类中使用`static`关键字 D.在类中使用`function`关键字
5.在Python中,以下代码的输出结果是( )
class MyClass:
def __init__(self, value):
self.value = value
def __add__(self, other):
return self.value + other.value
a = MyClass(5)
b = MyClass(3)
print(a + b)
A.8
B.5
C.3
D.报错,因为类中没有定义__add__方法
6.以下关于Python类的构造方法和析构方法的说法正确的是( )
A.构造方法__init__()在创建对象时被自动调用,用于初始化对象的属性
B.析构方法__del__()需要在程序中显式调用,用于释放对象资源
C.构造方法和析构方法都可以被重载多次
D.构造方法的参数列表中,self参数是可选的
7.tkinter 布局中,被称为网格布局的是( )
A.grid B.place C.pack D.以上都不是
8.以下关于Python中继承的描述,正确的是( )
A.子类可以覆盖父类的方法 B.子类不能覆盖父类的方法
C.子类可以访问父类的私有成员 D.子类不能访问父类的私有成员
9.以下哪个选项描述了Python中私有属性的特点( )
A.私有属性以单下划线开头 B.私有属性以双下划线开头
C.私有属性不能在类外部访问 D.以上都正确
10.以下关于Python中构造函数的描述,正确的是( )
A.构造函数名必须与类名相同
B.构造函数名必须以双下划线开头和结尾
C.构造函数没有参数时,必须使用`__init__`这个名字
D.以上都正确
二、填空题(本大题共5小题,每题4分,共20分)
11.属性按所属的对象可以分为__________和__________。
12.如果想要获取用户在 wx.TextCtrl 中按下回车键时输入的文本,在事件处理函数中可以通过 event.GetString() 方法获得,这个事件类型是 ______。
13.可以被勾选或取消勾选,用于表示“是/否”、“开/关”状态的组件是 ______。
14.在 wx.ListCtrl (报告样式) 中,要修改某一行某一列的内容,应使用 ______ 方法。
15.根据文件中的“程序填空题”,当鼠标左键抬起时,要在当前位置创建一个按钮,wx.Button() 构造函数的第一个参数(父窗口)应该传入 ______。
三、综合应用题(本大题共5小题,每题10分,共50分)
16.下面是一个倒计时的程序:倒计时60秒,字体为微软雅黑、50号、加粗。字体颜色红色。
17.请解释 Python 中的类(Class)是什么?
18.使用 sqlite3、tkinter,实现建立表结构的功能。连接数据库文件“test.db”,在数据库文件'test.db”中创建“个人信息”数据表,此表的列名及对应的数据类型,在GUI界面中操作完成。初始化界面,如图1所示。运行效果,如图2所示。每次只设计一个列的列名及对应的数据类型,此列设计完成后,要单击“建立表列”按钮。当数据表中所有的列都设计完成后,再单击“提交生成”按钮。根据上述题意要求,编写程序,实现界面显示及功能。(注:界面中各元素的大小、颜色及位置,线条的粗细等不作硬性要求)
图1 图2
19.利用Listbox实现简单的搜索功能,当搜索条件为空时,搜索结果显示所有人,效果如图所示。
20.设计一个询问是否买手机的对话框。要求:设计一个Text控件(字体颜色为"红色",字体名称为"隶书",字体大小为14)。设计一个询问对话框(询问内容为"买一个手机?")。单击询问对话框的"是"按钮,Text控件中显示"好的,买一个手机!",单击"否"按钮,显示"不买手机!"。
试卷第6页,共6页
试卷第5页,共6页
学科网(北京)股份有限公司
$
编写说明:安徽省普通高校对口招生专业理论和技能测试考试电子与信息大类《计算机编程基础—Python 语言考点双析卷》,依据《安徽省普通高校对口招生专业理论和技能测试考试纲要》编写。“考点双析卷”即围绕一个考点,一份是老师的讲解卷一份是学生的练习卷。助力师生构建 “讲练结合” 的学习闭环,适用于高考复习教学。
本专辑第47、第48卷精准对标安徽省考纲,知识模块(四)面向对象程序设计基础:
1. 基本概念
2. Tkinter库
3. 面向对象程序设计
安徽省分类招生和对口招生考试 电子与信息大类
《计算机编程基础—Python 语言》考点双析卷 第47卷
面向对象程序设计(4) 老师讲解卷
时间:45分钟 总分:100分
班级_______ 姓名_______ 学号_______ 成绩_______
一、单项选择题(本大题共10小题,每题3分,共30分)
1.以下关于Python中类属性的描述,正确的是( )
A.类属性只能通过类来访问 B.类属性只能通过实例来访问
C.类属性和实例属性不能共存 D.类属性可以被实例继承
【答案】A
2.在Python中,如何访问一个对象的属性( )
A.对象名.属性名 B.对象名[属性名]
C.对象名('属性名') D.getattr(对象名, 属性名)
【答案】A
3.以下关于Python中多态的描述,正确的是( )
A.多态允许不同类的对象对同一消息作出响应 B.多态只能在一个类中实现
C.多态只能在继承关系中实现 D.多态不允许使用继承
【答案】A
4.在Python中,如何定义一个方法( )
A.在类中使用`def`关键字 B.在类中使用`class`关键字
C.在类中使用`static`关键字 D.在类中使用`function`关键字
【答案】A
5.在Python中,以下代码的输出结果是( )
class MyClass:
def __init__(self, value):
self.value = value
def __add__(self, other):
return self.value + other.value
a = MyClass(5)
b = MyClass(3)
print(a + b)
A.8
B.5
C.3
D.报错,因为类中没有定义__add__方法
【答案】A
【详解】a的值为5,b的值为3 因此a+b的值为8。
6.以下关于Python类的构造方法和析构方法的说法正确的是( )
A.构造方法__init__()在创建对象时被自动调用,用于初始化对象的属性
B.析构方法__del__()需要在程序中显式调用,用于释放对象资源
C.构造方法和析构方法都可以被重载多次
D.构造方法的参数列表中,self参数是可选的
【答案】A
【详解】析构方法__del__()需要在程序中隐式调用,构造方法只会被重载一次。构造方法的参数列表中,self参数是必须的。
7.tkinter 布局中,被称为网格布局的是( )
A.grid B.place C.pack D.以上都不是
【答案】A
【详解】Tkinter 中的 grid 布局被称为网格布局。
8.以下关于Python中继承的描述,正确的是( )
A.子类可以覆盖父类的方法 B.子类不能覆盖父类的方法
C.子类可以访问父类的私有成员 D.子类不能访问父类的私有成员
【答案】A
9.以下哪个选项描述了Python中私有属性的特点( )
A.私有属性以单下划线开头 B.私有属性以双下划线开头
C.私有属性不能在类外部访问 D.以上都正确
【答案】D
10.以下关于Python中构造函数的描述,正确的是( )
A.构造函数名必须与类名相同
B.构造函数名必须以双下划线开头和结尾
C.构造函数没有参数时,必须使用`__init__`这个名字
D.以上都正确
【答案】D
二、填空题(本大题共5小题,每题4分,共20分)
11.属性按所属的对象可以分为__________和__________。
【答案】 类属性 实例属性
12.如果想要获取用户在 wx.TextCtrl 中按下回车键时输入的文本,在事件处理函数中可以通过 event.GetString() 方法获得,这个事件类型是 ______。
【答案】wx.EVT_TEXT_ENTER
13.可以被勾选或取消勾选,用于表示“是/否”、“开/关”状态的组件是 ______。
【答案】wx.CheckBox
14.在 wx.ListCtrl (报告样式) 中,要修改某一行某一列的内容,应使用 ______ 方法。
【答案】SetItem()
15.根据文件中的“程序填空题”,当鼠标左键抬起时,要在当前位置创建一个按钮,wx.Button() 构造函数的第一个参数(父窗口)应该传入 ______。
【答案】self.panel
三、综合应用题(本大题共5小题,每题10分,共50分)
16.下面是一个倒计时的程序:倒计时60秒,字体为微软雅黑、50号、加粗。字体颜色红色。
【答案】from tkinter import *
root=Tk()
root.title("倒计时")
root.geometry("320x200")
lb=Label(root,font=("微软雅黑",50,"bold"),fg='red')
lb.pack()
flag=True
t=60
def ks():
global flag,t
if flag:
lb.config(text=t)
t -= 1
if t==-1:
return
root.after(1000,ks)
else:
flag=True
def zt():
global flag
flag=False
Button(root,text="开始",command=ks).pack(side="left",padx=50)
Button(root,text="暂停",command=zt).pack(side="left")
Button(root,text="退出",command=root.destroy).pack(side="left",padx=50)
root.mainloop()
17.请解释 Python 中的类(Class)是什么?
【答案】类是面向对象编程中的一个概念,它定义了一组具有相同特征和行为的对象。类是一个蓝图,它描述了对象的属性(也称为成员变量)和方法(也称为成员函数)。在 Python 中,类是通过使用类关键字 `class` 定义的。
18.使用 sqlite3、tkinter,实现建立表结构的功能。连接数据库文件“test.db”,在数据库文件'test.db”中创建“个人信息”数据表,此表的列名及对应的数据类型,在GUI界面中操作完成。初始化界面,如图1所示。运行效果,如图2所示。每次只设计一个列的列名及对应的数据类型,此列设计完成后,要单击“建立表列”按钮。当数据表中所有的列都设计完成后,再单击“提交生成”按钮。根据上述题意要求,编写程序,实现界面显示及功能。(注:界面中各元素的大小、颜色及位置,线条的粗细等不作硬性要求)
图1 图2
【答案】from tkinter import *
import sqlite3
root=Tk()
root.title('建立表结构')
root.geometry('300x200')
lst=[] # 添加字段
def bl():
dic={1:'integer',2:'float',3:'text'}
lst.append(e.get()+" "+dic[v.get()])
def tj():
conn = sqlite3.connect('test.db')
cur = conn.cursor()
cur.execute(f"create table 个人信息({','.join(lst)})")
conn.commit()
cur.close()
conn.close()
Label(root,text="数据表列的列名:").grid(row=0,column=0)
e=Entry(root)
e.grid(row=0,column=1,columnspan=3)
Label(root,text="表列的数据类型:").grid(row=1,column=0)
v=IntVar()
Radiobutton(root,text="整数",variable=v,value=1).grid(row=1,column=1)
Radiobutton(root,text="浮点",variable=v,value=2).grid(row=1,column=2)
Radiobutton(root,text="字符串",variable=v,value=3).grid(row=1,column=3)
Button(root,text="建立表列",command=bl).grid(row=2,column=0)
Button(root,text="提交生成",command=tj).grid(row=2,column=1)
root.mainloop()
19.利用Listbox实现简单的搜索功能,当搜索条件为空时,搜索结果显示所有人,效果如图所示。
【答案】from tkinter import *
root = Tk()
root.geometry("240x220")
root.title("搜索")
list=["小李", "老聂", "小红", "张三","李四","王五","小王"]
lsb=Listbox(root)
lsb.grid(row=0,column=1,columnspan=2)
def searchBoll():
lsb.delete(0,'end')
if entry.get()=='' or entry.get().isspace():
for i in list:
lsb.insert('end',i)
else:
for i in list:
if entry.get() in i:
lsb.insert('end',i)
lab=Label(root,text="名称")
lab.grid(row=1,column=0)
btn=Button(root,text="搜索",command=searchBoll)
btn.grid(row=1,column=3)
entry=Entry(root)
entry.grid(row=1,column=1)
root.mainloop()
20.设计一个询问是否买手机的对话框。要求:设计一个Text控件(字体颜色为"红色",字体名称为"隶书",字体大小为14)。设计一个询问对话框(询问内容为"买一个手机?")。单击询问对话框的"是"按钮,Text控件中显示"好的,买一个手机!",单击"否"按钮,显示"不买手机!"。
【答案】import tkinter.messagebox
import tkinter as tk
top=tk.Tk()
top.title("Python GUI")
top.geometry("240x250+10+10")
res=tkinter.messagebox.askquestion("对话框","买一个手机?")
txt=tk.Text(top,font=("隶书",14),fg='red')
txt.pack()
print(res)
if res=='yes':
txt.insert('0.0',"好的,买一个手机!")
else:
txt.insert('0.0',"不买手机!")
top.mainloop()
试卷第6页,共6页
试卷第5页,共6页
学科网(北京)股份有限公司
$