gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 08:54:16 25 4
gpt4 key购买 nike

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

例如,当我输入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/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”

另一个需要评论的问题是你的代码优化。观察你的代码,如果 else-if 你有 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)

关于python - 计算整数的二进制数的程序 - 需要帮助反转输出字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52880398/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com