我正在编写一个将十进制数转换为二进制数的程序。我做得那么远,我遇到了问题。在包含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
答案 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)