题型:编程题
传感器采集数据
在人工智能的多模态数据处理中,不同传感器采集的特征数据需要融合。每个传感器用唯一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}")
更新时间:2025-07-24 10:17:45
|
【知识点】
电子学会Python五级
抱歉! 您未登录, 不能查看答案和解析点击登录
相似题推荐
单选题
埃氏筛中将内层循环从j = i*i 开始而不是j = 2*i 的主要原因是()。
def eratosthenes_sieve_for(n): if n < 2: return [] is_composite = [False] * (n + 1) primes = [] for i in range(2, n + 1): if is_composite[i]: continue primes.append(i) # 用for循环模拟C++的 j = i*i; j <=n; j +=i for j in range(i * i, n + 1, i): is_composite[j] = True return primes
| A. 因为2*i 一定不是合数 |
B. i*i 一定是质数 |
| C. 小于i*i 的i 的倍数已被更小质因子筛过 |
D. 这样可以把时间复杂度降为O(n) |
2026-09-14
单选题
对如下代码实现的欧几里得算法(辗转相除法),调用gcd(48 , 18) 得到的调用序列为()。
def gcd(a, b): if b == 0: return a else: return gcd(b, a % b)
| A.gcd(48 ,18) -> gcd(18 ,12) -> gcd(12 ,6) -> gcd(6 ,0) | B.gcd(48 ,18) -> gcd(30 ,18) -> gcd(12 ,18) |
| C.gcd(48 ,18) -> gcd(18 ,30) -> gcd(30 ,6) | D.gcd(48 ,18) -> gcd(12 ,18) -> gcd(6 ,12) |
2026-09-14
单选题
下面代码用分治求“最大连续子段和”,其时间复杂度为()。
import sys def solve(a , l , r): if l == r: return a [l] mid = l + (r - l) // 2 left = solve(a , l , mid) right = solve(a , mid + 1 , r) sum_val = 0 lmax = -sys .maxsize - 1 for i in range(mid , l - 1 , -1): sum_val += a [i] lmax = max (lmax , sum_val) sum_val = 0 rmax = -sys .maxsize - 1 for i in range(mid + 1 , r + 1): sum_val += a [i] rmax = max (rmax , sum_val) return max(left , right , lmax + rmax) if __name__ == "__main__": a1 = [-2 , 1 , -3 , 4 , -1 , 2 , 1 , -5 , 4] print(solve(a1 , 0 , len(a1)-1)) a2 = [-5 , -3 , -1 , -4] print(solve(a2 , 0 , len(a2)-1)) a3 = [10] print(solve(a3 , 0 , 0))
| A. O(n2) |
B. O(nlogn) |
| C. O(logn) |
D. O(n) |
2026-09-14
