在Python中将十进制数转换为二进制数

时间:2016-03-11 06:37:32

标签: python

我正在编写一个将十进制数转换为二进制数的程序。我做得那么远,我遇到了问题。在包含print(aa)

的代码中

我试图获得一个给定数字的二进制形式,但它打印出1.我想我已经"返回"功能问题在这里如何解决它。此外,当我打印binaryform时,它的打印方式如下。不应该反向打印我的意思是先是1然后是11然后是111 ....... 10111。

# Python program to convert decimal number into binary number using recursive function
def binary(n, binaryform,i):
   if n >= 1:
       digit= n % 2
       binaryform += digit*i
       #print(binaryform)
       i*=10
       binary(n/2, binaryform, i)
       print("xxx", binaryform)
       return binaryform
dec = int(input("Enter an integer: "))# Take decimal number from user
aa = binary(dec, 0, 1)
print(aa)

输出

Enter an integer: 23    
('xxx', 10111)    
('xxx', 111)    
('xxx', 111)    
('xxx', 11)       
('xxx', 1)    
1    

3 个答案:

答案 0 :(得分:0)

  

将整数转换为二进制字符串。结果是一个有效的Python表达式。如果x不是Python int对象,则必须定义一个返回整数的 index ()方法。 Python Documentation

答案 1 :(得分:0)

你正在写一个递归函数 - 这很有趣。

现在考虑一下你做了什么:检查号码的LOW部分。如果数字的LOW部分是1或0你做了什么,但随后你缩小数字并递归,检查一个新的LOW部分,但新的低部分最初来自更高的部分。

因此,当你从递归中回来时,你所确定的实际上应该是在字符串的末尾,而不是开头。

我认为这是关于反向打印的问题。是的,除了你应该反向组装,然后正常打印。

此外,您实际上正在尝试构造一个十进制整数,该十进制整数将打印出来,就像它是二进制数一样。如果你刚刚构造了一个字符串,那就简单多了:" 10101"。

答案 2 :(得分:0)

如果您只想将整数转换为二进制,请尝试使用此代码here。它看起来像这样:

def binary(n):
    b = ''
    while n > 0:
        b = str(n % 2) + b
        n >>= 1
    print(b)

binary(10)