我是使用python的新手,所以如果我不使用正确的术语,我会道歉。我正在编写一个简单的程序,用户输入一个十进制数,程序将其转换为二进制数。到目前为止,我有:
remainder=0
decimal_number= int(input('Enter the decimal number:'))
while decimal_number != 0:
(decimal_number, remainder) = divmod(decimal_number,2)
print(remainder)
如果我输入11,输出看起来像
1
1
0
1
我的问题是如何将其格式化为单行,如何才能将其反转以便正确编写? (例如,从上面显示的输出到' 1011')。我也知道有一个二进制函数,但我不允许在我的程序中使用它。
答案 0 :(得分:0)
尝试使用
import sys
remainder=0
decimal_number= int(input('Enter the decimal number:'))
while decimal_number != 0:
(decimal_number, remainder) = divmod(decimal_number,2)
sys.stdout.write(str(remainder))
那应该在同一行打印所有内容:)
如果您需要一些解释,
我们首先导入sys模块,这使我们可以访问stdout.write()方法。
此方法不会自动插入新行,因此符合您的目的。 我们还将整数转换为字符串,因为sys.stdout.write()方法不接受整数值。
答案 1 :(得分:0)
虽然@Manan的答案会将值打印在同一行,但它不是非常pythonic并且不会根据需要反转结果。
我建议存储您需要的值,然后将它们反转:
remainder=0
decimal_number= int(input('Enter the decimal number:'))
result = ''
while decimal_number != 0:
(decimal_number, remainder) = divmod(decimal_number,2)
result += str(remainder)
print(result[::-1])
或者,您可以重复追加到存储结果的开头以实现反转:
remainder=0
decimal_number= int(input('Enter the decimal number:'))
result = ''
while decimal_number != 0:
(decimal_number, remainder) = divmod(decimal_number,2)
result = str(remainder) + result
print(result)
答案 2 :(得分:0)
要在单行中打印二进制结果,请使用end =''作为打印功能中的第二个参数,以防止在打印结果后打印新行。 或者你可以声明一个变量并连接二进制结果的字符串值,print就在循环的一边,比如
binaryResult = ''
while decimal_number != 0:
(decimal_number, remainder) = divmod(decimal_number,2)
binaryResult += str(remainder)
print(result)
祝你好运
答案 3 :(得分:0)
运行以下脚本时,请注意缩进。 你会得到:1101
def test():
remainder=0
decimal_number= int(input('Enter the decimal number:'))
while decimal_number != 0:
(decimal_number, remainder) = divmod(decimal_number,2)
print (remainder,end="")
if __name__ == '__main__':
test()
如果你有更大的二进制值需要反向,二叉树(数据结构)可以帮助。但是列表是最简单的方法。
答案 4 :(得分:0)
使用简单干净的方法
decimal_number= input('Enter the decimal number:')
binary = bin(decimal_number)
print binary[2:]
输出
Enter the decimal number:10
1010
答案 5 :(得分:0)
print是一个接受关键字end
的函数,用于指定应如何处理每个输出的结尾。默认end
参数是newline
字符'\n'
:end=’\n’
,我们可以将其更改为''
,基本上没有。
可以处理从最高有效位(LSB)到最低有效位(MSB)打印的另一个问题,即构建列表并使用reversed函数进行打印。
全部放在一起:
remainder=0
decimal_number= int(input('Enter the decimal number:'))
result = []
while decimal_number != 0:
(decimal_number, remainder) = divmod(decimal_number,2)
result.append(remainder)
for n in reversed(result):
print(n, end='')
print()
演示:
Enter the decimal number:11
1011
希望这有帮助。