计算机二级python备考
考试题型
单项选择题(40分)
| 考察知识点 | 分值 |
| 计算机系统 | 2分 |
| 数据结构与算法 | 3分 |
| 程序设计与软件工程 | 2分 |
| 数据库设计基础 | 3分 |
| python基础知识 | 30分 |

编程题(60分)

考点归纳总结
程序设计基本方法
1、程序设计语言的发展:机器语言->汇编语言->高级语言
2、执行机制:编译(C语言)、解释(python)
3、ipo编程方法(首字母):输入(input)、处理(process)、输出(output)
4、python语言优点:通用性、语法简洁、生态高产、平台无关、强制可读、支持中文
错误理解:python速度快、适合用写系统软件
程序格式框架
1、缩进:for if def try
unexpected indent 缩进不正确
2、注释:#
3、转义字符:\0 \n \t \\
考点:长度(转义字符是一个字符,所以"\n"长度是1,\O不是转义字符)
语法元素
1、变量命名:字母数字下划线和汉字组成;不能是特殊符号、数字不能开头、不能是保留字
2、关键字
基本的输入输出函数
1、input()输入:输入的任何内容都是字符串,不是数字(易错)
2、eval()去除引号并执行,int()也可以将字符串变成数字
3、print()输出:end='\n'自带换行
print("谢谢",end='')
数字类型
整数、浮点数、复数
浮点数:小数计算不一定准(0.1+0.2不等于0.3)
round()保留小数位 round(0.1+0.2,1)保留一位小数
保留整数位:round(1.5)=2 round(2.5)=2
小数位是.5,当整数位是奇数进一,当整数是偶数位不进
复数:实部和虚部都是浮点数
real imag
(3+4j).real 3.0
abs()取绝对值、取模运算
abs(3+4j) 5.0浮点数计算得到的也是浮点数
数字类型的计算
/除结果一定是小数
//取整 %取余(整数)
abs()取绝对值
divmod()取整取余 divmod(10,3) (3,1)
pow() 2**3=pow(2,3)
round()保留多少位小数
字符串类型(序列类型)
s="计算机二级必过" 单引号和双引号都可以
s='计算机二级必过'
索引:打印出“二” print(s[3]) print(s[-4])
切片:输出“二级” print(s[3:5])起始位置(包含):终止位置(不包含):不长(默认位1)
print(s[-4:-2]) print(s[3:-2]) print(s[-4:5])
输出“级二”方向变化 print(s[-3:-5:-1])
print(s[-3:-5:-2]) 输出“级”
字符串倒序
print(s[-1:-8:-1]) print(s[::-1]) 输出“过必级二机算计”
格式化字符串
“张三同学,您考了100分”
"{}同学,您考了{}分".format("小黑","59")
name=input()
score=input()
print("{}同学,您考了{}分".format(name,score))
print("{}同学,您考了{:*^10}分".format(name,score))
# score=eval(input())
# print("{}同学,您考了{:*^10,}分".format(name,score))
# 只有加了eval()才可增添千位分隔符
print("{}同学,您考了{:.2f}分".format(name,score))
# 保留两位小数
填充(*)、对齐(^)、宽度(10)、千位分隔(,)、保留小数位数(.nf)其他
>右对齐 <左对齐
填充(*)、对齐(^)、宽度(10):可针对数字,也可针对字符串
千位分隔(,)、保留小数位数(.nf):只可针对数字
双引号不可以填充,要\"才可
a=input("请输入填充符号:")
s="PYTHON"
print("{1:{0}^30}".format(a,s))
# a传给0的位置,s传给1的位置
字符串操作符
'a'+'b'
'ab'
'a'*3
'aaa'
'a'+3(错)
'a' in 'abc'
True
len("二级必过") 4
字符串处理方法
split()将字符串分开
strip()去除左右两边指定字符
replace("旧的","新的")替换
join()连接
s="北京,上海,武汉,天津" #字符串
ls=s.split(',')
print(ls)
# ['北京','上海','武汉','天津']列表
s="ba#ab"
n=s.strip("ba") #去除b或者a
print(n)
# 输出#
s="小黑必过"
n='+'.join(s)
print(n)
# 小+黑+必+过
组合数据类型
字符串(序列类型)
元组:以逗号隔开(序列类型)元组里面可以放数字、字符串(加引号)、元组、列表
a=3,4 print(a) (3,4) #是元组
a=(3) #不是元组,没有逗号不是元组
a=(3,) #元组中只有一个元素也得加逗号
a=(1,3,5,7,9) #拿到元素3
print(a[1]) #提取切片和字符串类似
print(a[1:3]) #(3.5)元组切片还是元组
列表(序列类型)列表类型里面可以放数字、字符串(加引号)、列表、元组
b=[1,3,5,7,9]
print(b[1:3]) #[2,5] 列表切片还是列表
字符串里面是文本数字类型,但列表和元组(加引号是字符串)里面是数字;元组和列表里面可以填充各种数字类型;字符串和元组不可改变,列表是可变的
列表的处理方法
append()在末尾追加
b=[1,3,5,7,9]
b.append(8)
print(b) #b=[1,3,5,7,9,8]
remove()删除第一个
b=[1,3,5,3,9]
b.remove(3)
print(b) #b=[1,5,3,9]
pop()删除指定位置
b=[1,3,5,3,9]
b.pop(3)
print(b) #b=[1,3,5,9]
copy()
b=[1,3,5,7]
lt=b.copy()
b[1]=8
print(lt) #lt=[1,3,5,7]
b=[1,3,5,7]
new_b=b #关联 共同使用空间
b[1]=8
print(new_b) #new_b=[1,8,5,7]
insert(index,值)
b=[1,3,5,3]
# 在5前面插入8
b.insert(2,8)
print(b) #b=[1,2,8,5,3]
集合类型{}:无序的、自动去重复、添加元素add()
s={} #是不是集合,NO,默认是空字典
s={1,3,5,7} #
映射类型:字典(属于集合的一种)也是无序的、自动去重复(key不能重复)
d={} #创建了一个空字典
d={"name":"小黑","age":"23","score":"69","name":"小白"}
print(d) #{"name":"小黑","age":"23","score":"69"}
字典的增删改查
print(d["name"]) #查
d["gender"]="男" #增加
d["age"]=32 #改
del d["name"] d.pop("name",1)没找到就返回1
找到了就修改,没找到就增添
字典的键是唯一且不可变的数字类型(列表不可做键)
字典处理方法
d={"name":"小黑","age":"23","score":"69"}
print(d.get("age")) #23
print(d.get("key")) #None
print(d.get("key","没找到")) #没找到
print(d.get("key",1)) #没找到返回1
items()字典变成有序的列表
print(d.items()) #dict_items([('name','小黑'),('age',23),('score',69)])
print(list(d.items())) #[('name','小黑'),('age',23),('score',69)]
程序控制结构
顺序结构
分支结构:单分支结构、二分支结构、多分支结构
循环结构:遍历循环、条件循环
for:字符串、元组、列表、字典(键)
range(5)0,1,2,3,4
while
循环控制:break跳出循环 continue跳过这一次循环
非0非空就是真
列表推导式 [i*2 for i in range(5)] [0,2,4,6,8]
if 5>3
print(5)
else:
print(3)
#简写形式
print(5) if 5>3 else print(3)
编程题高频考题记录
第一套(42,45)
42、考生文件夹下存在一个文件PY102. py,请写代码替换横线,不修改其他代码,实现以下功能:a和b是两个列表变量,列表a为[3, 6, 9]已给定,键盘输入列表b,计算a中元素与b中对应元素乘积的累加和。例如:键盘输入列表b为[1,2, 3],累加和为1*3+2*6+3*9=42,因此,屏幕输出计算结果为42提示:建议使用本机提供的Python集成开发环境IDLE编写、调试及验证程序。
# 请在______处使用一行代码或表达式替换
#
# 注意:请不要修改其他已给出代码
a = [3,6,9]
b = eval(input()) #例如:[1,2,3]
______
for i in ______:
s += a[i]*b[i]
print(s)
# 请在______处使用一行代码或表达式替换
#
# 注意:请不要修改其他已给出代码
a = [3,6,9]
b = eval(input()) #例如:[1,2,3]
s=0
for i in range(3):
s += a[i]*b[i]
print(s)
45、考生文件夹下存在一个文件PY202.py,该文件是本题目的代码提示框架,其中代码可以任意修改,请在该文件中编写代码,以实现如下功能:
键盘输入一组人员的姓名、性别、年龄等信息,信息间采用空格分隔,每人一行,空行回车结束录入,示例格式如下:
张三 男 23
李四 女 21
王五 男 18
计算并输出这组人员的平均年龄(保留2位小数)和其中男性人数,格式如下:
平均年龄是20.67 男性人数是2
提示:建议使用本机提供的Python集成开发环境IDLE编写、 调试及验证程序。
# 以下代码为提示框架
# 请在...处使用一行或多行代码替换
# 请在______处使用一行代码替换
#
# 注意:提示框架代码可以任意修改,以完成程序功能为准
data = input() # 姓名 年龄 性别
...
while data:
...
data = input()
...
print("平均年龄是{:.2f} 男性人数是{}".format(______))
# 以下代码为提示框架
# 请在...处使用一行或多行代码替换
# 请在______处使用一行代码替换
#
# 注意:提示框架代码可以任意修改,以完成程序功能为准
data = input() # 姓名 性别 年龄
a=0 #总年龄
b=0 #男性人数
c=0 #总人数
d=0 #平均年龄
while data:
c+=1 #总人数加1
single=data.split() #将数据按空格分割
#将年龄转换为整数并累加到总年龄中
a+=int(single[2])
#判断性别是否为男
#如果是男,男性人数加1
if single[1]=='男':
b+=1
data = input() #继续输入下一行数据
d=a/c #计算平均年龄
print("平均年龄是{:.2f} 男性人数是{}".format(d,b))
第2套(41,42,45,46)
41、考生文件夹下存在一个文件PY101.py,请写代码替换横线,不修改其他代码,实现以下功能:
随机选择一一个手机品牌屏幕输出。
提示:建议使用本机提供的Python集成开发环境IDLE编写、调试及验证程序。
# 请在______处使用一行代码替换
#
# 注意:请不要修改其他已给出代码
import ______
brandlist = ['华为','苹果','诺基亚','OPPO','小米']
random.seed(0)
______
print(name)
# 请在______处使用一行代码替换
#
# 注意:请不要修改其他已给出代码
import random
brandlist = ['华为','苹果','诺基亚','OPPO','小米']
random.seed(0)
name=random.choice(brandlist)
print(name)
42、考生 文件夹下存在一个文件PY102.py,请写代码替换横线,键盘输入一段文本,保存在一个字符串变量txt中,分别用Python内置函数及jieba库中已有函数计算字符串txt的中文字符个数及中文词语个数。注意:中文字符包含中文标点符号。
例如,键盘输入:
俄罗斯举办世界杯
屏幕输出:
中文字符数为8,中文词语数为3。
提示:建议使用本机提供的Python集成开发环境IDLE编写、 调试及验证程序。
# 请在______处使用一行代码或表达式替换
#
# 注意:请不要修改其他已给出代码
import jieba
s = input("请输入一个字符串")
n = ______
m = ______
print("中文字符数为{},中文词语数为{}。".format(n, m))
# 请在______处使用一行代码或表达式替换
#
# 注意:请不要修改其他已给出代码
import jieba
s = input("请输入一个字符串")
n = len(s)
m = len(jieba.lcut(s))
print("中文字符数为{},中文词语数为{}。".format(n, m))
45、考生 文件夹下存在一个文件PY202.py,请在该文件中作答,实现以下功能。
键盘输入某班各个同学就业的行业名称,行业名称之间用空格间隔(回车结束输入)。完善Python代码,统计各行业就业的学生数量,按数量从高到低方式输出。例如输入:
交通 金融 计算机 交通 计算机 计算机
输出参考格式如下,其中冒号为英文冒号:
计算机:3
交通:2
金融:1
提示:建议使用本机提供的Python集成开发环境IDLE编写、调试及验证程序。
# 以下代码为提示框架
# 请在...处使用一行或多行代码替换
# 请在______处使用一行代码替换
#
# 注意:提示框架代码可以任意修改,以完成程序功能为准
names=input("请输入各个同学行业名称,行业名称之间用空格间隔(回车结束输入):")
...
d = {}
...
ls = list(d.items())
ls.sort(key=lambda x:x[1], reverse=True) # 按照数量排序
for k in ls:
print("{}:{}".format(______))
# 以下代码为提示框架
# 请在...处使用一行或多行代码替换
# 请在______处使用一行代码替换
#
# 注意:提示框架代码可以任意修改,以完成程序功能为准
names=input("请输入各个同学行业名称,行业名称之间用空格间隔(回车结束输入):")
a=names.split() # 按空格分割字符串,得到行业名称列表
d = {} # 统计每个行业名称出现的次数
# 遍历行业名称列表,统计每个行业名称出现的次数
for name in a:
d[name] = d.get(name, 0) + 1 # 如果行业名称不在字典中,初始化为0,否则加1
ls = list(d.items()) # 将字典转换为列表,列表中的元素是元组,元组的第一个元素是行业名称,第二个元素是数量
ls.sort(key=lambda x:x[1], reverse=True) # 按照数量排序
for k in ls: # 遍历排序后的列表,打印每个行业名称和数量
print("{}:{}".format(k[0], k[1]))
46、考生文件夹下存在两个Python源文件,分别对应两个问题,请按照文件内说明修改代码,实现以下功能:
下面所示为一套由公司职员随身佩戴的位置传感器采集的数据,文件名称为“sensor.txt”,其内容示例如下:
2016/5/31 0:05, vawelon001, 1, 1
2016/5/31 0:20, earpa001, 1,1
2016/5/31 2:26, earpa001,1, 6
... (略)
第一列是传感器获取数据的时间,第二列是传感器的编号,第三列是传感器所在的楼层,第四列是传感器所在的位置区域编号。
问题1 (10分) :在PY301-1. py文件中修改代码,读入sensor. txt文件中的数据,提取出传感器编号为earpa001的所有数据,将结果输出保存到“earpa001. txt”文件。输出文件格式要求:原数据文件中的每行记录写入新文件中,行尾无空格,无空行。参考格式如下:
2016/5/31 7:11, earpa001,2, 4
2016/5/31 8:02, earpa001,3, 4
2016/5/31 9:22, earpa001,3,4
... (略)
问题2 (10分) :在PY301-2. py文件中修改代码,读入“earpa001. txt” 文件中的数据,统计earpa001对应的职员在各楼层和区域出现的次数,保存到“earpa001_count. txt” 文件,每条记录一 行,位置信息和出现的次数之间用英文半角逗号隔开,行尾无空格,无空行。参考格式如下。
1-1,5
1-4, 3
... (略)
含义如下:
第1行“1-1,5”中1-1表示1楼1号区域,5表示出现5次;
第2行“1-4,3”中1-4表示1楼4号区域,3表示出现3次;
提示:建议使用本机提供的Python集成开发环境IDLE编写、调试及验证程序。
# PY301-1
# 以下代码为提示框架
# 请在...处使用一行或多行代码替换
# 请在______处使用一行代码替换
#
# 注意:提示框架代码可以任意修改,以完成程序功能为准
...
for line in ______:
...
fo.write('{},{},{},{}\n'.format(______))
...
# PY301-2
# 以下代码为提示框架
# 请在...处使用一行或多行代码替换
# 请在______处使用一行代码替换
#
# 注意:提示框架代码可以任意修改,以完成程序功能为准
...
d = {}
...
ls = list(d.items())
ls.sort(key=lambda x:x[1], reverse=True) # 该语句用于排序
...
fo.write('{},{}\n'.format(______))
...
# PY301-1
# 以下代码为提示框架
# 请在...处使用一行或多行代码替换
# 请在______处使用一行代码替换
#
# 注意:提示框架代码可以任意修改,以完成程序功能为准
f=open('sensor.txt','r',encoding='utf-8') # 读取sensor.txt文件
fo=open('earpa001.txt','w') # 创建一个新的文本文件,用于存储结果
ls=f.readlines() # 读取sensor.txt文件的所有行
for line in ls: # 遍历所有行
lt=line.strip('\n').split(',') # 将每行数据按照逗号分割成列表
if lt[1]=='earpa001': # 如果传感器ID为earpa001
fo.write('{},{},{},{}\n'.format(lt[0],lt[1],lt[2],lt[3])) # 将符合条件的行写入新的文本文件中
f.close() # 关闭sensor.txt文件
fo.close() # 关闭新的文本文件
# PY301-2
# 以下代码为提示框架
# 请在...处使用一行或多行代码替换
# 请在______处使用一行代码替换
#
# 注意:提示框架代码可以任意修改,以完成程序功能为准
# 该程序的功能是统计earpa001.txt文件中每个传感器ID出现的次数,将结果写入earpa001_count.txt文件中
f=open('earpa001.txt','r',encoding='utf-8') # 读取earpa001.txt文件
fo=open('earpa001_count.txt','w') # 创建一个新的文本文件,用于存储结果
ls=f.readlines() # 读取earpa001.txt文件的所有行
d = {} # 创建一个空字典,用于存储传感器ID和对应的出现次数
for line in ls: # 遍历所有行
lt=line.strip('\n').split(',') # 将每行数据按照逗号分割成列表
d[lt[1]]=d.get(lt[1],0)+1 # 统计每个传感器ID出现的次数,存储在字典d中
ls = list(d.items()) # 将字典d转换为列表ls,其中每个元素是一个元组,包含传感器ID和对应的出现次数
ls.sort(key=lambda x:x[1], reverse=True) # 该语句用于排序
for k in ls: # 遍历排序后的列表
fo.write('{},{}\n'.format(k[0],k[1])) # 将每个传感器ID和对应的出现次数写入新的文本文件中
f.close() # 关闭earpa001.txt文件
fo.close() # 关闭新的文本文件
第3套(43,45,46)
43、考生文件夹下存在一个文件PY103.py,请写代码替换横线,不修改其他代码,实现以下功能:键盘输入一个9800到9811之间的正整数n,作为Unicode编码,把n-1、n和n+1三个Unicode编码对应字符按照如下格式要求输出到屏幕:宽度为11个字符,加号字符+填充,居中。
例如:键盘输入:9802
屏幕输出:++++++++
# 请在______处使用一行代码或表达式替换
#
# 注意:请不要修改其他已给出代码
n = eval(input("请输入一个数字:"))
print("{______}".format(______))
# 请在______处使用一行代码或表达式替换
#
# 注意:请不要修改其他已给出代码
n = eval(input("请输入一个数字:")) # 读取用户输入的数字n
print("{:+^11}".format(chr(n-1)+chr(n)+chr(n+1)))
# 该程序的功能是将用户输入的数字n转换为对应的字符,
# 然后将其居中输出,并在两侧用加号填充,使输出的总宽度为11个字符。
# 具体来说,程序会将n-1、n和n+1转换为对应的字符,并将它们组合成一个字符串,
# 然后使用format方法进行格式化输出。
# 其中,:+^11表示居中输出,宽度为11个字符,用加号填充。
# format()语法格式:{格式化字符串:宽度^对齐方式}
# ^ 表示居中对齐 ,< 表示左对齐 ,> 表示右对齐, : 不加+表示用空格填充
# chr()函数用于将Unicode编码转换为对应的字符
# ord()函数用于将字符转换为对应的Unicode编码
# chr(n-1)+chr(n)+chr(n+1))表示将n-1、n和n+1转换为对应的字符,并将它们组合成一个字符串
# Unicode编码有65536个,每个编码对应一个字符
# 列举一些常用的Unicode编码和对应的字符:
# 32: 空格
# 48-57: 数字0-9
# 65-90: 大写字母A-Z
# 97-122: 小写字母a-z
# 其他字符的Unicode编码可以参考Unicode标准
# 9800: 中文字符
# 9800-980F: 中文字符
45、考生文件夹下存在一个文件PY202.py,该文件是本题目的代码提示框架,其中代码可以任意修改。请在该文件中编写代码,以实现如下功能:
键盘输入一组我国高校所对应的学校类型,以空格分隔,共一行,示例格式如下:
综合 理工 综合 综合 综合 师范 理工
统计各类型的数量,从数量多到少的顺序屏幕输出类型及对应数量,以英文冒号分隔,每个类型一行,输出参考格式如下:
综合:4
理工:2
师范:1
# 以下代码为提示框架
# 请在...处使用一行或多行代码替换
# 请在______处使用一行代码替换
#
# 注意:提示框架代码可以任意修改,以完成程序功能为准
txt = input("请输入类型序列: ")
...
d = {}
...
ls = list(d.items())
ls.sort(key=lambda x:x[1], reverse=True) # 按照数量排序
for k in ls:
print("{}:{}".format(k[0], k[1]))
# 请在______处使用一行代码替换
#
# 注意:提示框架代码可以任意修改,以完成程序功能为准
txt = input("请输入类型序列: ")
t=txt.split() # 将输入的字符串按照空格分割成列表t
d = {} # 初始化一个空字典d,用于存储每个字符出现的次数
for i in range(len(t)): # 遍历输入的类型序列
d[t[i]] = d.get(t[i], 0) + 1 # 如果字符t[i]不在字典d中,则初始化为0,否则增加1
# 如果字符t[i]在字典d中,则增加1
# 如果字符t[i]不在字典d中,则初始化为1
ls = list(d.items()) # 将字典d转换为列表ls,每个元素为元组(c, n),表示字符c出现的次数为n
ls.sort(key=lambda x:x[1], reverse=True) # 按照数量排序,从大到小
for k in ls: # 遍历排序后的列表ls
print("{}:{}".format(k[0], k[1]))
46、考生文件夹下存在2个Python源文件和3个文本文件,分别对应两个问题,请按照文件内说明修改代码,实现以下功能:
《论语》是儒家学派的经典著作之一,主要记录了孔子及其弟子言行。这里给出了一个网络版本的《论语》,文件名称为“论语.txt”,其内容采用逐句“原文”与逐句“注释”相结合的形式组织,通过【原文】标记《论语》原文内容,通过【注释】标记《论语》注释内容,具体文件格式框架请参考“论语.txt”文件。
问题1(10分):在PY301-1.py文件中修改代码,提取“论语.txt”文件中的原文内容,输出保存到考生文件夹下,文件名为“论语-原文.txt”。具体要求:仅保留“论语.txt”文件中所有【原文】标签下面的内容,不保留标签,并去掉每行行首空格及行尾空格,无空行。原文小括号及内部数字是源文件中注释项的标记,请保留。示例输出文件格式请参考“论语-原文-输出示例.txt”文件。注意:示例输出文件帮助考生了解输出格式,不作它用。
问题2(10分):在PY301-2.py文件中修改代码,对“论语-原文.txt”或“论语.txt”文件进一步提纯,去掉每行文字中所有小括号及内部数字,保存为“论文-提纯原文.txt”文件。示例输出文件格式请参考“论语-提纯原文-输出示例.txt”文件。注意:示例输出文件帮助考生了解输出格式,不作它用。
# PY301-1
# 以下代码为提示框架
# 请在...处使用一行或多行代码替换
# 请在______处使用一行代码替换
#
# 注意:提示框架代码可以任意修改,以完成程序功能为准
fi = open("论语.txt", ______)
fo = open("论语-原文.txt", ______)
...
for line in fi:
...
line = line.strip(" \n")
...
# PY301-2
# 以下代码为提示框架
# 请在...处使用一行或多行代码替换
# 请在______处使用一行代码替换
#
# 注意:提示框架代码可以任意修改,以完成程序功能为准
fi = open("论语-原文.txt", ______)
fo = open("论语-提纯原文.txt", ______)
...
for line in fi:
...
line=line.replace(______)
...
# PY301-1
# 以下代码为提示框架
# 请在...处使用一行或多行代码替换
# 请在______处使用一行代码替换
#
# 注意:提示框架代码可以任意修改,以完成程序功能为准
fi = open("论语.txt", 'r',encoding='utf=8') # 打开论语.txt文件,只读模式,编码为utf-8
fo = open("论语-原文.txt", 'w',encoding='utf=8') # 打开论语-原文.txt文件,写入模式,编码为utf-8
flag=False # 初始化一个布尔变量flag,用于判断是否正在处理原文
for line in fi: # 遍历论语.txt文件的每一行
if '【原文】'in line: # 如果当前行包含【原文】
flag=True # 将flag设置为True,表示正在处理原文
continue # 跳过当前行,继续处理下一行
if'【注释】' in line: # 如果当前行包含【注释】
flag=False # 将flag设置为False,表示正在处理注释
line = line.strip(" \n") # 去除当前行的前后空格和换行符
if flag==True: # 如果正在正在处理原文
if line: # 如果当前行不为空
fo.write(line+'\n') # 将当前行写入论语-原文.txt文件,并添加换行符
fi.close() # 关闭论语.txt文件
fo.close() # 关闭论语-原文.txt文件
# line.strip(" \n")中"\n"表示换行符," "表示空格
# PY301-2
# 以下代码为提示框架
# 请在...处使用一行或多行代码替换
# 请在______处使用一行代码替换
#
# 注意:提示框架代码可以任意修改,以完成程序功能为准
fi = open("论语-原文.txt",'r',encoding='utf=8' ) # 打开论语-原文.txt文件,只读模式,编码为utf-8
fo = open("论语-提纯原文.txt",'w',encoding='utf=8' ) # 打开论语-提纯原文.txt文件,写入模式,编码为utf-8
for line in fi: # 遍历论语-原文.txt文件的每一行
line=line.strip(" \n") # 去除当前行的前后空格和换行符
line=line.replace(r'\(\d+\)','') # 替换所有包含数字的括号为空字符串
fo.write(line+'\n') # 将当前行写入论语-提纯原文.txt文件,并添加换行符
fi.close() # 关闭论语-原文.txt文件
fo.close() # 关闭论语-提纯原文.txt文件
# 参考答案
fi = open("论语-原文.txt",'r')
fo = open("论语-提纯原文.txt",'w',encoding='utf=8' )
for line in fi: # 遍历论语-原文.txt文件的每一行
for i in range(23): # 遍历数字1到9
line=line.replace('('+str(i)+')','') #
fo.write(line)
fi.close() # 关闭论语-原文.txt文件
fo.close() # 关闭论语-提纯原文.txt文件
#line.replace('('+str(i)+')','') 这里面的+号表示连接字符串,将数字i转换为字符串后添加到括号中,用于替换当前行中所有包含数字的括号
# 替换当前行中所有包含数字的括号为空字符串
# str(i)将数字i转换为字符串,以便在replace函数中使用
# 单引号是在引前括号和后括号的字符串中使用的,表示这是一个字符串,而不是一个变量或表达式
第5套(42,43,44,46)
42、考生文件夹下存在一个文件PY102.py,请写代码替换横线,不修改其他代,实现以下功能:
a和b是两个长度相同的列表变量,列表a为[3,6,9]已给定,键盘输入列表b,计算a中元素与b中对应元素的和形成新的列表c,在屏幕上输出。
例如:键盘输入列表b为[1,2,3],屏幕输出计算结果为[4,8,12]
# 请在______处使用一行代码或表达式替换
#
# 注意:请不要修改其他已给出代码
a = [3,6,9]
b = eval(input()) #例如:[1,2,3]
c = []
for i in range(___(1)___):
c.append(___(2)___)
print(c)
# 请在______处使用一行代码或表达式替换
#
# 注意:请不要修改其他已给出代码
a = [3,6,9]
b = eval(input()) #例如:[1,2,3]
c = []
for i in range(3):
c.append(a[i]+b[i])
print(c)
43、考生文件夹下存在一个文件PY103.py,请写代码替换横线,不修改其他代码,实现以下功能:
以0为随机数种子,随机生成5个在1(含)到97(含)之间的随机数,计算这五个随机数的平方和。
# 请在______处使用一行代码或表达式替换
#
# 注意:请不要修改其他已给出代码
import random
___(1)___
s = 0
for i in range(5):
n = random.randint(___(2)___) # 产生随机数
s = ___(3)___
print(s)
# 请在______处使用一行代码或表达式替换
#
# 注意:请不要修改其他已给出代码
import random # 导入random模块
random.seed(0) # 设置随机种子,确保每次运行结果相同
s = 0 # 初始化s为0,用于累加随机数的平方
for i in range(5): # 循环5次,生成5个随机数
n = random.randint(1,97) # 生成1-97之间的随机整数
s =s+n*n # 累加随机数的平方到s中
# s=s+n**2
print(s) # 输出累加结果
44、使用turtle库的turtle.fd()函数和turtle.seth()函数绘制一个边长为100的正八边形,在考生文件夹下给出了程序框架文件PY201.py,在横线处补充代码,不得修改其它代码。效果如下图所示。

