2026年3月青少年软件编程(Python)等级考试试卷(六级)

Python中SQLite数据类型的相关知识:

  1. NULL‌ - 这是SQLite中的特殊值,用来表示一个字段没有值。

  2. ‌INTEGER‌ - 用于存储整数值。尽管SQLite允许你在整数列中存储文本,但如果需要执行数值运算,最好确保数据是整数类型。

  3. ‌REAL‌ - 用于存储浮点数(即实数)。与INTEGER类似,尽管可以存储文本,但最好确保用于数值计算。

  4. ‌TEXT‌ - 用于存储文本字符串。可以是任何文本数据,包括字符串、二进制数据等。

  5. ‌BLOB‌ - 用于存储二进制对象。可以用来存储图片、音频或其他非文本数据。

解题:

这里我们的INT没有缩写,一定要INTEGER才可以

解题:

A:在 SQLite 中,SQL 语句不区分大小写。创建表格结构时,既可以使用大写字母,也可以使用小写字母,或者大小写混合。

B:在使用 SQLite 时,建立数据库连接和游标后,通常需要关闭游标和连接以释放资源。关闭游标和关闭连接的顺序是有要求的,应该先关闭游标,再关闭数据库连接。因为游标是依赖于数据库连接存在的,如果先关闭了数据库连接,游标就无法正常关闭,可能会导致资源泄漏或其他问题。

C:在 Python 中使用 sqlite3.connect() 建立数据库实例时,变量的命名方式遵循 Python 变量命名规则。变量名可以包含字母、数字和下划线,但不能以数字开头,且不能使用 Python 的关键字。

D:execute() 方法用于执行单条 SQL 语句,而 executemany() 方法用于批量执行相同结构的 SQL 语句,它接收一个 SQL 语句模板和一个参数序列,会将参数序列中的每个参数组合依次应用到 SQL 语句模板中执行,而不是用逗号分隔多条 SQL 语句。

代码解释:

复制代码
with open("t.txt","w") as t1: #以写的方式打开一个叫做t.txt的文件并且命名为t1

    t1.write("姓名:") #在t1里面写入姓名:

    t1.write("性别:") #在t1里面写入性别:

tips:

with open打开的文件会自己关闭不需要自己close

w是只写模式,会清空原文件

w+是可读可写,文件不存在则创建,存在则清空再写入

换行输出时要使用换行符\n

解题:

这里C选项没有进行换行处理所以实现不了上述的结果

复制代码
import sqlite3    # 导入sqlite3库
k = sqlite3.connect('题库.db')   # 连接数据库
a = k.cursor()                   # 创建游标
a.execute('SELECT rowid, 题目, 答案 FROM tiku ORDER BY rowid') # 执行查询语句,在查询tiku ORDER这个表的rowid, 题目, 答案这些字段,按照rowid进行升序排列
for row in ______:               # 填空处
    print(f"{row[1]}{row[2]}")    #f"..." 是 f-string(格式化字符串),{row[1]} 会被替换成题目的内容{row[2]} 会被替换成答案的内容

tips:

游标对象是a,这里的a.execute(...) 执行了查询,结果保存在游标对象 a

如何获取所有记录?游标对象有 .fetchall() 方法,返回所有记录的列表。

也可以循环直接迭代游标对象本身。

a.fetchmany()括号里面需填入size(具体数量)来指定数量,不能直接一次获取全部

k 是连接对象,不存在.fetchmany()和.fetchall()这些方法

tips:使用conn = sqlite3.connect('example.db')连接数据库时,如果example.db不存在,程序将新建数据库。

解题:

A:f.readline() 只读取第一行,输出第一行内容

B:f.readlines()[1] 返回第二行的内容(索引从 0 开始),而不是第一行

C:使用 open() 打开文件后,如果没有手动调用 close(),可能导致资源泄漏(除非程序立即结束或由垃圾回收关闭,但不安全)

D:with open(...) as f: 会自动在代码块结束后调用 close(),因此不需要手动 f.close()

7.

代码解析

复制代码
f=open('a.txt','w') #以写的方式打开a.txt文档

    f.write('测试写入') #写入内容

    f.flush() #强制将缓冲区中的数据立即写入磁盘文件

解题:

A:用open方式打开的文件没有使用f.close()是错误的

B:r这种形式打开文件是只读无法写入

C:这种方式打开的会自己关闭文件,完全正确

D:结束时没有f.close()所以也是不对的

解题:

未签到的同学学号记录在文件student.txt中,通过读取该文件即可查询未签到同学,已经签到的同学不用重新签到

代码解析

复制代码
import numpy as np               # 导入 numpy 库,简写为 np
arr = np.array([1, 2, 3, 4, 5])  # 创建一个包含 1,2,3,4,5 的一维数组
print(arr[::2].sum())            # 输出:从索引0开始,步长为2取元素,然后求和

解题:

arr[::2]切片操作选取第0、2、4个元素(1,3,5),求和结果为9

代码解析

复制代码
import matplotlib.pyplot as p 

import numpy as np

x= np.array([0,1,2,3,4,5])

p.        (x,'o:r')  

p.show() 

