考试题型

单项选择题(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)

Logo

小龙虾开发者社区是 CSDN 旗下专注 OpenClaw 生态的官方阵地,聚焦技能开发、插件实践与部署教程,为开发者提供可直接落地的方案、工具与交流平台,助力高效构建与落地 AI 应用

更多推荐