如何在 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)
有个问题是要我把一个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)