在Python中反转数字

-4 投票
2 回答
67 浏览
提问于 2025-04-12 05:12

我现在正在做一个关于Python的入门课程,这是我正在进行的一个实验。

实验的要求是:

写一个程序,输入一个正整数,然后输出一个由1和0组成的字符串,表示这个整数的反向二进制。对于整数x,算法是这样的:

只要x大于0:

输出x除以2的余数(余数要么是0,要么是1)

然后把x更新为x除以2的结果

注意:上面的算法输出的0和1是反向的。

举个例子:如果输入是6,输出就是011。

你会怎么解决这个问题呢?

number = int(input('Enter your number\n'))
number_list = []

while number != 0:
    number = number // 2
    number_list.append((number % 2))
    number_list.reverse()
    print(number_list)

我试着把这个数字转换成字符串,但没有成功。这是我最好的尝试。

2 个回答

0

你可以使用 divmod 来实现这个功能。divmod 可以在一行代码中同时给你整除的结果和余数。

x   = int(input('Enter your number: '))
out = []

# As long as x is greater than 0
while x:
    # Assign x with x divided by 2
    x, xm2 = divmod(x, 2)
    # Output x modulo 2
    out.append(xm2)
    
print(out)
1

你把余数存到列表里,其实就是在反转这个列表了。没必要再反转一次,甚至多次。

你只需要先存下余数,然后再除以二。

最后在循环外打印出结果:

number = int(input('Enter your number:'))
number_list = []

while number != 0:
    number_list.append(number % 2)
    number = number // 2

print(number_list)

示例输出:

Enter your number:12
[0, 0, 1, 1]

撰写回答