测评会员优惠活动进行中 · 开通 VIP,有效期内测评不限次 VIP 优惠中 · 测评不限次 立即查看

A26001. 传感器采集数据在人工智能的多模态数据处理中,不同传感器采集的特征数据需要融合。每个传感器用唯一ID标识,数据格式为“ID:特征值”。编写程序将多个传感器的特征值合并,并计算每个ID的加权调和平均数(权重由出现次数决定)。 给定若干行传感器数据(格式为 ID:值),请按以下规则处理:数据去重:同一ID的重复数据仅保留最后一次出现的值; 权重计算:统计每个ID的数据出现总次数 ;融合计算:输出每个I…

填空题 困难

题目描述

传感器采集数据

在人工智能的多模态数据处理中,不同传感器采集的特征数据需要融合。每个传感器用唯一ID标识,数据格式为“ID:特征值”。

编写程序将多个传感器的特征值合并,并计算每个ID的加权调和平均数(权重由出现次数决定)。 给定若干行传感器数据(格式为 ID:值),请按以下规则处理:

数据去重:同一ID的重复数据仅保留最后一次出现的值;

权重计算:统计每个ID的数据出现总次数 ;

融合计算:输出每个ID的值*出现次数(即权重与最后值的乘积)。

例如:

输入:

TempS:20 
PressS:150 
TempS:25 
HumS:60

输出:

HumS:60 
PressS:150 
TempS:50 # TempS出现2次,最后值为25 → 25*2=50

下面是小明编写的Python代码,请你将空白内容补充完整。

sensor_info = {} # 存储每个传感器 ID 的最后值和出现次数
while True:
    data_line = input()# 获取用户输入的一行数据
    if data_line == 'p':# 假设当输入p时停止输入
       break
    parts = data_line.split(':')# 把输入的行按冒号分割成 ID 和值
    sensor_id = parts[______ ① ______]
    sensor_value = float(parts[1])
    if sensor_id in sensor_info: # 检查这个 ID 是否已经在字典里
        sensor_info[sensor_id][0] = sensor_value
        sensor_info[sensor_id][1] = sensor_info[sensor_id][______ ② ______] + 1 #统计出现次数
    else:
        sensor_info[sensor_id] = [sensor_value, 1]

if len(sensor_info) == 0:# 检查字典里是否没有数据
    print("NULL")

else:
    sorted_ids = sorted(______ ③ ______ )# 对字典里的 ID 进行排序
    for current_id in ______ ④ ______ :
        last_value = sensor_info[current_id][0]
        count = sensor_info[current_id][1]
        # 计算加权值
        weighted_value = ______ ⑤        
        print(f"{current_id}:{weighted_value}")

参考答案

# 初始化一个空字典,用来存储每个传感器 ID 的最后值和出现次数 # 字典的键是传感器 ID,值是一个列表,列表的第一个元素是最后值,第二个元素是出现次数 sensor_info = {} while True: # 获取用户输入的一行数据 data_line = input() # 当输入为 EOF 时,结束输入循环 # 假设当输入p时停止输入 if data_line == 'p': break # 把输入的行按冒号分割成 ID 和值 parts = data_line.split(':') sensor_id = parts[0] sensor_value = float(parts[1]) # 检查这个 ID 是否已经在字典里 if sensor_id in sensor_info: # 如果在,更新最后值为当前值 sensor_info[sensor_id][0] = sensor_value # 并且把出现次数加 1 sensor_info[sensor_id][1] = sensor_info[sensor_id][1] + 1 else: # 如果不在,在字典里添加这个 ID,并记录初始值和出现次数为 1 sensor_info[sensor_id] = [sensor_value, 1] # 检查字典里是否没有数据 if len(sensor_info) == 0: # 如果没有数据,输出 NULL print("NULL") else: # 对字典里的 ID 进行排序 sorted_ids = sorted(sensor_info.keys()) # 遍历排序后的 ID for current_id in sorted_ids: # 获取当前 ID 的最后值和出现次数 last_value = sensor_info[current_id][0] count = sensor_info[current_id][1] # 计算加权值 weighted_value = last_value * count # 输出结果 print(f"{current_id}:{weighted_value}")

答案解析

评分标准:

(1)0 (或等效答案);(2分)

(2)1 (或等效答案); (2分)

(3)sensor_info.keys() (或等效答案);(2分)

(4)sorted_ids (或等效答案);(2分)

(5)last_value * count (或等效答案)。(2分)

上一题 下一题