Python等级考试一道关于血压的综合题解析

Python等级考试有道关于血压的综合题,某次模拟考试遇到过,有一定难度,当时没做出来,现在得空,就总结分析一下。

题目如下:
老王的女儿给老王测血压,记录了一段时间的血压测量值,在文件 xueyajilu.txt 中,每行是一条记录,包含:测量时间,左臂高压,左臂低压,右臂高压,右臂低压,心率;每个字段用英文逗号隔开,示例如下:‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬

2018/7/2 6:00,140,82,136,90,69
2018/7/2 15:28,154,88,155,85,63
2018/7/3 6:30,131,82,139,74,61
2018/7/3 16:49,145,84,139,85,73
2018/7/4 5:03,152,87,131,85,63 ‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬

(1)使用字典和列表类型进行数据分析,获取老王的‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬

左臂和右臂的血压平均值
左臂和右臂的高压最高值、低压最高值
左臂和右臂的高/低压差平均值
心率的平均值
给出左臂和右臂血压情况的对比表,输出到屏幕上,请注意每行三列对齐。输出的整数向下取整。示例如下:‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬

(2)上述显示的五个项目,如果左臂有 50%的测量值高于右臂的测量值,则输出“结论:左臂血压偏高”;如果等于 50% 的测量值高于右臂的测量值,则输出“结论:左臂血压与右臂血压相当”;如果小于 50% 的测量值高于右臂的测量值,则输出“结论:右臂血压偏高”。示例如下:‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬

结论:左臂血压偏高, 心率的平均值为66‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬

注意:本题目支持在线评测,请利用本地IDLE完善代码,编程调试至正确代码,并将编好的程序提交系统,得到评测结果。‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬

‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬

输入输出示例

为降低难度,题目给出了程序框架如下:

