Python等級考試一道關於血壓的綜合題解析

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 += 1
    else:
        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

小結:
剛開始上手是有點蒙的,上手做幾次,多體會,感覺也沒有那麼難,核心還是讀懂題意,領會框架意圖,提高代碼熟練度,還是可以搞定的!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章