【发布时间】:2016-10-23 23:24:44
【问题描述】:
我正在尝试创建一个十进制到二进制转换器。用户输入他们的值,金额每次除以 2 并添加到invertedbinary 列表中。然后将金额转换回整数,再次除以二,依此类推。
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 尝试没有成功。我想要做的是,如果金额是 anynumber.5 则将其显示为 1,如果是整数则显示为零。所以它应该是[1, 0, 0, 0, 1]。每个浮点值都是一个,整数是零。
我可以用什么来代替is instance 来实现这一点?
对于任何想知道的人,我将其命名为 invertedbinary,因为在打印时 invertedbinary 需要翻转,然后打印为字符串以显示正确的二进制值。
【问题讨论】:
-
我将其更改为python-3.x,因为这需要
int / int提供float行为; see this question. -
你不想要
i == isinstance(invertedBinary,int)你只想要isinstance(invertedBinary,int)我很确定...... -
虽然,实际上并非如此,因为您关心的是数字是否为整数,而不是
int类型。 -
无论如何,在这种情况下,您应该使用模数运算符:
%
标签: python-3.x binary