计算机二级(python)【二】

真题5

1、考生文件夹下存在一个文件PY101.py,请写代码替换横线,不修改其他代码,实现以下功能:

键盘输入正整数n,按要求把n输出到屏幕,格式要求:宽度为15个字符,数字右边对齐,不足部分用*填充。

例如:键盘输入正整数n为1234,屏幕输出***********1234

代码

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]

代码

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(含)之间的随机数,计算这五个随机数的平方和。

代码

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,在横线处补充代码,不得修改其它代码。效果如下图所示。
在这里插入图片描述

代码

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,补充代码完成程序。

代码

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分)

问题一代码

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()

问题二代码

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=

代码

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]

代码

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(含)之间的随机整数,计算这三个随机整数的立方和。

代码

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,在横线处补充代码,不得修改其他代码。效果如下图所示。
在这里插入图片描述

代码

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分)。

问题一代码

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))

问题二代码

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

问题一代码

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()

问题二代码

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

代码

s = input()
print("{:=>25,}".format(eval(s)))

2、获得用户输入的一个字符串,将字符串逆序输出,同时紧接着输出字符串的个数,请完善PY102.py中代码。

代码

s = input()
print(s[::-1],end="")
print(len(s))

3、获得用户输入的以逗号分隔的三个数字,记为a、b、c,以a为起始数值,b为差,c为数值的数量,产生一个递增的等差数列,将这个数列以列表格式输出,请完善PY103.py中代码。

代码

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,在横线处补充代码,不得修改其他代码。效果如下图所示。
在这里插入图片描述

代码

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]

代码

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.完成这一功能

问题一代码

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()

问题二代码

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中代码。

代码

s = input()
print("{:\"^30x}".format(eval(s)))

2、获得用户输入的一个数字,其中数字字符(0到9)用对应的中文字符“〇—二三四五六七八九”替换,输出替换后的结果,请完善PY102.py中的代码。

代码

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中代码。

代码

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,在横线处补充代码,不得修改其他代码。效果如下图所示。
在这里插入图片描述

代码

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文件中的代码。

代码

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分)

问题一代码

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()

问题二代码

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题库

  • 18
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值