偶数校验位客户端编号验证Python代码错误排查求助
10位客户端编号偶数校验位验证错误排查
常见错误原因
- 混淆十进制与二进制统计逻辑:误将数字的十进制数值之和作为判断依据,而非每个数字二进制形式中1的总数。
- 校验位处理逻辑错误:仅计算前9位的二进制1数量,用第10位的十进制数值直接补奇偶,未将校验位本身转成二进制后加入总数统计。
- 二进制1的计数方式错误:未正确统计单个数字二进制中1的个数(比如遗漏
bin(digit).count('1')的正确用法)。
修正后的代码实现
class ParityBitPython: @staticmethod def validate_client_number(client_number: str) -> bool: # 基础格式校验:长度10位且全为数字 if len(client_number) != 10 or not client_number.isdigit(): return False total_binary_ones = 0 # 遍历每个字符,统计所有数字二进制中1的总数 for num_char in client_number: digit = int(num_char) total_binary_ones += bin(digit).count('1') # 验证总数是否为偶数 return total_binary_ones % 2 == 0
测试用例验证
针对你提到的两个测试用例:
4864684516:逐个数字转二进制统计1的个数,总和为14(偶数),返回True9999999999:每个9的二进制是1001(含2个1),10个9的总1数为20(偶数),返回True
内容的提问来源于stack exchange,提问作者user28432840
相关产品推荐
相关产品推荐

