全国计算机等级考试二级Python(2021年9月)备考笔记 第十四天
Posted 张同学啦
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了全国计算机等级考试二级Python(2021年9月)备考笔记 第十四天相关的知识,希望对你有一定的参考价值。
文章目录
Python 二级等考(第三季)精品题5
单项选择题
第一题
第二题
第三题
第四题
第五题
第六题
第七题
第八题
第九题
第十题
第十一题
第十二题
第十三题
第十四题
第十五题
第十六题
第十七题
第十八题
第十九题
第二十题
第二十一题
第二十二题
第二十三题
第二十四题
第二十五题
第二十六题
第二十七题
第二十八题
第二十九题
第三十题
第三十一题
第三十二题
第三十三题
第三十四题
第三十五题
第三十六题
第三十七题
第三十八题
第三十九题
第四十题
程序设计题
第一题
#解法一
ls= input().split(',') #将从键盘上输入的用逗号隔开的字符串转换为列表
#例如输入:10,@
#ls为['10', '@']
#ls[0]为'10' ,eval(ls[0])*2+len(ls[0])表达式值为22
#ls[1]为'@'
print(ls[0].center(eval(ls[0])*2+len(ls[0]),ls[1]))
#'10'.center(22,"@")即为输出结果,考察字符串的center方法
#str.center(x,y) 会用字符串str构造一个新的字符串,
#新的字符串长度是x, 两边填充y。此处的x是数字,y是填充字符
# str:'10'
# x:22
# y:"@"
#输出结果为"@@@@@@@@@@10@@@@@@@@@@"
'''
参考讲解:
1. 理解 input 的结果是返回一个字符串
2. split 是字符串的方法,能够以逗号把字符串分割成列表,但列表的元素都是字符串
3. 用 ls[0] 和 ls[1] 分别取得输入的数字和后面的符号
4. 题目要求用一行表达式来解决这个问题,所以增加了难度
5. 此时要想起来用字符串的操作方法 center,问题就迎刃而解了,这个方法 str.center(x,y) 会用字符串 str 构造一个新的字符串,新的字符串长度是 x , 两边填充 y。此处的 x 是数字,y 是字符
6. 要记得 ls[0] 里的 10 是一个字符串,所以要记得用 eval 把它变成数字,乘 2,加上 10 自己的长度,就得到了所需的 x;y 就是 ls[1] 里的字符
7. 这道题关键是深入理解,并灵活运用 center
'''
#解法二
ls= input().split(',')
print(eval(ls[0])*ls[1]+ ls[0] + eval(ls[0])*ls[1])
第二题
#studs列表中的元素是字典
studs= [{'sid':'103','Chinese': 90},
{'sid':'101','Chinese': 80},
{'sid':'102','Chinese': 70}]
scores = {}
for stud in studs:
sv = stud.items() #sv被赋值为二维列表,形如[('sid','103'),('Chinese',90)]
for it in sv:
if it[0] == 'sid': #第一次访问:it = ('sid','103')
k = it[1] # k = '103'
else: #第二次访问:it = ('Chinese',90) it[1] = 90
scores[k] = it[1] #scores["103"] = 90
so = list(scores.items()) #形如:[('103':90),('101':80),...]
so.sort(key = lambda x:x[0],reverse = False) #按学号进行排序
for l in so:
print('{}:{}'.format(l[0],l[1])) #遍历输出排序后结果
'''
要点:
1. 字典作为元素,定义在列表里,用列表的遍历就可以从中提取出来
2. 提取出来的元素直接就是字典,因此可以用 items()直接获取,形成键值对对象集合 sv;
3. 对键值对对象集合sv遍历,就可以以元组it的方式访问其中的每一对键值对,sv = stud.items(),是第一个空的答案;
4. 题目要求提取学生的学号,所以需要比较键it[0]是否是'sid',是则将学号it[1]提取出来作为新的字典scores的键k;不是则将成绩提取出来作为新字典scores的值,scores[k] = v,是第二个空的答案
5. 经过对studs列表里的各条字典处理完之后,新的scores字典就全部生成。
6. 题目要求按学号从小到大的顺序输出学号和成绩,所以需要对字典的键值对内容items()提取到列表so里,此处是第三个空的答案:so = list(scores.items())
7. 用Lambda函数进行排序。这个不在考试范围里,所以代码模板直接给出语句;
8. 对排好序的列表输出每组列表。
'''
第三题
#代码如下:
import jieba
Tempstr = input()
ls = jieba.lcut(Tempstr)
print(ls)
第四题
#代码如下:
r = 10
dr = 50
head = 90
for i in range (4):
turtle.pendown()
turtle.circle(r)
r += dr
turtle.penup()
turtle.seth(-head)
turtle.fd(dr)
turtle.seth(0)
turtle.done()
第五题
flag = 1
while flag:
try:
n = eval(input())
xin = input().split(',')
yin = input().split(',')
flag =0
sum = 0
for i in range(n):
sum += int(xin[i]) * int(yin[i])
print("x和y的内积是:", sum)
except:
print("请输入整数!")
flag =1
第六题
#代码如下:
jl = [[],[],[],[],[]] # 定义空的二维列表jl,例如:
#jl[1]用于存放左臂高压值:[104,154,131,...]
#jl[2]用于存放左臂低压值:[82,88,82,...]
#jl[3]用于存放右臂高压值:[136,155,139,...]
#jl[4]用于存放右臂低压值:[90,85,74,...]
zyc = [] #存放左臂压差值列表[22,66,...]
yyc = [] #存放右臂压差值列表[46,60,...]
#用with语句打开xueyajilu.txt文件
with open("xueyajilu.txt", 'r',encoding='utf-8') as fi:
for l in fi: #对文件中的每一行内容进行处理
if len(l): #过滤空行
lls = l.split(',')
#print(l.split(','))
#例如第一行的lls:['2018/7/2 6:00', '140', '82', '136', '90']
#注意第一列是时间,不需要,跳过
for i in range(1,5): #i从1开始,就是为了跳过第一列时间
jl[i].append(eval(lls[i])) #构建二维列表jl
zyc.append(eval(lls[1])- eval(lls[2])) #左臂压差:左臂高压值 - 左臂低压值
yyc.append(eval(lls[3])- eval(lls[4])) #右臂压差:右臂高压值 - 右臂低压值
cnt = len(zyc) #记录条数
res = [] #构建对比表
res.append(list(("高压最大值",max(jl[1]),max(jl[3]))))
#"高压最大值"、左臂高压最大值和右臂高压最大值构建列表增加到res[0]
res.append(list(("低压最大值",max(jl[2]),max(jl[4]))))
#"低压最大值"、左臂低压最大值和右臂低压最大值构建列表增加到res[1]
res.append(list(("压差平均值",sum(zyc)//cnt,sum(yyc)//cnt)))
#"压差平均值"、左臂高低压差平均值和右臂高低压差平均值构建列表增加到res[2] //:取整除 - 返回商的整数部分(向下取整)
res.append(list(("高压平均值",sum(jl[1])//cnt,sum(jl[3])//cnt)))
#"高压平均值"、左臂高压平均值和右臂高压平均值构建列表增加到res[3] //:取整除 - 返回商的整数部分(向下取整)
res.append(list(("低压平均值",sum(jl[2])//cnt,sum(jl[4])//cnt)))
#"低压平均值"、左臂低压平均值和右臂低压平均值构建列表增加到res[4] //:取整除 - 返回商的整数部分(向下取整)
print('{0:<10}{1:<10}{2:<10}'.format("对比项", "左臂", "右臂")) #输出标题行
for r in range(len(res)):
print('{0:<10}{1:<10}{2:<10}'.format(res[r][0],res[r][1],res[r][2]))
#输出左右臂的高压最大值、低压最大值、压差平均值、高压平均值、低压平均值
输出结果:
对比项 左臂 右臂
高压最大值 168 155
低压最大值 93 90
压差平均值 62 60
高压平均值 147 141
低压平均值 85 81
要点:
1. 这道题的关键问题是把数据按照列的方式来处理
2. 参考答案给出的是一般思路,把文件里读出来的数据分别按列的方式,拷贝到一维列表中去,对一维列表进行各种max,min,sum,len操作
3. 其次,是当列数有些多的时候,程序看起来很冗余,需要做一些优化合并
4. 前四个计算公式类似的,放到一个二维列表里,加个循环结构,就可以把四条语句缩成一条
5. 显示输出要求像表格一样输出,又要比较高效率,就引入了一个二维列表,把要输出的行头和内容,变成列表,再加到二维列表中去
以上是关于全国计算机等级考试二级Python(2021年9月)备考笔记 第十四天的主要内容,如果未能解决你的问题,请参考以下文章
python日期转换 青少年编程电子学会python编程等级考试二级真题解析2021年9月