我怎么能够;如果var是整数则执行

时间:2016-10-23 23:24:44

标签: python-3.x binary

我正在尝试创建一个十进制到二进制转换器。用户输入其值,每次将金额除以2并添加到invertedbinary列表中。然后将金额转换回整数,再次除以2,依此类推。

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)

假设我输入数字17。这是输出:

[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]。每个浮点值为0,整数为零。

我可以使用什么代替is instance来实现此目标?

对于任何想知道的人,我称之为invertedbinary,因为打印时invertedbinary需要翻转,然后打印为字符串以显示正确的二进制值。

1 个答案:

答案 0 :(得分:1)

您始终可以检查round值是否等于值...

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