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

Python入门实验:正整数逆序二进制输出问题求解

整数逆序二进制字符串生成问题解答

问题背景

我正在学习Python入门课程,这是我正在完成的实验之一。实验要求如下:

编写程序,输入一个正整数,输出表示该整数逆序二进制的0和1组成的字符串。对于整数x,算法步骤为:
当x大于0时:

  1. 输出x模2的结果(余数为0或1)
  2. 将x赋值为x除以2的整数结果
    注意:上述算法输出的0和1是逆序的。
    示例:输入6,输出011

我尝试将数字转换为字符串但未成功,以下是我的尝试代码:

number = int(input('Enter your number\n'))
number_list = []

while number != 0:
    number = number // 2
    number_list.append((number % 2))
    number_list.reverse()
    print(number_list)

问题分析

你的代码存在三个核心逻辑错误:

  • 操作顺序颠倒:应该先取当前数字的模2余数,再对数字做整除2的操作,你现在先整除再取模,拿到的是下一轮数字的余数,完全偏离了题目要求的步骤。
  • 多余的列表反转:每次循环都反转列表会导致已存储的结果反复颠倒,最终输出混乱,完全没必要这么做。
  • 输出格式错误:题目要求输出字符串,但你直接打印了列表,不符合输出要求。

正确实现方案

方案一:直接拼接字符串(贴合题目算法步骤)

number = int(input('Enter your number\n'))
result = ""
while number > 0:
    # 先取当前数的模2结果,转为字符串拼接到结果中
    result += str(number % 2)
    # 再将数整除2,进入下一轮循环
    number = number // 2
print(result)

测试输入6时,执行流程:

  1. 6>0 → 6%2=0 → result="0" → number=3
  2. 3>0 → 3%2=1 → result="01" → number=1
  3. 1>0 → 1%2=1 → result="011" → number=0
  4. 循环结束,输出"011",完全符合示例要求。

方案二:用列表存储再拼接(适配你原本的思路)

number = int(input('Enter your number\n'))
number_list = []
while number > 0:
    # 先把当前数的模2结果转为字符串存入列表
    number_list.append(str(number % 2))
    number = number // 2
# 直接拼接列表元素得到结果字符串
result = ''.join(number_list)
print(result)

这个方案和方案一逻辑一致,只是用列表暂存结果,最后统一拼接成字符串,适合需要中间处理的场景。

内容的提问来源于stack exchange,提问作者VivianeKarpinski

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 02:33:17