文章目录
- Python 二级等考(第三季)精品题5
-
- 单项选择题
-
- 第一题
- 第二题
- 第三题
- 第四题
- 第五题
- 第六题
- 第七题
- 第八题
- 第九题
- 第十题
- 第十一题
- 第十二题
- 第十三题
- 第十四题
- 第十五题
- 第十六题
- 第十七题
- 第十八题
- 第十九题
- 第二十题
- 第二十一题
- 第二十二题
- 第二十三题
- 第二十四题
- 第二十五题
- 第二十六题
- 第二十七题
- 第二十八题
- 第二十九题
- 第三十题
- 第三十一题
- 第三十二题
- 第三十三题
- 第三十四题
- 第三十五题
- 第三十六题
- 第三十七题
- 第三十八题
- 第三十九题
- 第四十题
- 程序设计题
-
Python 二级等考(第三季)精品题5
单项选择题
第一题
第二题
第三题
第四题
第五题
第六题
第七题
第八题
第九题
第十题
第十一题
第十二题
第十三题
第十四题
第十五题
第十六题
第十七题
第十八题
第十九题
第二十题
第二十一题
第二十二题
第二十三题
第二十四题
第二十五题
第二十六题
第二十七题
第二十八题
第二十九题
第三十题
第三十一题
第三十二题
第三十三题
第三十四题
第三十五题
第三十六题
第三十七题
第三十八题
第三十九题
第四十题
程序设计题
第一题
ls= input().split(',')
print(ls[0].center(eval(ls[0])*2+len(ls[0]),ls[1]))
'''
参考讲解:
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= [{
'sid':'103','Chinese': 90},
{
'sid':'101','Chinese': 80},
{
'sid':'102','Chinese': 70}]
scores = {
}
for stud in studs:
sv = stud.items()
for it in sv:
if it[0] == 'sid':
k = it[1]
else:
scores[k] = it[1]
so = list(scores.items())
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 = [[],[],[],[],[]]
zyc = []
yyc = []
with open("xueyajilu.txt", 'r',encoding='utf-8') as fi:
for l in fi:
if len(l):
lls = l.split(',')
for i in range(1,5):
jl[i].append(eval(lls[i]))
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.append(list(("低压最大值",max(jl[2]),max(jl[4]))))
res.append(list(("压差平均值",sum(zyc)//cnt,sum(yyc)//cnt)))
res.append(list(("高压平均值",sum(jl[1])//cnt,sum(jl[3])//cnt)))
res.append(list(("低压平均值",sum(jl[2])//cnt,sum(jl[4])//cnt)))
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. 显示输出要求像表格一样输出,又要比较高效率,就引入了一个二维列表,把要输出的行头和内容,变成列表,再加到二维列表中去