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

时间:2018-10-18 18:30:37

标签: python reverse

我正在编写一个从整数输入计算二进制数的程序。我无法弄清楚如何反转输出代码以显示二进制数字。下面的程序可以工作,但不会以正确的顺序输出位。

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

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

    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)

您正在将每个元素(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)

如果number = 10

  
    

1010

  

说明

while循环开始迭代时,它将数字除以2,我们想反转除法结果以获得二进制代码。代替计算结果,我们可以在计算时间内创建结果。为此,我们将reverse_code定义为一个空字符串。在每次迭代中,我们都将新项目(1或0)放在字符串之前,以获得反字符串。

reverse_codenumber=10时的迭代值:

迭代0: code = 0 reverse_code = code + reverse_code =“ 0” +“” =“ 0”

迭代1: code = 1 reverse_code = code + reverse_code =“ 1” +“ 0” =“ 10”

....

迭代N:

code = 1 reverse_code = code + reverse_code =“ 1” +“ 010” =“ 1010”

要评论的另一个问题是您的代码优化。观看代码,如果其他情况(如果您具有new_numbernumber变量分配,则不受先前变量code的影响)。您可以提取公因子并简化代码。代码如下:

# 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)