在Python中反转数字
我现在正在做一个关于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]