Python等级考试(1~6级)全部真题・点这里
一、单选题(共25题,共50分)
第1题
有如下程序段:
with open('mistakes.txt', 'w') as f:words =['believe','memorize']f.write('\n'.join(words))
执行该代码后,文件mistakes.txt中的内容是?()
A: 一行内容为“believe memorize”
B: 一行内容为“believe\n memorize”
C: 第一行内容为“believe”,第二行内容为“memorize”
D: 第一行内容为“believe memorize”,第二行内容为“believe memorize”
答案:C
f.write()是将字符串写入文本文档,遇到’\n’需要换行。
第2题
小红收集了《小王子》中一段文字,存储在“LittlePrince.txt”中,现要读取整段文字内容,返回字符串。程序代码如下:
f = open("LittlePrince.txt", "r")
articles = _________
f.close()
画线处应填写的语句是?()
A: f.read()
B: f.readline()
C: f.readlines()
D: f.write()
答案:A
f.read()返回字符串,f.readline()返回一行字符串,f.readlines()返回列表。答案选A。
第3题
下列关于数据的说法,正确的是?()
A: 一维数据只能是有序
B: 二维数据由多个一维数据构成
C: 二维数据只能由二维列表表达
D: 一维数据只能一维列表表示
答案:B
一维数据由对等关系的有序或者无序数据构成,一维数据可由列表表示,也可用集合表示,二维数据由多个一维数据构成,二维数据可由二维列表表达,也可由表格或csv格式的文件表达。
第4题
“人口性别年龄结构数据.csv”文件存放了若干年的人口数据,内容如图所示。
小李想要读取每年性别为男的数据,他编写了如下代码:
import csv
with open('人口性别年龄结构数据.csv', 'r') as f:reader = csv.reader(f)for i in reader:print(________)
画线处语句正确的是?()
A: i
B: i[0]
C: i[1]
D: i[2]
答案:C
第5题
下列关于csv 库中有4个常用的对象的说法,正确的是?()
A: csv.reader表示以字典的形式写入数据
B: csv.writer表示以列表的形式返回读取的数据
C: csv.DictReader表示以列表的形式返回读取的数据
D: csv.DictWriter表示以字典的形式写入数据
答案:D
csv.reader以列表的形式返回读取的数据,csv.writer以列表的形式写入数据,csv.DictReader以字典的形式返回读取的数据,csv.DictWriter以字典的形式写入数据。
第6题
numpy中,下列能产生[1 2 3]的是?()
A: np.array([1, 2, 3, 4])
B: np.array(range(1, 3))
C: np.arange(1, 4)
D: np.arange(1, 5, 2)
答案:C
A选项的结果为[1 2 3 4],B选项的结果为[1 2],C选项的结果为[1 2 3],D选项的结果为[1 3]。
第7题
小李编写程序,制作某道选择题的选择比例图,程序如下,生成的比例图是?()
import matplotlib.pyplot as plt
plt.rcParams["font.sans-serif"] = "SimHei"
opt = [204, 509, 159, 213]
plt.pie(opt, labels=['A', 'B', 'C', 'D'], autopct='%1.2f%%')
plt.title("各选项的选答比例")
plt.show()
A:
B:
C:
D:
答案:D
根据labels=[‘A’, ‘B’, ‘C’, ‘D’]用于显选项标签,autopct='%1.2f%%'用于显示数值格式,plt.title(“各选项的选答比例”)用于显示标题。
第8题
有如下程序代码:
class Person(): # ①def __init__(self, name, age): # ②self.name = name # ③self.age = age
xm = Person("小红", "10") # ④
下列说法正确的是?()
A: ①处Person为类名
B: ②处的self可以省略
C: ③处self.name为方法
D: ④处可以不加参数
答案:A
②处的self不可以省略,③处self.name为属性,④处参数个数为2
第9题
有如下程序段:
class Person():def __init__(self, name, age): self.name = name self.age = agedef fun(self):print(self.name,end = ",")print(self.age)
xm = Person("10", "小红")
xm.fun()
执行代码后,输出的结果是?()
A: 10 小红
B: 小红 10
C: 10,小红
D: 小红,10
答案:C
按参数顺序传参,Person(“10”, “小红”)先打印10,再打印小红,根据 print(self.name,end = “,”)可知中间用逗号分隔。
第10题
有下列语句命令:
import sqlite3
conn = sqlite3.connect("db/test.db")
cur = conn.cursor( )
cur.execute("SELECT * FROM students")
data = cur.fetchall()
cur.close()
conn.close()
可知当前的数据表名是?()
A: db
B: test.db
C: students
D: data
答案:C
db为存放数据库文件的文件夹名,cur是游标,test.db是数据文件名,data是存放数据记录的变量。
第11题
有如下程序段:
import sqlite3
conn= sqlite3.connect('test.db')
cur = conn.cursor()
sql = 'SELECT name,grade FROM Grades WHERE grade > 60'
rs = cur.execute(sql)
for x in rs:print(x)
cur.close()
conn.close()
程序实现的功能是?()
A: 查询成绩大于60分的人的名字
B: 查询成绩小于60分的人的名字和成绩
C: 查询并输出成绩小于60分的人的名字和成绩
D: 查询并输出成绩大于60分的人的名字和成绩
答案:D
sql用于查询成绩大于60分的包含名字和成绩两个字段的记录,再遍历记录并打印,因此程序功能是查询并输出成绩大于60分的人的名字和成绩。
第12题
小明想做一个接弹球游戏,他在窗体上用标签的方式显示文字,代码如下:
import tkinter
from tkinter import *
win = Tk()
txt= ______(win,text="接弹球游戏")
txt.pack()
cv = Canvas(win, width = 640, height = 480)
cv.pack()
下划线处应填入的代码是?()
A: Label
B: Button
C: Text
D: ListBox
答案:A
Button 是按钮,Text 是文本框,ListBox 是列表框。
第13题
有如下程序:
import tkinter as tk
window = tk.Tk()
window.geometry('300x150')
window.title('my first window')
var = tk.StringVar()
label = tk.Label(window, textvariable=var)
label.pack()
on_hit = False
def hit_me():global on_hitif on_hit == False:var.set('You hit me')on_hit = Trueelse:var.set('')on_hit = False
button = tk.Button(window, text='hit me', width=15, height=1, command=hit_me)
button.pack()
window.mainloop()
下列说法不正确的是?()
A: 程序运行时,窗体上有1个Label和1个Button
B: Button文字内容在’hit me’和’You hit me’间切换
C: hit_me函数是按钮事件
D: window.mainloop()省略不影响运行效果
答案:B
Label文字内容随着按钮的点击在空白和’You hit me’间切换。
第14题
在Python的类定义中,对函数变量的访问形式是?()
A: <对象>.<变量>
B: <对象>.方法
C: <类名>.<变量>
D: <类名>.方法
答案:A
第15题
对于用numpy.arange(1,6)函数创建的N维数组a, a*2的结果是?()
A: array([2,12])
B: array([2,4,6,8,10])
C: array([2,4,6,8,10,12])
D: array([2,10])
答案:B
numpy.arange(1.6)创建了一个从1到5的元素的数组,a*2表示把数组中的每个元素乘以2。
第16题
假设city.csv文件内容如下,那么下面代码的输出结果是?()
哈密瓜,香瓜,无籽西瓜,水晶葡萄
奶油富士,火龙果,百香果
f= open("city.csv", "r")
s = f.read().split(",")
f.close()
print(s)
A: [‘哈密瓜’,‘香瓜’,‘无籽西瓜’,‘水晶葡萄\n奶油富士’,‘火龙果’,‘百香果’]
B: [‘哈密瓜’,‘香瓜’,‘无籽西瓜’,‘水晶葡萄’,‘奶油富士’,‘火龙果’,‘百香果’]
C: [‘哈密瓜,香瓜,无籽西瓜,水晶葡萄,奶油富士,火龙果,百香果’]
D: [‘哈密瓜’,‘香瓜’,‘无籽西瓜’,‘水晶葡萄’,’\n’,‘奶油富士’,‘火龙果’,‘百香果’]
答案:A
在Python中,split()方法通过指定分隔符对字符串进行切片,返回分隔后的字符串列表。以splt(“,”)方法从CSV文件中获得内容时,无法去除换行符。水晶葡萄\n奶油富士作为一个列表元素出现, 所以本题选A选项。
第17题
执行以下语句后,文件txt的内容是?()
fo = open("txt",'w')
x= ["大学","道德经","易经"]
fo.write(' '.join(x))
fo.close()
A: 大学道德经易经
B: 大学 道德经 易经
C: '大学,‘道德经’,‘易经’
D:
‘大学’
’ ’
‘道德经’
’ ’
‘易经’
答案:B
本题考核的是文件的写入及join()方法。通过join()方法将写入的字符串变为"大学 道德经 易经",文件的内容也是如此。所以选B选项。
第18题
文件data.csv里的内容如下:
zhang,17,5
wang,10,2
li,19,3
执行以下代码
f = open('data.csv', 'r')
print(f.readlines())
f.close()
关于执行结果的描述,正确的选项是?()
A: 输出三行列表,每行列表里面有一个字符串元素
B: 输出一行字符串,里面包括三个字符串
C: 输出三行字符串
D: 输出一行列表,里面包括三个字符串元素
答案:D
打开文件并输出文件通过readlines()方法读取的数据,readlines()方法读取文件全部行内容,每行内容形成一个字符串,所有字符串组成一个列表。
第19题
高一(1)班期末4个学科成绩平均分与年级平均分对照图表。用Python程序实现时,①②两行程序代码是?()
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
df=pd.read_csv("高一(1)班成绩.csv",encoding="gbk")
x=np.array([1,2,3,4])
y=df["年级平均"]
y2=df["班级平均"]
①
②
plt.xticks(x+0.15,["Chinese","Math","English","Politlics"])
plt.show()
A:
①plt.plot(x,y,linewidth=“3”)
②plt.plot(x,y2,linewidth=”3")
B:
①plt.bar(x,y,width=0.3)
②plt.bar(x+0.3,y2,width=0.3)
C:
①plt.plot(x,y)
②plt.plot(x,y2)
D:
①plt.scatter(x,y)
②plt.scatter(x,y2)
答案:B
本题绘画的是柱形图,使用bar函数,故选择B。
第20题
执行下列程序,输出的结果是?()
class Money:name =""shoe =0satchel =0clothes =0def __init__(self,n,s1,s2,c):self.name = nself.shoe = s1self.satchel = s2self.clothes =cdef rmb_1(self):print("{}今天去购物,总共花了{}元。". format(self.name,self.shoe+self.satchel+ self.clothes))
r= Money('李斌',120,50,280)
r.rmb_1()
A: 李斌今天去购物,总共花了280元
B: 今天去购物,总共花了450元
C: 李斌今天去购物,总共花了450元
D: 今天去购物,总共花了280元
答案:C
输出的结果格式为:{}今天去购物,总共花了{}元。故排除BD,根据代码可知,花费为三者之和。
第21题
执行下列代码,说法错误的是?()
import sqlite3
DATABASE = 'student.db'
db = sqlite3.connect(DATABASE)
cur = db.cursor()
cur.execute("CREATE TABLE IF NOT EXISTS list(id INTEGER PRIMARY KEY autoincrement, name text)")
db.commit()
cur.execute("SELECT COUNT(*) FROM list")
if cur.fetchall()[0][0] == 0:cur.execute('INSERT INTO list(id,name) VALUES(1,"李明")')db.commit()
A: 去掉最后一行的db.commit(),对程序有影响
B: list数据表中有两个字段id和name
C: student. db文件中有一张名为list的数据表
D: list数据表中没有记录
答案:D
数据库中有插入1,李明的数据记录,故答案选D
第22题
下列关于sqlite数据库说法,不正确的是?()
A: sqlite是一个跨平台的数据库
B: sqlite是非关系型数据库
C: sqlite数据库可以进行基本的增删改查操作
D: Python可以通过加载sqlite模块来操作sqlite
答案:B
sqlite是一个开源的关系型数据库,具有零配置、自我包含、便于传输等优点。
第23题
执行下面代码,说法正确的是?()
import tkinter as tk
from tkinter import messagebox
root= tk.Tk()
root.title('演示窗口')
root.geometry("300x100+630+80")
btn1 = tk.Button(root)
btn1["text"]= "点击"
btn1.pack()
def call(event):messagebox.showinfo('窗口名称','点击成功')
btn1.bind('<Button-1>',call)
A: 窗口的名称为‘点击’
B: 窗口内的按钮无法点击
C: 按钮和call绑定
D: 窗口中有两个以上的按钮
答案:C
窗口的名称为演示窗口,窗口内按钮只有一个,按钮和call绑定在一起,当被点击时调用函数输出点击成功。
第24题
有如下Python代码,执行该代码,说法不正确的是?()
import tkinter as tk
window = tk.Tk()
window.title('ListBox')
window.geometry('300x350')
var1 = tk.StringVar()
label = tk.Label(window, bg='yellow', width=4, height=2, textvariable=var1)
label.pack()
def print_selection():value = listbox.get(listbox.curselection())var1.set(value)
button = tk.Button(window, text='print selection', command=print_selection)
button.pack()
var2 = tk.StringVar()
var2.set((11,22,33,44))
listbox = tk.Listbox(window,listvariable=var2)
listbox.pack()
listitems = [1,2,3,4]
for item in listitems:listbox.insert('end', item)
listbox.insert(1,'first')
listbox.insert(1,'second')
listbox.delete(1)
window.mainloop()
A: 当前窗口的名称为ListBox
B: 当前窗口有一个按钮,名字为print selection
C: 当前窗口列表框中有"second"数据项
D: 当前窗口列表框中共有9条数据项
答案:C
window.title(‘ListBox’)可知窗口的名称为ListBox,listbox = tk.Listbox(window,listvariable=var2),列表中有四条数据,通过for循环又加入四条数据,最后在1的位置插入first和second。最后删除最后一次1处所指向的值。
第25题
为统计班级同学假期的阅读情况,王老师通过某 APP 设置打卡任务,记录阅读打卡信息“姓名,打卡日期,阅读开始时间,结束时间”。逐行读取“data.csv”文件中的数据,根据阅读开始时间和结束时间,计算每位同学的阅读总时长代码如下:
file = open("data.csv") #打开文件
line = file.readline() #从文件中读取一行
stu = {} #存储每位同学的阅读总时长
while line:info = line.split(",") #将 line 以“,”为分隔符,分割成多个字符串组成的列表t = ① if info[0] in stu:stu[info[0]] += telse:②
line = file.readline()
file.close()
①②二处代码应该填?()
A: ① convert(info[3]) - convert(info[2]) ② stu[info[0]] = t
B: ① convert(info[4]) - convert(info[3]) ② stu[info[0]] = t
C: ① convert(info[3]) - convert(info[2]) ② stu[info[1]] = t
D: ① convert(info[4]) - convert(info[3]) ② stu[info[1]] = t
答案:A
读取csv文件数据,默认索引从0开始。t为阅读时长(阅读结束时间-开始时间),然后存入字典当中,如果有重名则进行累加,如果没有则直接计入时长。
二、判断题(共10题,共20分)
第26题
CSV文件是一种常见的用来存储一维或者二维的数据文件,实际上是一种txt文件,只能用记事本打开。
答案:B
CSV文件可以用记事本打开,也可用Excel和专用软件来打开。
第27题
利用matplotlib绘制图形时,语句plt.show()可以省略。
答案:B
必须使用语句plt.show()才能进行显示图形。
第28题
Python中可以通过对象名=类名()创建对象。
答案:A
第29题
语句“conn = sqlite3.connect(“test.db”)”的功能是若数据库文件"test.db"存在则打开;若数据库文件不存在,则新建一个名为"test.db"的数据库文件。
答案:A
connect()函数:用于创建和连接数据库。若指定的数据库文件存在,则打开;若数据库文件不存在,则新建一个数据库文件。
第30题
执行下列代码:
import numpy as np
x = [(1,2,3),(4,5,6),(8,9,0)]
a = np.asarray(x)
print (a)
输出的结果为((1, 2, 3) (4, 5, 6) (8, 9, 0))。
答案:B
Numpy模块的从已有数组创建新数组的方法,包括返回值为列表。
该代码返回的结果为:[[1, 2, 3]
[4, 5, 6]
[8, 9, 0]]
第31题
二进制文件也可以使用记事本或其他文本编辑器打开,一般来说无法正常查看其中的内容。
答案:A
二进制文件也可以使用记事本或其他文本编辑器打开,一般来说无法正常查看其中的内容。
第32题
在Python中可以实现可视化效果,绘制数学函数图像一般要用到的库是numpy和matplotlib。
答案:A
NumPy(Numerical Python)是Python语言的一个扩展程序库,支持大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库。Matplotlib 可以绘制折线图、散点图、等高线图、条形图、柱状图、3D 图形、甚至是图形动画等等。
第33题
类中的函数称为方法,方法__init__() 是一个特殊的方法,开头和末尾各有两个下划线,这种约定避免Python默认方法与普通方法发生名称冲突。
答案:A
方法__init__的目的是为了防止调用冲突。
第34题
使用grid()方法管理布局,可以使用grid(row=0,column=0)将Label标签放入第一行第一列。
答案:A
grid的方法中column为指定组件插入的列(0表示第一列),row为指定组件插入的行(0表示第一行)
第35题
执行语句“f=open(‘words.txt’,“r”)”,若文件夹中不存在“words.txt”文件,会报错。
答案:A
r模式,如果文件不存在则报错。
三、编程题(共3题,共30分)
第36题
马和骆驼都是哺乳动物,它们都有四只脚,体型也差不多大,我们将在这里为它们编写属于它们各自的类,输出相关语句。
例如:一匹阿拉伯12岁的公马,在草原上奔跑的速度为50km/h。
一匹双峰驼20岁的母骆驼,在沙漠上奔跑的速度为40kmh。
class Horse():def __init__(self, category, gender, age):self.category = categoryself.gender = genderself.age = ageself.speed = 0def get_descriptive(self):self.info = "一匹" + self.category + str(self.age) + "岁的" + self.gender + "马"def write_speed(self, new_speed):self.speed= new_speedaddr = "在草原上奔跑的速度为"print(self.info + "," + addr + str(self.speed) + "km/h。")
class Came1( ① ):def __init__(self, category, gender, age):super().__init__(category, gender, age)def write_speed(self,new_speed):② addr = "在沙漠上奔跑的速度为"print( ③ ("马","骆驼") + "," + addr + ④ + "km/h。")horse = Horse("阿拉伯","公",12)
horse.get_descriptive()
horse.write_speed(50)
came1 = Came1("双峰驼","母",20)
came1.get_descriptive()
came1. write_speed(40)
答案:
class Horse():def __init__(self, category, gender, age):self.category = categoryself.gender = genderself.age = ageself.speed = 0def get_descriptive(self):self.info = "一匹" + self.category + str(self.age) + "岁的" + self.gender + "马"def write_speed(self, new_speed):self.speed= new_speedaddr = "在草原上奔跑的速度为"print(self.info + "," + addr + str(self.speed) + "km/h。")
class Came1(Horse):def __init__(self, category, gender, age):super().__init__(category, gender, age)def write_speed(self,new_speed):self.speed= new_speedaddr = "在沙漠上奔跑的速度为"print(self.info.replace("马","骆驼") + "," + addr + str(self.speed) + "km/h。")horse = Horse("阿拉伯","公",12)
horse.get_descriptive()
horse.write_speed(50)
came1 = Came1("双峰驼","母",20)
came1.get_descriptive()
came1. write_speed(40)
评分标准:
(1)Horse;(2分)
(2)self.speed= new_speed;(2分)
(3)self.info.replace;(4分)
(4)str(self.speed)。(2分)
第37题
小李收集了交规扣分情况存储在文件“jgfs.txt”中,他编写了一个交规问答程序,程序实现根据用户输入的答案进行自动判断功能,每题1分,答对1题得1分,答错不得分,答完所有题目后显示个人得分及总得分。文件和程序运行界面如图所示,结合界面,请完成问答程序。
程序代码如下:
rule_dict = {}
with open("/data/jgfs.txt") as f:data = ① .strip()while data:rule , score = data.split()rule_dict[rule] = scoredata = f.readline().strip()
s = 0
for i in rule_dict.keys():num =input("题目:"+i + "扣几分?\n请输入答案:")if ② :print("回答正确")③ else:print("回答错误,正确答案是" + ④ )
print("你的成绩是:" + str(s) + "满分为:" + str( ⑤ ))
请在划线处填入正确的代码。
答案:
rule_dict = {}
with open("/data/jgfs.txt") as f:data = f.readline().strip()while data:rule , score = data.split()rule_dict[rule] = scoredata = f.readline().strip()
s = 0
for i in rule_dict.keys():num =input("题目:"+i + "扣几分?\n请输入答案:")if rule_dict[i] == num:print("回答正确")s += 1else:print("回答错误,正确答案是" + rule_dict [i])
print("你的成绩是:" + str(s) + "满分为:" + str(len(rule_dict)))
评分标准:
(1)f.readline();(2分)
(2)rule_dict[i] == num;(2分)
(3)s += 1;(2分)
(4)rule_dict[i];(2分)
(5)len(rule_dict)。(2分)
第38题
小强建立了一个简易的学生成绩管理信息系统,使用SQlite进行数据的插入、查询和删除操作,每位学生的记录存储在data.db文件的数据表STUDENT中,该表包含NAME,NUMBER和GRADE 3个字段。程序运行时,输出操作选择,用户输入1表示插入记录,输入姓名,学号和成绩后,记录将增加到数据库中。用户输入2表示查询记录,输出所有学生的姓名,用户输入姓名后可查询详细的姓名,学号和成绩。用户输入3,再输入要删除的学生的姓名,根据姓名对数据库中的记录进行删除。程序运行界面如图所示。
程序代码如下,请在划线处填入合适的代码。(本题无需运行通过,写入完整代码即可)
import sqlite3
while True:code = input("1代表插入,2代表查询, 3代表删除,4代表退出\n请输入操作代号:")if code == '1':# 执行插入操作,代码略if ① :print('所有学生姓名如下:')conn2 = sqlite3.connect('data.db')c2 = conn2.cursor()cursor = c2.execute("SELECT NAME from ② ")for row in cursor:print(row)conn2.close()select_name = input("请输入需要查询的姓名:")conn3 = sqlite3.connect('data.db')c3 = conn3.cursor()cursor = c3.execute("SELECT * from STUDENT WHERE NAME =? ", ③ )for row in cursor:print(* row)print('select successful!')conn3.close()if code == '3':delete_name = input("请输入需要删除的姓名:")conn4 = sqlite3.connect('data.db')c4 = conn4.cursor()cursor = c4.execute("DELETE from STUDENT WHERE NAME =?",(delete_name,))④ print('delete successful!')conn4.close()if code == '4':⑤
答案:
import sqlite3
while True:code = input("1代表插入,2代表查询, 3代表删除,4代表退出\n请输入操作代号:")if code == '1':# 执行插入操作,代码略if code == '2':print('所有学生姓名如下:')conn2 = sqlite3.connect('data.db')c2 = conn2.cursor()cursor = c2.execute("SELECT NAME from STUDENT")for row in cursor:print(row)conn2.close()select_name = input("请输入需要查询的姓名:")conn3 = sqlite3.connect('data.db')c3 = conn3.cursor()cursor = c3.execute("SELECT * from STUDENT WHERE NAME =? ",(select_name,))for row in cursor:print(* row)print('select successful!')conn3.close()if code == '3':delete_name = input("请输入需要删除的姓名:")conn4 = sqlite3.connect('data.db')c4 = conn4.cursor()cursor = c4.execute("DELETE from STUDENT WHERE NAME =?",(delete_name,))conn4.commit()print('delete successful!')conn4.close()if code == '4':break
评分标准:
(1)code == ‘2’;(2分)
(2)STUDENT;(2分)
(3)(select_name,);(2分)
(4)conn4.commit();(2分)
(5)break。(2分)