#在…处填写多行代码
#在_____出填写一行代码
#可以修改其他代码
fi = open("xueyajilu.txt",'r')
jl = [[],[],[],[],[],[]]   # 1:zb_h, zb_l,yb_h,yb_l
zyc = []
yyc = []
xl  = []
for l in fi:__________________...zyc.append(eval(lls[1])- eval(lls[2]))yyc.append(eval(lls[3])- eval(lls[4]))xl.append(eval(lls[5]))
fi.close()cnt =  _________
res = []
res.append(list(("高压最大值", ___________)))
res.append(list(("低压最大值", ___________)))
res.append(list(("压差平均值", ___________)))
res.append(list(("高压平均值", ___________)))
res.append(list(("低压平均值", ___________)))
res.append(list(("心率平均值", ____________)))zbg = 0
ybg = 0
print('{:<10}{:<10}{:<10}'.format("对比项", "左臂", "右臂"))
for r in range(len(res)-1):_____________________...if zbg > ybg:print(______________________)
elif zbg == ybg:print(______________________)
else:print('______________________)
print(', 心率的平均值为{}'.format(res[5][1]))

题目分析:
本题主要考查对二维数据的综合处理能力,即如何对二维数据提取,加工,并输出。
题目提供的程序框架在一定程度降低了编码难度,但同时也限制了开发的自由度。另外,由于它缺少必要的注释,给解题带来一定的困扰。

下面贴出博主的代码,并给出了详细的解释。

#在…处填写多行代码
#在_____出填写一行代码
#可以修改其他代码
fi = open("xueyajilu.txt",'r',encoding='utf-8')
jl = [[],[],[],[],[],[]]   # 1:zb_h, zb_l,yb_h,yb_l
#此处构造一个二维列表jl,用来存储本题的4个核心数据,即#zb_h,zb_l,yb_h,yb_l
#坑1:jl有6个元素,实际只用了4个
#坑2:存储是从jl[1]开始的, 1:zb_h算是个暗示吧
zyc = [] #左压差
yyc = [] #右压差
xl  = [] #心率
ls = []
#初始化一个二维列表ls,这是我的习惯,对于这种二维CSV数据,习惯先将其映射到一个二维列表中
for l in fi:ls.append(l.strip('\n').split(','))
for lls in ls:for i in range(1,5):jl[i].append(eval(lls[i]))# 4个核心数据,从lls[1]开始,这里用循环构造jl列表#用的eval(lls[i]),因为后面要计算zyc.append(eval(lls[1])- eval(lls[2]))yyc.append(eval(lls[3])- eval(lls[4]))xl.append(eval(lls[5]))
fi.close()cnt =  len(ls)
res = []
#读懂题意,用res这个二维列表存储结果
#max(list),
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)))
res.append(list(("心率平均值", sum(xl)//cnt,0)))zbg = 0
ybg = 0
print('{:<10}{:<10}{:<10}'.format("对比项", "左臂", "右臂"))
for r in range(len(res)-1):print('{:<10}{:<10}{:<10}'.format(res[r][0],res[r][1],res[r][2]))if res[r][1] > res[r][2]:zbg += 1else:ybg += 1
#注意:题意是基于结果res的5项数据决定左右臂血压高低的
if zbg > ybg:print('结论:左臂血压偏高',end='')
elif zbg == ybg:print('结论:左臂血压与右臂血压相当',end='')
else:print('结论:右臂血压偏高',end='')
print(', 心率的平均值为{}'.format(res[5][1]))

实际运行结果:
对比项 左臂 右臂
高压最大值 168 155
低压最大值 93 90
压差平均值 62 60
高压平均值 147 141
低压平均值 85 81
结论:左臂血压偏高, 心率的平均值为63

小结:
刚开始上手是有点蒙的,上手做几次,多体会,感觉也没有那么难,核心还是读懂题意,领会框架意图,提高代码熟练度,还是可以搞定的!


新的题库对题目进行了简化,去掉了心率,并仅输出res表,而不再比较左右臂数值。
现给出现在的解法,并对比较难理解的点给出注释

jl = [[],[],[],[],[]]   # 1:zb_h, zb_l,yb_h,yb_l
#创建一个空的二维列表,共5项,只用后面4项,血压记录是5项,有效数据时后4项,故保持一致,这也是实现的一个技巧。
zyc = []#左压差
yyc = []#右压差
with open("xueyajilu.txt", 'r',encoding='utf-8') as fi:
##因为要取到具体值,所以用2重循环,其中lls是每行的列表for l in fi:lls = l.strip().split(',')#填jl列表,某一列的数据转成一个列表,这也是一个技巧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('{:<10}{:<10}{:<10}'.format("对比项", "左臂", "右臂"))
for r in range(len(res)):print('{:<10}{:<10}{:<10}'.format(res[r][0], res[r][1], res[r][2]))
#目前的数据格式
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

Python等级考试一道关于血压的综合题解析相关推荐

  1. 电子学会2023年3月青少年软件编程python等级考试试卷(三级)真题,含答案解析

    目录 一.单选题(共25题,共50分) 二.判断题(共10题,共20分) 三.编程题(共3题,共30分) 青少年软件编程(Pythonÿ

  2. 电子学会2023年3月青少年软件编程python等级考试试卷(四级)真题,含答案解析

    目录 一.单选题(共25题,共50分) 二.判断题(共10题,共20分) 三.编程题(共3题,共30分)

  3. 电子学会2023年3月青少年软件编程python等级考试试卷(一级)真题,含答案解析

    目录 一.单选题(共25题,共50分) 二.判断题(共10题,共20分) 三.编程题(共2题,共30分)

  4. 中国电子学会python等级考试一级

    电子学会模拟测试指南 电子学会模拟测试指南_哔哩哔哩_bilibili Python学习无味?清华大佬把全套教程做成漫画版化解枯燥(附配套课件.源码.电子书) Python学习无味?清华大佬把全套教程 ...

  5. 2022年3月青少年软件编程(Python)等级考试试卷(一级真题)

    2022年3月青少年软件编程(Python)等级考试试卷(一级真题) 更多内容请查看网站: http://www.wancode.net 历年真题模拟题实时更新

  6. 2022.09 青少年Python等级考试(六级) 编程题部分

    2022.09 青少年Python等级考试   编程题部分(共3题,共30分) 36.小明编写一个类实现设置马的品种.年龄.性别及速度,输出相应的语句,请补全代码. 如下代码输出结果为"一匹 ...

  7. 2022.09 青少年Python等级考试(六级) 选择题部分

    2022.09 青少年Python等级考试(六级) 选择题部分 一.单选题(共25题,共50分) 1.以下关于Python二维数据的描述中,错误的是?( A ) A. 表格数据属于二维数据,由整数索引 ...

  8. 三级C语言上机考试试题与题解,全国计算机等级三级C语言上机试题逐题解析

    三级网络技术和三级数据库技术的C语言上机试题难度较大,题型多样,因此颇难掌握,今将这些试题分类解析,希望能帮大家顺利通过上机考试. 三级的上机题可以分为十几个类型,每类中的题目数量不一,多则十几道题, ...

  9. 2014c语言二级考试题,2014计算机二级等级考试试题:C语言模拟题

    ((1)-(10)每小题2分,(11)-(50)每题1分,共60分) 一 .下列各题A.B.C.D四个选项中,只有一个选项是正确的,请将正确选项涂写在答题卡相应位置上,答在试卷上不得分. (1)下列叙 ...

最新文章

  1. 人人都能看懂的 6 种限流实现方案!(纯干货)
  2. linux 查看数据库和表 mysql 命令
  3. [错误总结]升级spring-boot->2.6.2|hiberate->5.4.33.Final|spring cloud->2021.0.0 |spring admin->2.4.1
  4. 【英语学习】【医学】Unit 09 The Respiratory System
  5. python基本运算符
  6. Vue 学习笔记(3)路由的基本使用 结合 SpringBoot
  7. 华为防火墙USG6320透明模式配置
  8. java调用python机器学习模型的坑
  9. php 坏了怎么修复,winload.exe丢失或损坏怎么办
  10. SNMP学习笔记之SNMP TRAP简介、流程以及使用Python实现接受Trap信息
  11. java获取.py文件值_Java File文件处理 读文件
  12. 【C++】*P、P 、P的区别
  13. nodemcu(esp8266)u8g2 oled显示汉字获取网络时间
  14. [回归初作]——edge浏览器的小游戏
  15. 2009年世界顶级杀毒软件排行榜揭晓了
  16. s.length什么意思
  17. header-icon stm32实现圆弧插补,c语言代码实现
  18. 练习------复仇者联盟(设置一个立体盒子)
  19. 基本弹出窗口代码大全
  20. 三星s5刷机android+l,三星s5刷机教程与方法(卡刷第三方包)

热门文章

  1. 换钱 (Standard IO)——c++
  2. Kahn算法-拓扑排序
  3. 沈阳地铁线程规划图(地铁1号 -- 地铁5号)
  4. 卡特兰数 二叉树相关公式 二叉树ADT操作
  5. 【蓝桥杯Java_C组·从零开始卷】第四节(附)、河图洛书【九宫格】(卷王必备,不想卷的略过,使用优化暴力破解,与网上莫名其妙的规律不一样)
  6. CSS中如何让盒子里的文字自动换行
  7. Command python setup.py egg_info failed with error code 1 in C:\Users\ADMINI~1\AppData\Local\Temp\
  8. java源文件名的后缀是什么?
  9. Vue3.0 状态管理库Pinia的前世今生
  10. Google Play集成介绍