2016-10-23 39 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有什么问题? –

相关问题