不使用bin方法实现二进制转十进制及代码TypeError问题求助
错误根因
- 类型不匹配:
binaryToDecimal接收的入参是decimalToBinary返回的字符串类型,直接对字符串做%、/这类数值运算属于非法操作,直接触发TypeError。 - 缩进错误:两个转换函数的return语句都写在了循环内部,第一次循环就会提前返回,仅处理1位就终止逻辑。
- 运算逻辑错误:
2 **powers** (bits % 10)连续求幂的写法完全不符合二进制转十进制的计算规则,同时混用逐位遍历和逐位取余两套逻辑互相冲突。 - 测试代码错误:循环体未缩进、引用了未定义的
decimal变量、print语句括号位置错误导致语法不合法。
修复后可运行完整代码
def decimalToBinary(num): # 处理输入为0的特殊情况 if num == 0: return "0" bits = "" while num > 0: bits = str(num % 2) + bits num = num // 2 return bits def binaryToDecimal(bits): deciNum = 0 # 直接遍历二进制字符串的每一位计算 for bit in bits: deciNum = deciNum * 2 + int(bit) return deciNum # 程序测试 for decimal in range(135, 146): binary_val = decimalToBinary(decimal) revert_decimal = binaryToDecimal(binary_val) print(f"{decimal} 的二进制为 {binary_val},转换回十进制结果为 {revert_decimal}")
功能说明
代码完全不依赖Python内置的bin、int(xxx, 2)这类进制转换内置能力,双向转换结果可直接验证正确性。
内容的提问来源于stack exchange,提问作者Orianna Sanele
相关产品推荐
相关产品推荐

