我正在尝试创建一个十进制到二进制转换器。用户输入其值,每次将金额除以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
需要翻转,然后打印为字符串以显示正确的二进制值。
答案 0 :(得分:1)
您始终可以检查round
值是否等于值...
if (round(x) == x):
# x is int
else:
# x is float/double