如何将while循环int输出转换为字符串(python)

时间:2017-09-25 04:43:53

标签: python python-3.x

我是使用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')。我也知道有一个二进制函数,但我不允许在我的程序中使用它。

6 个答案:

答案 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

希望这有帮助。