2016-03-11 267 views
0

我在寫一個將十進制數轉換爲二進制數的程序。我做到了這一點,我堅持一個問題。在代碼print(aa)在Python中將十進制數轉換爲二進制

我試圖得到一個給定數字的二進制形式,但它打印1.我認爲我有「返回」功能的問題在這裏,我該如何解決它。此外,當我打印binaryform它打印如下方式。它不應該反向打印,我的意思是第一個,然後是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) 

OUTPUT

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

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

回答

0

轉換的整數到的二進制字符串。結果是一個有效的Python表達式。如果x不是Python int對象,則必須定義一個返回整數的索引()方法。 Python Documentation

0

你正在寫一個遞歸函數 - 這很有趣,很好。

現在考慮你的工作:你檢查數字的LOW部分。如果數字的低位部分是1或0,你可以做一些事情,但是然後縮小數字並遞歸,檢查一個新的低位部分,但新的低位部分最初來自高位部分。

所以無論你確定的實際應該是在字符串的末尾,而不是開始,當你從遞歸回來。

這是關於反向打印的問題,我想。是的,除了你應該反向裝配它,然後正常打印。

此外,您實際上正在嘗試構造一個十進制整數,該整數將打印出來,就好像它是二進制數字一樣。如果你只是建立了一個字符串:「10101」,那將會簡單得多。

0

如果您只是想將整數轉換爲二進制,請嘗試此代碼here。它看起來像這樣:

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

binary(10) 
相關問題