Python 计算整数二进制数的程序-需要帮助反转输出字符串吗

Python 计算整数二进制数的程序-需要帮助反转输出字符串吗,python,reverse,Python,Reverse,我正在写一个程序,从整数输入计算二进制数。我不知道如何反转输出代码来显示二进制数。下面的程序可以工作,但不能按正确的顺序输出位 例如,当我输入156时,答案应该与00111001相反,但我无法让程序将其向后输出以显示10011100 这应该是一个从整数计算二进制数的程序。 它应该提示用户输入整数number=int(输入(“输入数字”),并计算二进制数,或者如果输入的数字类型不正确,则发出警告 if number > 0: while number != 0: if numbe

我正在写一个程序,从整数输入计算二进制数。我不知道如何反转输出代码来显示二进制数。下面的程序可以工作,但不能按正确的顺序输出位

例如,当我输入
156
时,答案应该与
00111001
相反,但我无法让程序将其向后输出以显示
10011100

  • 这应该是一个从整数计算二进制数的程序。
    它应该提示用户输入整数
    number=int(输入(“输入数字”)
    ,并计算二进制数,或者如果输入的数字类型不正确,则发出警告

    if number > 0:
      while number != 0:
        if number % 2 == 0:
            code = "0"
            new_number = number //2
            number = new_number
        else:
            code = "1"
            new_number = number //2
            number = new_number
        reverse_code = code[::-1]
        print(reverse_code, end='') else:
      print ("Invalid Input. System will now self-destruct.")
    

  • 您正在将每个元素(1或0)打印到循环中。您应该连接所有1/0,并在末尾反转

    编程循环时请注意。您正试图设置一个值,该值是在特定迭代中沿迭代生成的。当脚本计算
    code
    值(例如
    1
    )时,它会反转该数字并跳转到下一个迭代,重复该过程

    解决方案是沿着所有迭代逐步构建一个反向字符串。下一个代码定义一个空字符串,并在上一个结果之前连接0或1

    例如:

    # Initialize reverse_code variable
    reverse_code = ""
    
    while number != 0:
        if number % 2 == 0:
            code = "0"
            new_number = number //2
            number = new_number
        else:
            code = "1"
            new_number = number //2
            number = new_number
        reverse_code = code + reverse_code
    print(reverse_code)
    
    如果编号=10:

    1010

    解释 当循环开始迭代时,将数字除以2,我们希望反转除法的结果以获得二进制代码。我们可以在计算时间内创建结果,而不是计算结果。为此,我们将
    reverse\u code
    定义为空字符串。在每次迭代中,我们将把新项(1或0)放在字符串之前,得到反向字符串

    number=10时,反转\u code
    迭代中的值:

    迭代0:
    code
    =0
    reverse\u code
    =
    code
    +
    reverse\u code
    =“0”+”“=“0”

    迭代1:
    code
    =1
    reverse\u code
    =
    code
    +
    reverse\u code
    =“1”+“0”=“10”

    迭代N:

    code
    =1
    reverse\u code
    =
    code
    +
    reverse\u code
    =“1”+“010”=“1010”

    另一个需要说明的问题是代码优化。如果您有
    新编号
    编号
    变量分配,且不受先前变量
    编码
    的影响,请查看您的代码。您可以提取公共因子并简化代码。代码应如下所示:

    # Initialize reverse_code variable
    reverse_code = ""
    
    while number != 0:
        
        # Calculate the `code` value
        if number % 2 == 0:
            code = "0"
        else:
            code = "1"
    
        # Putting this here simplifies duplicate instructions
        new_number = number //2
        number = new_number
         
        # Putting 0 or 1 (code) before semi-built string (reverse_code) 
        reverse_code = code + reverse_code
    
    print(reverse_code)
    

    您的反向代码似乎总是得到值“1”。可能是@raj的重复。我不这么认为,这可能是为了确保OP知道如何以老式方式将十进制数转换为二进制数。当然,使用
    bin
    或字符串格式要简单得多。非常感谢@Marco!我有一种感觉,这与没有连接来自循环的结果有关,但无法找出解决方法。我刚刚开始学习Python,所以还有很多东西要学。这是我第一次尝试自己编写程序。非常感谢您的反馈!!