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,所以还有很多东西要学。这是我第一次尝试自己编写程序。非常感谢您的反馈!!