我正在尝试为大学项目创建一个十进制到二进制转换器 (所以请不要回答,只是指导)。我不能使用任何内置功能,我也必须有一个循环。
是否有人知道我如何能够以相反的顺序将剩余部分保存到某个地方进行最终打印以获得二进制数?
这是我的代码:
quotient = int(input("Enter a number: "))
count=0
#find remainder
#divide quotient by 2
#loop until quotient is 0
while quotient != 0:
remainder = quotient%2
quotient = quotient//2
print(remainder)
count +=1
result[count] = remainder
答案 0 :(得分:0)
result
应该是列表而不是字典。然后你可以在它上面调用reversed
来得到你想要的东西,并用一个空字符串加入它。
>>> def bin_conv(n):
... result = []
... quotient = n
... while quotient != 0:
... remainder = quotient % 2
... quotient //= 2
... result.append(remainder)
... return result
...
>>> bin_conv(0)
[]
>>> bin_conv(1)
[1]
>>> bin_conv(2)
[0, 1]
>>> bin_conv(3)
[1, 1]
>>> bin_conv(4)
[0, 0, 1]
>>> bin_conv(5)
[1, 0, 1]
答案 1 :(得分:0)
除了您已经拥有的while
循环之外,还需要两件事:
x & 1
将为您提供x
的最后一位二进制数字。
x >>= 1
会将最后一位数字移出。
这将以相反的顺序为您提供所有数字。轮到您存储,反转并输出结果。
答案 2 :(得分:0)
您可以将余数保存到名为'结果'的列表中。在每次迭代中将新余数添加到列表中。
现在列表中的元素按照相反的顺序排列,因为它们应该符合二进制等价物的要求。因此,我们必须使用负索引以向后顺序打印列表元素。
我们还希望将结果打印在一行中,两者之间没有任何空格。这是通过在打印功能中使用end=''
来实现的。
quotient = int(input("Enter a number: "))
count=0
result=[]
while quotient != 0:
remainder = quotient%2
quotient = quotient//2
count +=1
result.append(remainder)
n=1
while n<=len(result):
print (result[-n],end='')
n=n+1
print('\n')