计算机二级python真题
文章目录
- 计算机二级python真题
- 一、简单应用题——计算向量的內积
- 二、综合应用题——血压值分析输出
一、简单应用题——计算向量的內积
从键盘接收一个整数n作为一维向量的长度,然后输入n个整数,以逗号隔开,存成一个向量x;再接收另n个整数,以逗号隔开,存成另一个向量y。计算两个向量对应元素的乘积的和,在屏幕上输出结果。如果用户输入数据时,输入了非整数和非英文逗号的内容,给出错误提示,并要求重新输入。
计算两个向量的对应元素的乘积的和,也叫向量的内积,计算公式如下:
示例:
输入: “3 1,2,3 4,5,6”
输出: “x和y的内积是: 32”
注意: "x和y的内积是: 32"的输出中英文冒号和32之间有一个英文空格。
代码:
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
二、综合应用题——血压值分析输出
老王的女儿给老王测血压,在文件 xueyajilu.txt 中记录了一段时间的血压测量值。文件中每行是一条记录,包含5个值:测量时间、左臂高压值、左臂低压值、右臂高压值、右臂低压值,每个字段用英文逗号隔开,示例格式如下:
2018/7/2 6:00,140,82,136,90
2018/7/2 15:28,154,88,155,85
2018/7/3 6:30,131,82,139,74
2018/7/3 16:49,145,84,139,85
2018/7/4 5:03,152,87,131,85
…
使用字典和列表类型进行数据分析,输出老王的
- 左臂和右臂的高压最大值、低压最大值
- 左臂和右臂的高-低压差平均值
- 左臂和右臂的高压平均值、低压平均值
请注意每行三列对齐。输出的整数向下取整。
示例:
输入: 读取文件 xueyajilu.txt 内容
输出:
对比项 | 左臂 | 右臂 |
高压最大值 | 168 | 155 |
低压最大值 | 93 | 90 |
压差平均值 | 62 | 60 |
高压平均值 | 147 | 141 |
低压平均值 | 85 | 81 |
代码:
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]))
#输出左右臂的高压最大值、低压最大值、压差平均值、高压平均值、低压平均值