# 请在______处使用一行代码或表达式替换
#
# 注意:请不要修改其他已给出代码
import turtle
turtle.pensize(2)
d = 0
for i in range(1, ______(1)______):
______(2)______
d += ______(3)______
turtle.seth(d)
# 请在______处使用一行代码或表达式替换
#
# 注意:请不要修改其他已给出代码
import turtle # 导入turtle模块
turtle.pensize(2) # 设置笔笔宽度为2像素
d = 0 # 初始化方向为0度
for i in range(1,9): # 循环9次,绘制9条边
turtle.forward(100) # 前进100像素
d += 45 # 每次增加45度
turtle.seth(d) # 设置方向为d度
46、《三国演义》是中国古典四大名著之一,曹操是其中主要人物,考生文件夹文件data.txt给出《三国演义》简介。
问题1:请编写程序,用Python语言中文分词第三方库jieba对文件data.txt行分词,并将结果写入文件out.txt,每行一个词,例如:
内容简介
编辑
整个
故事
在
东汉
...
在考生文件夹下给出了程序框架文件PY301-1.py,补充代码完成程序(10分)
问题2:对文件out.txt进行分析,打印输出曹操出现次数。
在考生文件夹下给出了程序框架文件PY301-2.py,补充代码完成程序(10分)
# PY-1
# 请在______处使用一行代码或表达式替换
#
# 注意:请不要修改其他已给出代码
import jieba
f = open('data.txt','r')
lines = f.readlines()
f.close()
f = open('out.txt','w')
for line in lines:
line = ______(1)______ #删除每行首尾可能出现的空格
wordList = ______(2)______ #用结巴分词,对每行内容进行分词
f.writelines('\n'.______(3)______) #将分词结果存到文件out.txt中
f.close()
# PY-2
# 请在______处使用一行代码或表达式替换
#
# 注意:请不要修改其他已给出代码
import jieba
f = open('out.txt','r') #以读的方式打开文件
words = f.readlines()
f.close()
D={}
for w in _______(1)_________: #词频统计
D[w[:-1]]=_______(2)_________ + 1
print("曹操出现次数为:{} ".format(_______(3)_________))
# PY-1
# 请在______处使用一行代码或表达式替换
#
# 注意:请不要修改其他已给出代码
import jieba
f = open('data.txt','r')
lines = f.readlines()
f.close()
f = open('out.txt','w')
for line in lines:
line = line.strip(' ') #删除每行首尾可能出现的空格
wordList =jieba.lcut(line) #用结巴分词,对每行内容进行分词
f.writelines('\n'.join(wordList)) #将分词结果存到文件out.txt中
f.close()
# PY-2
# 请在______处使用一行代码或表达式替换
#
# 注意:请不要修改其他已给出代码
import jieba
f = open('out.txt','r') #以读的方式打开文件
words = f.readlines()
f.close()
D={}
for w in words: #词频统计
D[w[:-1]]=D.get(w[:-1],0) + 1 # 如果w[:-1]不在D中,返回0,否则返回w[:-1]对应的值,再加1
print("曹操出现次数为:{} ".format(D['曹操'])) # 打印曹操出现次数
# w[:-1] 表示取w的前n-1个字符,即去掉最后一个字符
# D['曹操'] 表示打印曹操出现次数
第6套(42,43,45)
第7套(42,43,45)
第8套(44,46)
第9套(43,44,45)
第10套(41,42)
第11套(42,44,46)
第12套(42,46)
第13套(41,43,45)
第14套(41,42,45)
第15套(41,43,44,45,46)
第16套(42)
第17套(41,43,44,45)
第18套(41,44)
第19套(41,43,44,46)
更多推荐




所有评论(0)