我试图让函数工作,假设将十进制转换为二进制,但所有它都给了我不同的数字。就像我输入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)
答案 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函数
答案 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