You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

汉明距离函数始终返回‘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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 02:01:12