如何在 Python 中反向打印输出?

How can I print an output in reverse in Python?

有个问题是要我把一个int转成binary,而且还必须是倒过来的(为什么!??!?!)。经过一系列的修补,我能够让它以二进制形式打印数字。但是我这辈子都想不出如何让它反向输出。

说明说:

Write a program that takes in a positive integer as input, and outputs a string of 1's and 0's representing the integer in binary.

For an integer x, the algorithm is:

  • As long as x is greater than 0
    • Output x modulo 2 (remainder is either 0 or 1)
    • Assign x with x divided by 2

我的代码是:

x = int(input())

while x > 0:
    x = x//2
    print( x % 2, end = ' ')

测试输入 6,我得到 1 1 0 但它要我输出 011。

我什至尝试将答案放入列表中,但是当我尝试反转列表时,出现错误。我试过的列表方法:

x = int(input())

while x > 0:
    x = x//2
    J = [x % 2]

    L = reversed(J)

    print(L)

使用列表方法输出:

<list_reverseiterator object at 0x7f2cd69484f0>
<list_reverseiterator object at 0x7f2cd6948ee0>
<list_reverseiterator object at 0x7f2cd69484f0>

我觉得这不可能需要某种切片,因为在我正在学习的 material 中甚至还没有涵盖该方法。

您没有按照给定的顺序执行提供的算法步骤。交换 while 循环中的语句,使它们与所描述的一致。

还有一个小细节:没有说明用空格分隔输出,所以你应该提供 end = '':

x = int(input())

while x > 0:
    print( x % 2, end = '')
    x = x//2

您首先读取最低有效位,这导致输出被反转。您不需要显式调用 reversed().

这会产生所需的输出:

x = int(input())

result = []
while x > 0:
    result.append(x % 2)
    x = x // 2

# str() transforms each integer to a string.
# We then concatenate them all together
# to get the desired output using ''.join().
print(''.join(str(item) for item in result))
>>> x = 100
>>> res = []
>>> while x > 0:
...   x = x//2
...   J = x%2
...   res.append(J)
...
>>> res
[0, 1, 0, 0, 1, 1, 0]
>>> "".join(str(i) for i in res[::-1])
'0110010'

J表中[:1:-1]可以使用python的特殊函数将整数转换为二进制输入并反转二进制输入的打印,所以:

integer_input = int(input())                     # input integert number
binary_of_integer_input = bin(integer_input)     # convert integer to binary
print(binary_of_integer_input[2:])               # Print binary of integer input
print(binary_of_integer_input[:1:-1]) # Print reverse binary of integer input

示例:

整数=8

输入的二进制数 = 1000

二进制反转 = 0001

integer_input = int(input())                     # input integert number
binary_of_integer_input = bin(integer_input)     # convert integer to binary
x = binary_of_integer_input[2:]
J = binary_of_integer_input[:1:-1]
print(x)                                         # Print binary of integer input
print(J)                                         # Print reverse binary of integer input
step1 = input("what number? ")#gets your input
step2 = int(step1) #makes sure it's an int not float
step3 = bin(step2) #converts it to binairy (you method doesn't work for e.g. 7)
step4 = step3.replace("0b", "") #removes 0b from the binairy number
step5 = step4[::-1] #reveses the string
print (step5)

应该可以 或

print(bin(int(input("what number? "))).replace("0b", "")[::-1])

如果你想要更压缩

我正在吃这个class!!!!这是到目前为止所学材料的代码,可以正常工作!对于实际的二进制文件。除了反转字符串可能没有被提及 [::-1].

实验室希望严格按照该算法得到答案。所以反转二进制并期望它以新行结尾。

num = int(input())

while num > 0:
    y =(num % 2)
    print(y, end='')
    num = (num//2)
print()

注:上述算法输出0和1的顺序是相反的。如果解释为“使用此算法转换为二进制但反转它”

num = int(input("Enter a number"))
string = ""

while num > 0:
    y =str(num % 2)
    string+=y
    num = (num//2)

reverse=string[::-1]
print(reverse)