Python:十进制到二进制

时间:2016-02-26 16:09:13

标签: python

我试图让函数工作,假设将十进制转换为二进制,但所有它都给了我不同的数字。就像我输入12,它会给我2.我不确定我的问题在代码中的位置。任何帮助都会很棒,谢谢!

def decimalToBinary(value):
    if value < 0: #Base case if number is a negative
        return 'Not positive'
    elif value == 0: #Base case if number is zero
        return 0
    else:
        return decimalToBinary(value//2) + (value%2)

7 个答案:

答案 0 :(得分:5)

这也可能有效

def DecimalToBinary(number):
        #This function uses recursion to convert & print decimal to binary number
       if number > 1:
           convertToBinary(number//2)
       print(number % 2,end = '')

    # decimal number
    decimal = 34

    convertToBinary(decimal)
    #..........................................
    #it will show output as 110100

答案 1 :(得分:2)

您遇到错误是因为您添加了数字而不是迭代但想要获取位序列...,因此您必须转换要添加到元组或字符串(或列表)的值,请参阅下面的代码:

def decimalToBinary(value):
    if value < 0: #Base case if number is a negative
        return 'Not positive'
    elif value == 0: #Base case if number is zero
        return (0,)
    else:
         return decimalToBinary(value//2) + (value%2,)

print decimalToBinary(12)

我已将(value%2)替换为(value%2,)以创建元组(,问题,对于python而言,它意味着创建一个元组,大括号不是这样做的......)和{{ 1}}到return 0。但是,您也可以将其转换为字符串。为此,将return (0,)替换为(value%2),将str(value%2替换为0

请注意,您可以使用built-int bin函数ti获取二进制十进制:

str(0)

祝你好运!

答案 2 :(得分:0)

bin怎么样?

>>> bin(12)
'0b1100'
>>> bin(0)
'0b0'
>>> bin(-1)
'-0b1'

答案 3 :(得分:0)

你应该使用bin(),一个内置的python函数

https://docs.python.org/3.1/library/functions.html#bin

答案 4 :(得分:0)

作为一种练习,有两种方式:

有字符串:

def decimalToBinary(value):
 if value < 0: #Base case if number is a negative
    return 'Not positive'
 elif value == 0: #Base case if number is zero 
    return ''
 else:
     return decimalToBinary(value//2) + str(value%2)

withts:

def decimalToBinary(value):
 if value < 0: #Base case if number is a negative
    return 'Not positive'
 elif value == 0: #Base case if number is zero 
    return 0
 else:
     return 10*decimalToBinary(value//2) + value%2

在这种情况下,您将获得一个小数,其数字仅为1或0。

答案 5 :(得分:0)

您的问题是,您在十进制中将结果的数字相加。因此,如果您的结果为01100,则您的函数输出的0+1+1+0+0等于2。如果您希望数字叠加,请将结果转换为string并连接:

def decimalToBinary(value):
    if value < 0: #Base case if number is a negative
        return 'Not positive'
    elif value == 0: #Base case if number is zero
        return 0
    else:
        return str(decimalToBinary(value//2)) + str((value%2))
print decimalToBinary(12) # prints '01100

我假设你正在练​​习这个,并且你已经意识到python的内置函数bin()已经为你做了。

答案 6 :(得分:0)

我会采取另一种方式:

def decimalToBinary(number):
    if number<0:
        return 'Not positive'
    i = 0
    result = ''
    while number>>i:
        result = ('1' if number>>i&1 else '0') + result
        i += 1
    return result