Python十进制转二进制代码如何反转打印数位得到正确结果
问题说明
现有代码在做十进制转二进制计算时,循环取模2得到余数的顺序是二进制从最低位到最高位的顺序,直接逐位打印会得到逆序结果,无法输出正确的二进制值。另外原代码存在冗余导入、提示文案笔误、未处理0值输入、整数除法写法不严谨的小问题。
修正后代码
n = int(input()) print("conversion of {} to binary is :".format(n)) def conv(n): if n == 0: print(0) return bit_list = [] while n != 0: remainder = n % 2 bit_list.append(str(remainder)) n = n // 2 print(' '.join(reversed(bit_list))) conv(n)
核心改动点
- 移除未使用的
math模块导入,修正提示文案笔误:原提示误写为“转十进制”,实际为转二进制 - 取消边计算边打印的逻辑,将每一步得到的余数存入列表暂存
- 计算完成后将列表倒序拼接,得到从高位到低位排列的正确二进制序列再输出,数位间保留空格和原输出格式一致
- 补充输入值为0的边界场景处理,避免输入0时无输出
- 用整数除法
//替代原写法int(n/2),逻辑更直观,规避浮点数运算的潜在精度问题
如果要最小改动原代码逻辑,也可以直接用字符串逐位拼接余数,最后反转字符串输出,核心逻辑和存列表的实现完全一致。
内容的提问来源于stack exchange,提问作者Sagar Rajput
相关产品推荐
相关产品推荐