注:这里的(x,'o:r')

'o:r' 是绘图样式字符串:

  • 'o' 表示圆点标记

  • ':' 表示虚线

  • 'r' 表示红色

matplotlib.pyplot相关知识:

plot表示折线图/点线图

bar表示柱状图

scatter表示散点图

hist表示直方图

代码解析:

复制代码
arr = np.arange(6).reshape(2,3) 
#生成一个一维数组[0, 1, 2, 3, 4, 5],然后将一维数组转换为 2 行 3 列的二维数组
print(arr[:, ::-1])
 #这是二维数组的切片,格式为 [行切片, 列切片],: 表示所有行(行不变)::-1 表示列方向从右向左取,步长为 -1(即整行倒序)

解题一开始生成的是

0,1,2,3,4,5\]这个数组 然后重新塑性变成 \[\[0,1,2\], \[3,4,5\]

最后就是切片

arr[:, ::-1]这个可以理解为行不变,列变成倒序

得到的结果就是

  • 原始行:[0, 1, 2] → 倒序:[2, 1, 0]

  • 原始行:[3, 4, 5] → 倒序:[5, 4, 3]

最后得到

[[2 1 0]

[5 4 3]]

12.

代码解析

复制代码
import matplotlib.pyplot as plt

x=1;y1=2;y2=3 #定义三个标量数值

plt.figure(figsize=(8,4)) #创建一个宽 8 英寸、高 4 英寸的画布

plt.subplot(121) #121 表示:1 行、2 列、第 1 个子图,等同于 plt.subplot(1, 2, 1)

plt.plot(x, y1) #plot() 期望接收序列(如列表、数组)或多个点的坐标

plt.subplot(122) #1 行、2 列、第 2 个子图

plt.hist(y2) #hist() 期望接收一组数据(列表或数组),用于统计频率分布

plt.show() #显示图形                                                                                                                                                                                                                                                      

实际运行效果

  • 左子图:空白(只有一个点且没有标记)

  • 右子图:一个柱子,横坐标 3,纵坐标 1

结果如下

tips:

创建对象的语法是:类名(参数1, 参数2, ...),如 Car("Toyota", "Corolla", 2025),

必须用变量接收,即 car = Car(...)

代码解析

复制代码
class Animal: #定义一个Animal的类
    def sound(self): #定义sound方法
        return "叫声" #返回参数
class Dog(Animal): #定义一个Dog的子类(Animal的子类),继承了父类的所有属性和方法
    def sound(self): #定义sound方法
        return "汪汪"
a = Animal() #调用Animal类
d = Dog() #调用Dog类

解题

这里的考察是子类是否会继承父类的时出现相同方法的继承性

子类Dog重写了父类的sound()方法,调用d.sound()时会优先使用子类的版本,输出"汪汪"

解题:

需要使用 self.battery 才能访问实例属性,

赋值语句使用 = 而非 ==,

必须传入 percent 参数

A:错在定义方法时没有self

B:正确答案

C:没有用self.battery 才能访问实例属性

D:==是判断左右是否相等

解题:

首先在类里面定义方法需要在括号写入(self)这里我们发现A,B不满足

其次是调用类里面的属性,需要用self.属性名调用

综合上述,c是正确答案

在python中关于json的相关知识

|---------------------|------|---------------------|-----------------|
| 方法 | 操作对象 | 方向 | 用途 |
| json.dump(obj,file) | 文件 | Python → JSON(写入文件) | 保存数据到文件 |
| json.load(file) | 文件 | JSON → Python(读取文件) | 从文件加载数据 |
| json.dumps(obj) | 字符串 | Python → JSON 字符串 | 网络传输、存数据库文本字段 |
| json.loads(str) | 字符串 | JSON 字符串 → Python | 解析接收到的 JSON 字符串 |

总结:(记忆技巧)

出现s就是和字符串有关

dump是python变json

load是json变python

代码解析

复制代码
import csv #导入csv库
total_visitors = [] #创建空列表
with open('tourist_data.csv', 'r') as f: 
     reader = csv.reader(f) 
#创建csv读取器,reader 是一个可迭代对象,每次迭代返回一行数据(列表形式)
     for row in reader: #遍历每一行
         total = sum([int(num) for num in row[1:]]) #计算游客总数,从第二个元素开始按行累加
         total_visitors.append(total) # 将每行的总和添加到列表
 print(total_visitors) #输出结果

这里涉及到一个绝对路径和相对路径的表达

tips:

代码解析

复制代码
scores = [[80, 85, 90], [75, 80, 88], [92, 95, 98]]
average_scores = [] #创建空列表,用于存储每个学生的平均分
for i in range(len(scores)): #外层循环:遍历每个学生
        total = 0 #初始化总分
        for j in range(len(scores[i])): #内层循环:遍历该学生的每门成绩
                total += scores[i][j] #累加该学生的所有成绩
        avg = total / len(scores[i]) #计算平均值
        average_scores.append(avg) #存储结果到空列表中
print(average_scores) #输出结果

scores 是一个二维列表,包含三个子列表,每个子列表代表一个学生的成绩

average_scores 是一个空列表,用于存储每个学生的平均成绩。

外层循环 for i in range(len(scores)) 遍历每个学生(即 scores 的每个子列表)。

内层循环 for j in range(len(scores[i])) 遍历当前学生的所有成绩,并累加到 total。

计算平均成绩 avg = total / len(scores[i]),并将 avg 添加到 average_scores。

最后打印 average_scores。注意除是实除,需要保留小数

解题:

关于csv文件的相关知识

CSV 文件可存储一维和二维数据,A 错误;

CSV 文件每一行数据通常包含相同数量的元素,以保证数据结构的一致性,B 正确;

CSV 文件扩展名一般为.csv,随意修改可能导致相关程序无法正确识别,C 错误;

CSV 文件数据之间常用逗号分隔,但也可以指定其他分隔符,D 错误 。

关于tkinter的相关知识

pack 布局管理器会按照添加控件的顺序,默认从左到右、从上到下排列控件。

grid 布局是将控件放置在一个二维的网格中。

place 布局是通过指定控件的精确坐标来放置控件。

在tkinter不存在middle这种布局

解题:

A:在 tkinter 中,tk.Tk() 用于创建主窗口(即根窗口)。

  • B: tk.Window() 不存在于标准 tkinter 中。

  • C: tk.MainWindow() 也不存在,主窗口类就是 Tk

  • D: tk.Frame() 用于创建框架(容器),不是主窗口

解题:

place()方法用来指定组件的绝对位置;

grid()方法是按照行、列的方式摆放组件;

pack()方法既可实现水平排列,也可实现垂直排列。

geometry() 方法可以以字符串的形式设置窗口的宽度、高度和位置。

解题:

一维数据由对等关系的有序或者无序数据构成

mainloop()方法启动了事件循环,这是任何Tkinter应用程序的主要事件循环。

它保持应用程序活动并响应各种GUI事件,例如按钮点击和键盘按键。

复制代码
 参考程序:

class Box():
    def __init__(self,l,w,h):
        self.l=l
        self.w=w
        self.h=h
    def a4(self):
        return float((self.l*self.w*2+self.l*self.h*2+self.w*self.h*2)/600)
    def chang(self):
        return (self.l+self.w)*4+self.h*4
a,b,c=input('输入箱子的长宽高(cm):').split()
a=float(a)
b=float(b)
c=float(c)
d=Box(a,b,c)
print("共需要铁丝:%dcm,A4纸:%0.2f张。"%(d.chang(),d.a4()))
复制代码
 参考程序:

# 写入学生信息到文件
with open('students.txt', 'w') as f:         
    f.write("张三 20 85\n")
    f.write("李四 21 92\n")
    f.write("王五 19 78\n")

# 读取文件内容并打印
print("学生信息:")
with open('students.txt', 'r') as f:       
    students = f.readlines()                
    total_score = 0
    count = 0
    for student in students:
        print(student.strip())                
        _, _, score = student.split()
        total_score += int(score)
        count += 1

# 计算并打印平均成绩
average = total_score / count
print(f"学生的平均成绩为:{average:.2f}") 
复制代码
 import sqlite3
# 连接数据库
conn = sqlite3.connect('gym.db')
# 创建表
conn.execute('''CREATE TABLE IF NOT EXISTS member
(id TEXT PRIMARY KEY NOT NULL, 
 name TEXT NOT NULL, 
 days INTEGER);''')
# 插入一条数据
conn.execute("INSERT INTO member VALUES('M001', '小红', 25)")
# 查询剩余天数小于30天的会员
cur = conn.cursor()
cur.execute("SELECT * FROM member WHERE days < 30 ")
for row in cur.fetchall():
    print("会员", row[1], "剩余天数不足,请尽快续费!(剩余",row[2], "天)")
# 提交并关闭
conn.commit()
conn.close() 
相关推荐
许杰小刀2 小时前
使用 Python 将 Excel 数据批量导入到数据库中(SQLite)
数据库·python·excel
Python大数据分析@2 小时前
使用Python和亮数据采集器搭建专利查询GUI系统
开发语言·python
格林威2 小时前
Linux系统工业相机:Linux udev 规则绑定相机设备
linux·运维·开发语言·人工智能·数码相机·计算机视觉·工业相机
XMYX-02 小时前
04 - Go 的变量和常量:零值、类型推导与枚举
开发语言·golang
AAA_搬砖达人小郝2 小时前
Docker常用命令(2026最新)
开发语言·docker
架构师老Y2 小时前
005、数据库选型与ORM技术:SQLAlchemy深度解析
数据库·python
宝贝儿好2 小时前
【LLM】第一章:分词算法BPE、WordPiece、Unigram、分词工具jieba
人工智能·python·深度学习·神经网络·算法·语言模型·自然语言处理
清水白石0082 小时前
Python 在数据栈中的边界:何时高效原型、何时切换到 SQL、Spark、Rust 或数据库原生能力
数据库·python·自动化
青瓷程序设计2 小时前
基于深度学习的【猫类识别系统】~Python+深度学习+人工智能+算法模型+2026原创+计算机毕设
人工智能·python·深度学习