我使用手动方法为Eg中的定义值生成二进制数:([6,4,2,0])。
下面的代码将高位(1)写入输入中提到的位置,并将低位写入输入中未提及的位置。例如:one_bits([6,4,2,0])
将给出1010101
,这意味着第6,第4,第2和第0位为高,其余为低(0)。
以下代码倾向于按顺序生成输出,而不是根据需要生成输出([1010101]
)。这里,输出在同一for循环中的两个不同点处生成。任何人都可以帮助我吗?
def one_bits(x,lst=None):
if lst == None:
toplevel = True
lst = []
else:
toplevel = False
for i in range(0,x[0]+1):
if i in x:
print 1
lst.append(i)
else:
print 0
lst.append(i)
答案 0 :(得分:2)
def one_bits(lst=None):
return sum(2**i for i in lst)
也许
print one_bits([6,4,2,0])
print bin(one_bits([6,4,2,0]))
答案 1 :(得分:0)
这将为您提供问题中指定的输出,或尽可能接近它。请注意,无论您使用bin
函数还是下面的函数,都会得到str
(或str
中的list
)。
def one_bits(lst=None):
return ''.join(['1' if i in lst else '0' for i in range(8)])
>>> print one_bits([6,4,2,0])
'10101010'
OR
def one_bits(lst=None):
return [''.join(['1' if i in lst else '0' for i in range(8)])]
>>> print one_bits([6,4,2,0])
['10101010']
如果您执行int('10101010', 2)
,则会看到170