内容正文:
《程序设计基础-Python》高等教育出版社
第6单元 文件和数据
考试时间:90分钟 满分:100分
姓名 班级 学号
1、 单项选择题(本题共25小题,每题2分,共50分)
1. 在Python中,用于打开文件的内置函数是( )
A. open() B. file()
C. read() D. load()
【答案】:A
【解析】: Python使用open()函数打开文件,返回一个文件对象。
2. 下列打开模式中表示只读模式的是( )
A. w B. r
C. a D. x
【答案】:B
【解析】: r表示只读模式,w表示只写模式,a表示追加模式,x表示创建模式。
3. 执行代码后,文件指针的位置是( )
f = open("test.txt", "r")
f.read(10)
pos = f.tell()
A. 0 B. 5
C. 10 D. 没有任何输出
【答案】:C
【解析】: read(10)读取10个字符,文件指针移动到第10个字符位置。
4. 关于文件打开模式"w",下列说法正确的是( )
A. 只读模式 B. 只写模式,清空原文件
C. 追加模式 D. 读写模式
【答案】:B
【解析】: w模式是只写模式,打开文件时会清空原文件内容。
5. 下列方法中,用于关闭文件的是( )
A. close() B. end()
C. stop() D. finish()
【答案】:A
【解析】: close()方法用于关闭打开的文件对象。
6. 执行代码后,变量content的类型是( )
f = open("test.txt", "r")
content = f.readlines()
A. 字符串 B. 列表
C. 元组 D. 字典
【答案】:B
【解析】: readlines()返回一个列表,每个元素是文件的一行。
7. 想要将文件指针移动到文件开头,应使用的方法是( )
A. f.seek(0) B. f.tell(0)
C. f.move(0) D. f.start()
【答案】:A
【解析】: seek(0)将文件指针定位到文件开头位置。
8. 下列代码的输出结果是( )
f = open("test.txt", "w")
f.write("Hello")
f.close()
f = open("test.txt", "r")
print(f.read())
A. None B. 无输出
C. text.txt D. Hello
【答案】:D
【解析】: 先写入"Hello",关闭后再读取,输出Hello。
9. 关于追加模式"a",下列说法正确的是( )
A. 清空原文件 B. 只能读不能写
C. 在文件末尾添加内容 D. 文件不存在会报错
【答案】:C
【解析】: a模式是追加模式,在文件末尾添加内容,文件不存在会创建。
10. 在Python中,用于读取文件一行的方法是( )
A. read() B. readlines()
C. readline() D. line()
【答案】:C
【解析】: readline()读取文件的一行,read()读取全部内容,readlines()读取所有行到列表。
11. 执行代码后,文件test.txt的内容是( )
f = open("test.txt", "w")
f.write("Line1
")
f.write("Line2
")
f.close()
A. Line1Line2 B. Line1
Line2
C. W D. 两行内容
【答案】:D
【解析】: 写入两行内容,每行末尾有换行符。
12. 下列模块中,用于处理CSV文件的是( )
A. csv B. excel
C. file D. data
【答案】:A
【解析】: csv模块提供读取和写入CSV文件的功能。
13. 关于sqlite3模块,下列说法正确的是( )
A. 需要额外安装 B. 只能连接MySQL
C. Python内置模块 D. 不支持SQL语句
【答案】:C
【解析】: sqlite3是Python内置的数据库连接模块。
14. 执行代码后,变量r的类型是( )
import sqlite3
conn = sqlite3.connect("test.db")
cur = conn.cursor()
r = cur.execute("SELECT * FROM users")
A. 列表 B. 游标对象
C. 字典 D. 字符串
【答案】:B
【解析】: execute()执行SQL语句后返回游标对象。
15. 下列方法中,用于获取查询结果全部记录的是( )
A. fetchone() B. fetchmany()
C. fetchall() D. getall()
【答案】:C
【解析】: fetchall()获取查询结果的全部记录。
16. 关于CSV文件,下列说法正确的是( )
A. 只能用Excel打开 B. 逗号分隔值文件
C. 二进制文件 D. 不能存储文本
【答案】:B
【解析】: CSV是Comma-Separated Values,逗号分隔值文件。
17. 执行代码后,data的值是( )
import csv
f = open("test.csv", "r")
reader = csv.reader(f)
data = list(reader)
f.close()
A. 字符串 B. 字典
C. 列表的列表 D. 元组
【答案】:C
【解析】: csv.reader返回迭代器,转换为列表后是列表的列表。
18. 下列SQL语句中,用于创建数据表的是( )
A. CREATE TABLE B. INSERT INTO
C. SELECT D. UPDATE
【答案】:A
【解析】: CREATE TABLE用于创建数据表。
19. 关于数据库连接对象,关闭连接的方法是( )
A. close() B. end()
C. disconnect() D. stop()
【答案】:A
【解析】: 数据库连接对象使用close()方法关闭连接。
20. 执行代码后,需要调用的提交方法是( )
import sqlite3
conn = sqlite3.connect("test.db")
cur = conn.cursor()
cur.execute("INSERT INTO users VALUES(1, '小明')")
A. conn.submit() B. conn.save()
C. cur.commit() D. conn.commit()
【答案】:D
【解析】: 插入、删除、更新操作后需要调用commit()提交事务。
21. 关于文件编码,读取中文文件通常使用的编码是( )
A. ASCII B. GBK
C. UTF-8 D. ISO-8859-1
【答案】:C
【解析】: UTF-8是通用编码格式,支持中文等多语言字符。
22. 下列代码中,正确打开UTF-8编码文件的是( )
A. open("test.txt", "r")
B. open("test.txt", "r", encoding="utf-8")
C. open("test.txt", "utf-8")
D. open("test.txt", encoding="r")
【答案】:B
【解析】: 打开文件时指定encoding="utf-8"参数。
23. 关于writelines()方法,下列说法正确的是( )
A. 写入单个字符串 B. 自动添加换行符
C. 写入字符串列表 D. 只能写入数字
【答案】:C
【解析】: writelines()写入字符串列表,不自动添加换行符。
24. 执行代码后,result的值是( )
import sqlite3
conn = sqlite3.connect("test.db")
cur = conn.cursor()
cur.execute("SELECT COUNT(*) FROM users")
result = cur.fetchone()
A. 元组 B. 整数
C. 列表 D. 字典
【答案】:A
【解析】: fetchone()返回一个元组,包含查询结果的一行数据。
25. 关于数据库游标对象,下列说法正确的是( )
A. 用于连接数据库 B. 用于创建数据库
C. 用于关闭连接 D. 用于执行SQL语句
【答案】:D
【解析】: 游标对象用于执行SQL语句和获取查询结果。
二、判断题(共10题,每题1分,共10分)
1. Python中使用open()函数打开文件后,必须使用close()关闭文件。( )
【答案】:正确
【解析】: 打开文件后应及时关闭,释放资源。
2. 文件打开模式"r+"表示读写模式,文件必须存在。( )
【答案】:正确
【解析】: r+模式是读写模式,文件不存在会报错。
3. readlines()方法返回的是字符串类型。( )
【答案】:错误
【解析】: readlines()返回的是列表,每个元素是一行字符串。
4. seek()函数只能从文件开头移动指针。( )
【答案】:错误
【解析】: seek()可以从文件开头、当前位置或文件尾移动指针。
5. CSV文件只能用逗号作为分隔符。( )
【答案】:错误
【解析】: CSV文件可以用逗号、制表符等作为分隔符。
6. sqlite3是Python的第三方模块,需要单独安装。( )
【答案】:错误
【解析】: sqlite3是Python内置模块,无需单独安装。
7. 执行INSERT语句后,必须调用commit()提交事务。( )
【答案】:正确
【解析】: 插入、删除、更新操作后需要commit()提交。
8. fetchone()方法可以获取查询结果的多条记录。( )
【答案】:错误
【解析】: fetchone()只获取一条记录,fetchmany()获取多条。
9. 二进制文件打开时需要指定encoding参数。( )
【答案】:错误
【解析】: 二进制文件打开模式为"b",不能设置encoding参数。
10. 使用with语句打开文件可以自动关闭文件。( )
【答案】:正确
【解析】: with语句会在代码块执行完毕后自动关闭文件。
3、 名词解释题(共4题,每题3分,共12分)
1. 文件对象
【答案】: 文件对象是Python中使用open()函数打开文件后返回的对象,通过该对象可以对文件进行读写操作。文件对象包含文件名、打开模式、编码格式等属性,以及read()、write()、close()等方法。使用完毕后需要调用close()方法关闭文件对象,释放系统资源。
2. CSV文件
【答案】: CSV文件是Comma-Separated Values文件的缩写,是一种以文本形式存储表格数据的文件格式。CSV文件中每行是一条记录,字段之间用逗号分隔。Python的csv模块提供了读取和写入CSV文件的功能,常用于数据交换和存储。
3. 游标对象
【答案】: 游标对象是数据库操作中的重要对象,通过数据库连接对象的cursor()方法创建。游标用于执行SQL语句和获取查询结果,主要方法有execute()执行SQL语句、fetchone()获取一条记录、fetchmany()获取多条记录、fetchall()获取全部记录。使用完毕后需要关闭游标对象。
4. 事务提交
【答案】: 事务提交是数据库操作中的重要概念,指将数据库的修改操作永久保存到数据库中。在sqlite3中,执行INSERT、UPDATE、DELETE等修改操作后,必须调用连接对象的commit()方法提交事务,否则修改不会生效。事务提交保证了数据的一致性和完整性。
四、简答题(共4题,每题4分,共16分)
1. 请简述Python中文件打开的常用模式及其含义。(至少写4种)
【答案】:
(1)r:只读模式,文件必须存在,默认模式
(2)w:只写模式,文件不存在则创建,存在则清空
(3)a:追加模式,在文件末尾写入,文件不存在则创建
(4)x:创建模式,文件存在则报错
(5)+:与r/w/a/x组合使用,表示读写模式
(6)t:文本模式,默认模式
(7)b:二进制模式,用于图片、视频等文件
2. 请说明read()、readline()、readlines()三个方法的区别。**
【答案】:
(1)read():读取文件全部内容或指定数量字符,返回字符串
(2)readline():读取文件的一行内容,返回字符串
(3)readlines():读取文件所有行,返回列表,每行是列表的一个元素
(4)read()适合小文件,readline()适合逐行处理大文件
(5)readlines()一次性加载所有行到内存,适合中小文件
3. 请简述使用sqlite3操作数据库的基本步骤。
【答案】:
(1)导入sqlite3模块:import sqlite3
(2)连接数据库:conn = sqlite3.connect()
(3)创建游标对象:cur = conn.cursor()
(4)执行SQL语句:cur.execute()
(5)获取查询结果:cur.fetchone()/fetchmany()/fetchall()
(6)提交事务:conn.commit()(修改操作需要)
(7)关闭游标和连接:cur.close()、conn.close()
4. 请说明csv模块中reader和writer对象的主要用途。
【答案】:
(1)reader对象:用于读取CSV文件内容
(2)创建方法:reader = csv.reader()
(3)遍历reader对象可获取每行数据
(4)writer对象:用于向CSV文件写入数据
(5)创建方法:writer = csv.writer()
(6)writerow()写入单行,writerows()写入多行
(7)自动处理字段分隔和换行
五、编程题(本题共1小题,每题12分,共12分)
1.编写一个学生信息管理系统:实现下面的要求:定义函数create_table,创建SQLite数据库student.db,创建学生信息表students,表里包含学号、姓名、性别、成绩字段,并且为各字段设置合适的数据类型。(6分)
2. 定义函数insert_student,向students表中插入学生记录(6分)
【答案】:
import sqlite3
# 第1问:创建数据库和表
def create_table():
"""创建数据库和学生信息表"""
conn = sqlite3.connect("student.db")
cur = conn.cursor()
cur.execute("""
CREATE TABLE IF NOT EXISTS students(
学号 TEXT PRIMARY KEY,
姓名 TEXT,
性别 TEXT,
成绩 REAL
)
""")
conn.commit()
cur.close()
conn.close()
# 第2问:插入学生记录
def insert_student(sid, name, sex, score):
"""插入学生记录"""
conn = sqlite3.connect("student.db")
cur = conn.cursor()
cur.execute("INSERT INTO students VALUES(?, ?, ?, ?)",
(sid, name, sex, score))
conn.commit()
cur.close()
conn.close()
原创精品资源学科网独家享有版权,侵权必究!
学科网(北京)股份有限公司
学科网(北京)股份有限公司
$
《程序设计基础-Python》高等教育出版社
第6单元 文件和数据
考试时间:90分钟 满分:100分
姓名 班级 学号
1、 单项选择题(本题共25小题,每题2分,共50分)
1. 在Python中,用于打开文件的内置函数是( )
A. open() B. file()
C. read() D. load()
2. 下列打开模式中表示只读模式的是( )
A. w B. r
C. a D. x
3. 执行代码后,文件指针的位置是( )
f = open("test.txt", "r")
f.read(10)
pos = f.tell()
A. 0 B. 5
C. 10 D. 没有任何输出
4. 关于文件打开模式"w",下列说法正确的是( )
A. 只读模式 B. 只写模式,清空原文件
C. 追加模式 D. 读写模式
5. 下列方法中,用于关闭文件的是( )
A. close() B. end()
C. stop() D. finish()
6. 执行代码后,变量content的类型是( )
f = open("test.txt", "r")
content = f.readlines()
A. 字符串 B. 列表
C. 元组 D. 字典
7. 想要将文件指针移动到文件开头,应使用的方法是( )
A. f.seek(0) B. f.tell(0)
C. f.move(0) D. f.start()
8. 下列代码的输出结果是( )
f = open("test.txt", "w")
f.write("Hello")
f.close()
f = open("test.txt", "r")
print(f.read())
A. None B. 无输出
C. text.txt D. Hello
9. 关于追加模式"a",下列说法正确的是( )
A. 清空原文件 B. 只能读不能写
C. 在文件末尾添加内容 D. 文件不存在会报错
10. 在Python中,用于读取文件一行的方法是( )
A. read() B. readlines()
C. readline() D. line()
11. 执行代码后,文件test.txt的内容是( )
f = open("test.txt", "w")
f.write("Line1
")
f.write("Line2
")
f.close()
A. Line1Line2 B. Line1
Line2
C. W D. 两行内容
12. 下列模块中,用于处理CSV文件的是( )
A. csv B. excel
C. file D. data
13. 关于sqlite3模块,下列说法正确的是( )
A. 需要额外安装 B. 只能连接MySQL
C. Python内置模块 D. 不支持SQL语句
14. 执行代码后,变量r的类型是( )
import sqlite3
conn = sqlite3.connect("test.db")
cur = conn.cursor()
r = cur.execute("SELECT * FROM users")
A. 列表 B. 游标对象
C. 字典 D. 字符串
15. 下列方法中,用于获取查询结果全部记录的是( )
A. fetchone() B. fetchmany()
C. fetchall() D. getall()
16. 关于CSV文件,下列说法正确的是( )
A. 只能用Excel打开 B. 逗号分隔值文件
C. 二进制文件 D. 不能存储文本
17. 执行代码后,data的值是( )
import csv
f = open("test.csv", "r")
reader = csv.reader(f)
data = list(reader)
f.close()
A. 字符串 B. 字典
C. 列表的列表 D. 元组
18. 下列SQL语句中,用于创建数据表的是( )
A. CREATE TABLE B. INSERT INTO
C. SELECT D. UPDATE
19. 关于数据库连接对象,关闭连接的方法是( )
A. close() B. end()
C. disconnect() D. stop()
20. 执行代码后,需要调用的提交方法是( )
import sqlite3
conn = sqlite3.connect("test.db")
cur = conn.cursor()
cur.execute("INSERT INTO users VALUES(1, '小明')")
A. conn.submit() B. conn.save()
C. cur.commit() D. conn.commit()
21. 关于文件编码,读取中文文件通常使用的编码是( )
A. ASCII B. GBK
C. UTF-8 D. ISO-8859-1
22. 下列代码中,正确打开UTF-8编码文件的是( )
A. open("test.txt", "r")
B. open("test.txt", "r", encoding="utf-8")
C. open("test.txt", "utf-8")
D. open("test.txt", encoding="r")
23. 关于writelines()方法,下列说法正确的是( )
A. 写入单个字符串 B. 自动添加换行符
C. 写入字符串列表 D. 只能写入数字
24. 执行代码后,result的值是( )
import sqlite3
conn = sqlite3.connect("test.db")
cur = conn.cursor()
cur.execute("SELECT COUNT(*) FROM users")
result = cur.fetchone()
A. 元组 B. 整数
C. 列表 D. 字典
25. 关于数据库游标对象,下列说法正确的是( )
A. 用于连接数据库 B. 用于创建数据库
C. 用于关闭连接 D. 用于执行SQL语句
二、判断题(共10题,每题1分,共10分)
1. Python中使用open()函数打开文件后,必须使用close()关闭文件。( )
2. 文件打开模式"r+"表示读写模式,文件必须存在。( )
3. readlines()方法返回的是字符串类型。( )
4. seek()函数只能从文件开头移动指针。( )
5. CSV文件只能用逗号作为分隔符。( )
6. sqlite3是Python的第三方模块,需要单独安装。( )
7. 执行INSERT语句后,必须调用commit()提交事务。( )
8. fetchone()方法可以获取查询结果的多条记录。( )
9. 二进制文件打开时需要指定encoding参数。( )
10. 使用with语句打开文件可以自动关闭文件。( )
3、 名词解释题(共4题,每题3分,共12分)
1. 文件对象
2. CSV文件
3. 游标对象
4. 事务提交
四、简答题(共4题,每题4分,共16分)
1. 请简述Python中文件打开的常用模式及其含义。(至少写4种)
2. 请说明read()、readline()、readlines()三个方法的区别。**
3. 请简述使用sqlite3操作数据库的基本步骤。
4. 请说明csv模块中reader和writer对象的主要用途。
五、编程题(本题共1小题,每题12分,共12分)
1.编写一个学生信息管理系统:实现下面的要求:定义函数create_table,创建SQLite数据库student.db,创建学生信息表students,表里包含学号、姓名、性别、成绩字段,并且为各字段设置合适的数据类型。(6分)
2. 定义函数insert_student,向students表中插入学生记录(6分)
原创精品资源学科网独家享有版权,侵权必究!
学科网(北京)股份有限公司
学科网(北京)股份有限公司
$