汉明距离函数始终返回‘Sensor defect detected’问题排查求助
问题分析与解决
- 核心错误:循环中你把
signal_1['data']整个列表赋值给了str1,而非对应索引的单个字符串。signal_1['data']是长度为6的列表,signal_2[i]是长度为8的字符串,两者长度必然不相等,因此触发len(str1) != len(str2)的判断,直接返回“Sensor defect detected”。 - 冗余代码:for循环里的
i += 1完全多余,for循环会自动处理索引递增。
修正后的代码
def hamming_dist(signal_1, signal_2): result = [] if len(signal_1['times']) != len(signal_1['data']): return "Empty signal on at least one of the sensors" if len(signal_1['data']) != len(signal_2): return "Empty signal on at least one of the sensors" if len(signal_1) == 0 or len(signal_2) == 0: return "Empty signal on at least one of the sensors" if len(signal_1['data']) == len(signal_2): for i in range(len(signal_1['data'])): # 修正:取对应索引的单个字符串 str1 = signal_1['data'][i] str2 = signal_2[i] count_index = 0 ham_dist = 0 if len(str1) != len(str2): return "Sensor defect detected" while count_index < len(str1): if str1[count_index] != str2[count_index]: ham_dist += 1 count_index += 1 result.append((str1, str2, ham_dist)) return result signal_sensor_1 = {"times": [0, 1, 2, 3, 4, 5], "data": ["00101110", "11001011", "11110000", "01000011", "11001101", "00011011"]} signal_sensor_2 = ("00101110", "11001001", "11110011", "01111011", "11001101", "00011011") print(hamming_dist(signal_sensor_1, signal_sensor_2))
运行结果
修正后会输出每个对应信号对的汉明距离:
[('00101110', '00101110', 0), ('11001011', '11001001', 1), ('11110000', '11110011', 2), ('01000011', '01111011', 3), ('11001101', '11001101', 0), ('00011011', '00011011', 0)]
内容的提问来源于stack exchange,提问作者Su.mle
相关产品推荐
相关产品推荐

