2016-10-23 19 views
1

我想創建一個小數到二進制轉換器。用戶輸入它們的值,並且每次將金額除以2並添加到invertedbinary列表中。然後將金額轉換回整數,再除以2,依此類推。我該怎麼辦;如果var是整數然後執行

value = int(input("Please enter the decimal value to be converted to binary.")) 
    invertedbinary = [] 
    while value >= 1: 
     value = (value/2) 
     invertedbinary.append(value) 
     value = int(value) 
     print (invertedbinary) 
    for n,i in enumerate(invertedbinary): 
     if i == isinstance(invertedbinary,int): 
      invertedbinary[n]=0 
     else: 
      invertedbinary[n]=1 
    print (invertedbinary) 

比方說,我輸入數字十七。這是輸出:

[8.5] 
[8.5, 4.0] 
[8.5, 4.0, 2.0] 
[8.5, 4.0, 2.0, 1.0] 
[8.5, 4.0, 2.0, 1.0, 0.5] 
[1, 1, 1, 1, 1] 

因此,我們可以告訴大家,從者的最後一行,我isinstance的嘗試沒有成功。我想要做的是,如果金額是任意數量,那麼將其顯示爲1,如果它是一個整數,則顯示爲零。所以它應該看起來像是[1, 0, 0, 0, 1]。每個浮點值的個數,以及整數的零。

我可以用什麼來代替is instance來實現?

對於任何人想知道的,我稱之爲invertedbinary,因爲打印時需要翻頁invertedbinary,然後打印爲字符串以顯示正確的二進制值。

+0

我把它改爲[標籤:蟒蛇-3.X]因爲這需要'INT/int'給'浮動行爲; [看到這個問題](https://stackoverflow.com/questions/19507808/python3-integer-division)。 –

+0

你不想'我== isinstance(invertedBinary,int)'你只是想'isinstance(invertedBinary,int)'我很確定... –

+0

雖然,實際上並不在這種情況下,因爲你關心如果數字是一個整數,而不是'int'類型。 –

回答

1

您可以隨時請檢查是否round值等於值...

if (round(x) == x): 
    # x is int 
else: 
    # x is float/double 
+0

哇!非常感謝。它現在按預期工作! –

+0

@八月威廉姆斯有時候,老的和明顯的作品最好;-) –

+0

@ KenY-N 8.49999999999999999有什麼問題? –

相關問題