计算机二级python真题



文章目录

  • 计算机二级python真题
  • 一、简单应用题——计算向量的內积
  • 二、综合应用题——血压值分析输出



python计算两个向量的相关性 python计算向量内积_python计算两个向量的相关性


一、简单应用题——计算向量的內积

从键盘接收一个整数n作为一维向量的长度,然后输入n个整数,以逗号隔开,存成一个向量x;再接收另n个整数,以逗号隔开,存成另一个向量y。计算两个向量对应元素的乘积的和,在屏幕上输出结果。如果用户输入数据时,输入了非整数和非英文逗号的内容,给出错误提示,并要求重新输入。‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬

计算两个向量的对应元素的乘积的和,也叫向量的内积,计算公式如下:

python计算两个向量的相关性 python计算向量内积_python计算两个向量的相关性_02


示例:

输入: “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]))
    #输出左右臂的高压最大值、低压最大值、压差平均值、高压平均值、低压平均值