真题5
1、考生文件夹下存在一个文件PY101.py,请写代码替换横线,不修改其他代码,实现以下功能:
键盘输入正整数n,按要求把n输出到屏幕,格式要求:宽度为15个字符,数字右边对齐,不足部分用*填充。
例如:键盘输入正整数n为1234,屏幕输出***********1234
代码
python
n = eval(input("请输入正整数:"))
print("{:*>15}".format(n))
2、考生文件夹下存在一个文件PY102.py,请写代码替换横线,不修改其他代,实现以下功能:
a和b是两个长度相同的列表变量,列表a为[3,6,9]已给定,键盘输入列表b,计算a中元素与b中对应元素的和形成新的列表c,在屏幕上输出。
例如:键盘输入列表b为[1,2,3],屏幕输出计算结果为[4,8,12]
代码
python
a = [3,6,9]
b = eval(input()) #例如:[1,2,3]
c = []
for i in range(3):
c.append(a[i]+b[i])
print(c)
3、考生文件夹下存在一个文件PY103.py,请写代码替换横线,不修改其他代码,实现以下功能:
以0为随机数种子,随机生成5个在1(含)到97(含)之间的随机数,计算这五个随机数的平方和。
代码
python
import random
random.seed(0)
s = 0
for i in range(5):
n = random.randint(1,97) # 产生随机数
s = s+n**2
print(s)
4 、使用turtle库的turtle.fd()函数和turtle.seth()函数绘制一个边长为100的正八边形,在考生文件夹下给出了程序框架文件PY201.py,在横线处补充代码,不得修改其它代码。效果如下图所示。
代码
python
import turtle
turtle.pensize(2)
d = 0
for i in range(1,9):
turtle.fd(100)
d += 45
turtle.seth(d)
5、使用字典和列表型变量完成村长选举。某村有40名有选举权和被选举权村民,名单由考生文件夹下文件name.txt给出,从这40名村民中选出一人当长,40人的投票信息由考生文件夹下文件vote.txt给出,每行是一张选票的信息,有效票中得票最多的村民当选。
问题1:请从vote.txt中筛选出无效票写入文件vote1.txt。有效票的含义是:选票中只有一个名字且该名字在name.txt文件列表中,不是有效票的票称为无效票。
问题2:给出当选村长的名字及其得票数。
在考生文件夹下给出了程序框架文件PY202.py,补充代码完成程序。
代码
python
f=open("name.txt")
names=f.readlines()
f.close()
f=open("vote.txt")
votes=f.readlines()
f.close()
f=open("vote1.txt","w")
D={}
NUM=0
for vote in votes:
num = len(vote.split()) #分解成列表,并求列表长度(元素个数)
if num==1 and vote in names: #仅一个且在姓名中,有效
D[vote[:-1]]=D.get(vote[:-1],0)+1
NUM+=1
else:
f.write(vote)
f.close()
l=list(D.items())
l.sort(key=lambda s:s[1],reverse=True)
name=l[0][0]
score=l[0][1]
print("有效票数为:{} 当选村长村民为:{},票数为:{}".format(NUM,name,score))
6、《三国演义》是中国古典四大名著之一,曹操是其中主要人物,考生文件夹文件data.txt给出《三国演义》简介。
问题1:请编写程序,用Python语言中文分词第三方库jieba对文件data.txt行分词,并将结果写入文件out.txt,每行一个词,例如:
内容简介
编辑
整个
故事
在
东汉
...
在考生文件夹下给出了程序框架文件PY301-1.py,补充代码完成程序(10分)
问题2:对文件out.txt进行分析,打印输出曹操出现次数。
在考生文件夹下给出了程序框架文件PY301-2.py,补充代码完成程序(10分)
问题一代码
python
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()
问题二代码
python
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
print("曹操出现次数为:{} ".format(D["曹操"]))
真题6
1、考生文件夹下存在一个文件PY101.py,请写代码替换横线,不修改其他代码,实现以下功能:
键盘输入正整数n,按要求把n输出到屏幕,格式要求:宽度为14个字符,数字中间对齐,不足部分用=填充。
例如:键盘输入正整数n为1234,屏幕输出=1234=
代码
python
n = eval(input("请输入正整数:"))
print("{:=^14}".format(n))
2、考生文件夹下存在一个文件PY102.py,请写代码替换横线,不修改其他代码,实现以下功能:
a和b是两个列表变量,列表a为[3,6,9]已给定,键盘输入列表b,将a列表的三个元素插入到b列表中对应的前三个元素的后面,并显示输出在屏幕上。
例如:键盘输入列表b为[1,2,3],因此,屏幕输出计算结果为[1,3,2,6,3,9]
代码
python
a = [3,6,9]
b = eval(input()) #例如:[1,2,3]
j=1
for i in range(len(a)):
b.insert(j,a[i])
j+= 2
print(b)
3、考生文件夹下存在一个文件PY103.py,请写代码替换横线,不修改其他代码,实现以下功能:
以100为随机数种子,随机生成3个在1(含)到9(含)之间的随机整数,计算这三个随机整数的立方和。
代码
python
import random
random.seed(100) # 此处可多行
s = 0 #
for i in range(3):
n=random.randint(1,9)
s=s+n**3# 此处可多行
print(s)
4 、使用turtle库的turtle.fd()函数和turtle.seth()函数绘制一个边长为100像素的正五边形,在考生文件夹下给出了程序框架文件PY201.py,在横线处补充代码,不得修改其他代码。效果如下图所示。
代码
python
import turtle
turtle.pensize(2)
d = 0
for i in range(1,6):
turtle.fd(100)
d += 72
turtle.seth(d)
5、使用字典和列表型变量完成最有人气的明星的投票数据分析。投票信息由考生文件夹下文件vote.txt给出,一行只有一个明星姓名的投票才是有效票。有效票中得票最多的明星当选最有人气的明星。
问题1:请统计有效票张数。在考生文件夹下给出了程序框架文件PY202-1.py,补充代码完成程序(7分)
问题2:请给出当选最有人气明星的姓名和票数,在考生文件夹下给出了程序框架文件PY202-2.py,补充代码完成程序(8分)。
问题一代码
python
f = open("vote.txt")
names = f.readlines()
f.close()
n = 0
for name in names:
num = len(name.split())
if num==1:
n+=1
print("有效票{}张".format(n))
问题二代码
python
f = open("vote.txt")
names = f.readlines()
f.close()
D = {}
for name in names:
if len(name.split())==1:
D[name[:-1]]=D.get(name[:-1],0) + 1
l = list(D.items())
l.sort(key=lambda s:s[1],reverse=True)
name = l[0][0]
score = l[0][1]
print("最具人气明星为:{},票数为:{}".format(name,score))
6、考生文件夹下的文件data.txt是一个来源于网上的技术信息资料。
问题1:(10分)在考生文件夹下给出了程序框架文件PY301-1.py,补充代码完成程序。用Python语言中文分词第三方库jieba对文件data.txt进行分词,并选择长度大于等于3个字符的关键词,写入文件out1.txt,每行一个关键词,各行的关键词不重复,输出顺序不做要求,例如:
人工智能
科幻小说
...
问题2:(10分)在考生文件夹下给出了程序框架文件PY301-2.py,补充代码完成程序。对文件data.txt进行分词,对长度不少于3个字符的关键词,统计出现的次数,按照出现次数由大到小的顺序输出到文件out2.txt,每行一个关键词及其出现次数,例如:
科学家:2
达特茅斯:1
...
问题一代码
python
import jieba
f = open('data.txt','r')
lines=f.readlines()
f.close()
D=[]
for line in lines:
wordList=jieba.lcut(line)#用结巴分词,对每行内容进行分词
for word in wordList:
if len(word)<3: #判断词长度,要大于等于3个长度
continue
else:
if word not in D:
D.append(word)
f=open('out1.txt','w')
f.writelines('\n'.join(D))
f.close()
问题二代码
python
import jieba
f=open("data.txt","r")
lines=f.readlines()
f.close()
d = {}
for line in lines:
wordList=jieba.lcut(line) #用结巴分词,对每行内容进行分词
for word in wordList:
if len(word)<3:
continue
else:
d[word]=d.get(word,0)+1
ls=list(d.items())
ls.sort(key=lambda x:x[1],reverse=True)#按照词频由高到低排序
f=open('out2.txt','w')
for i in range(len(ls)):
f.write('{}:{}\n'.format(ls[i][0],ls[i][1]))
f.close()
真题7
1、考生文件夹下存在一个文件PY101.py,请写代码替换横线,不修改其他代码,实现以下功能:
键盘输入正整数s,按要求把s输出到屏幕,格式要求:宽度为25个字符,等号字符(=)填充,右对齐,带千位分隔符。如果输入正整数超过25位,则按照真实长度输出。
例如:键盘输入正整数s为1234,屏幕输出====================1,234
代码
python
s = input()
print("{:=>25,}".format(eval(s)))
2、获得用户输入的一个字符串,将字符串逆序输出,同时紧接着输出字符串的个数,请完善PY102.py中代码。
代码
python
s = input()
print(s[::-1],end="")
print(len(s))
3、获得用户输入的以逗号分隔的三个数字,记为a、b、c,以a为起始数值,b为差,c为数值的数量,产生一个递增的等差数列,将这个数列以列表格式输出,请完善PY103.py中代码。
代码
python
a, b, c = eval(input())
ls = []
for i in range(c):
ls.append(a+b*i)
print(ls)
4 、使用turtle库的turtle.fd()函数和turtle.seth()函数绘制一个边长为40像素的正12边形,在考生文件夹下给出了程序框架文件PY201.py,在横线处补充代码,不得修改其他代码。效果如下图所示。
代码
python
import turtle
turtle.pensize(2)
d=0
for i in range(1, 13):
turtle.fd(40)
d += 30
turtle.seth(d)
5、计算两个列表ls和lt此对应元素乘积的和(即向量积),补充PY202.py文件。
ls = [111,222,333,444,555,666,777,888,999]
lt = [999,777,555,333,111,888,666,444,222]
代码
python
ls = [111, 222, 333, 444, 555, 666, 777, 888, 999]
lt = [999, 777, 555, 333, 111, 888, 666, 444, 222]
s = 0
for i in range(len(ls)):
s+=ls[i]*lt[i]
print(s)
6、某班学生评选一等奖学金,学生的10门主干课成绩存在考生文件夹下文件score.txt中,每行为一个学生的信息,分别记录了学生学号、姓名以及10门课成绩,格式如下:
1820161043 郑珉镐 68 66 83 77 56 73 61 69 66 78
1820161044 沈红伟 91 70 81 91 96 80 78 91 89 94
......
从这些学生中选出奖学金候选人,条件是:1)总成绩排名在前10名;2)全部课程及格(成绩大于等于60)。
问题1:给出按总成绩从高到低排序的前10名学生名单,并写入文件candidate0.txt,每行记录一个学生的信息,分别为学生学号、姓名以及10门课成绩。补充考生文件夹下文件PY301-1.py,完成这一功能。
问题2:读取文件candidate0.txt,从中选出候选人,并将学号和姓名写入文件candidate.txt格式如下:
1010112161722 张三
1010112161728 李四
......
补充考生文件夹下文件PY301-2.py.完成这一功能
问题一代码
python
fi = open('score.txt','r')
fo = open('candidate0.txt','w')
ls = fi.readlines()
L=[] #L中的元素是学生原始成绩和总成绩
D=[] #存放每个学生的信息
for line in ls:
s = 0 #每个学生的总成绩
D=line.strip('\n').split()
for i in D[2:]:
s+=int(i)
D.append(s)
L.append(D)
L.sort(key=lambda x:x[-1],reverse=True) #按学生总成绩从大到小排序
for k in range(10):
fo.write(' '.join(L[k][:-1])+'\n')
fi.close()
fo.close()
问题二代码
python
fi = open('candidate0.txt','r')
fo = open('candidate.txt','w')
ls = fi.readlines()
for line in ls:
lt = line.split()
for i in lt[2:]:
if int(i)<60:
break
else:
fo.write(' '.join(lt[:2])+'\n')
fi.close()
fo.close()
真题8
1、获得用户输入的一个数字,对该数字以30字符宽度,十六进制,居中输出,字母小写,多余字符采用双引号(")填充,请完善PY101.py中代码。
代码
python
s = input()
print("{:\"^30x}".format(eval(s)))
2、获得用户输入的一个数字,其中数字字符(0到9)用对应的中文字符"〇---二三四五六七八九"替换,输出替换后的结果,请完善PY102.py中的代码。
代码
python
n = input()
s = "〇一二三四五六七八九"
for c in "0123456789":
n=n.replace(c,s[int(c)])
print(n)
3、获得用户输入的以逗号分隔的三个数字,记为a、b、c,以a为起始数值,b为前后相邻数的比值,c为数列长度,产生一个等比数列,将这个数列以逗号分隔的形式输出,最后一个元素输出后无逗号,请完善PY103.py中代码。
代码
python
a, b, c = eval(input())
ls = []
for i in range(c):
ls.append(str(a*(b**i)))
print(",".join(ls))
4 、使用turtle库的turtle.fd()函数和turtle.left()函数绘制一个边长为200像素的正方形及一个紧挨四个顶点的圆形,在考生目录下给出了程序框架文件PY201.py,在横线处补充代码,不得修改其他代码。效果如下图所示。
代码
python
import turtle
turtle.pensize(2)
for i in range(4):
turtle.fd(200)
turtle.left(90)
turtle.left(-45)
turtle.circle(100*pow(2,0.5))
5、获得用户的非数字输入,如果输入中存在数字,则要求用户重新输入,直至满足条件为止,并输出用户输入字符的个数,完善PY202.py文件中的代码。
代码
python
while True:
s = input("请输入不带数字的文本:")
i=0
for p in s:
if "0"<=p<="9":
i=i+1
if i==0:
break
print(len(s))
6、考生文件夹下的文件data.txt是教育部中国大学MOOC平台的某个HTML页面源文件,里面包含了我国参与MOOC建设的一批大学或机构列表。
问题1:请编写程序,从data.txt中提取大学或机构名称列表,将结果写入文件univ.txt,每行一个大学或机构名称,按照大学或机构在data.txt出现的先后顺序输出,样例如下:
...
北京理工大学
...
北京师范大学
...
提示:所有大学名称在data.txt文件中以alt="北京理工大学"形式存在。在考生文件夹下给出了程序框架文件PY301-1.py,补充代码完成程序(10分)
问题2:请编写程序,从univ.txt文件中提取大学名称,大学名称以出现"大学"或"学院"字样为参考,但不包括"大学生"等字样,将所有大学名称在屏幕上输出,大学各行之间没有空行,最后给出名称中包含"大学"和"学院"的名称数量,同时包含"大学"和"学院"的名称以结尾的词作为其类型。样例如下(样例中数量不是真实结果):
...
北京理工大学
...
长沙师范学院
...
包含大学的名称数量是10
包含学院的名称数量是10
在考生文件夹下给出了程序框架文件PY301-2.py,补充代码完成程序(10分)
问题一代码
python
f=open("data.txt","r")
lines=f.readlines()
f.close()
f = open("univ.txt", "w")
for line in lines:
if 'alt' in line: #判断是否有alt,若有则用'alt'分割,分割后再用'"'分割
dx=line.split('alt=')[-1].split('"')[1]
f.write('{}\n'.format(dx))
f.close()
问题二代码
python
n = 0
m=0
f = open("univ.txt", "r")
lines=f.readlines()
f.close()
for line in lines:
if '大学生' in line:
continue
elif '大学' in line:
print('{}'.format(line))
n+=1
elif '学院' in line:
print('{}'.format(line))
m+=1
print("包含大学的名称数量是{}".format(n))
print("包含学院的名称数量是{}".format(m))
真题来源:小黑课堂计算机二级python题库