所以我想用二进制数来计算但是保持示例中的前导零数到6它看起来像这样:
0000
0001
0010
0011
0100
0101
0110
我有这个代码,但它只能达到repeat = 4指定的一定数量,我需要它直到找到一个特定的数字。
for i in itertools.product([0,1],repeat=4):
x += 1
print i
if binNum == i:
print "Found after ", x, "attempts"
break
答案 0 :(得分:2)
n=5 # End number
i=0 # index var
while i < n:
print format(i, "04b")
i+=1
以上示例将显示从0到5. 04b
为您提供4个字符作为结果(带前导零)。
输出:
0000
0001
0010
0011
0100
while( i <= n ):
len_bin = len(bin(i)[2:])
if(len_bin%4 != 0):
lead = 4 - len_bin % 4
else:
lead = 0
print format(i, "0"+str(lead+len_bin)+"b")
i+=1
以上代码将从i
转到n
并显示带前导零的二进制文件。
答案 1 :(得分:1)
没关系,我找到了答案!
我只是把它放在像这样的while循环中:
while found == 0:
repeatTimes += 1
for i in itertools.product([0,1],repeat=repeatTimes):
x += 1
print i
if binNum == i:
found = 1
pos = x
break
答案 2 :(得分:1)
更加pythonic的方式是
for k in range(7): #range's stop is not included
print('{:04b}'.format(k))
这使用Python的字符串格式化语言(https://docs.python.org/3/library/string.html#format-specification-mini-language)
要以四个方块打印更高的数字,请使用
for k in range(20): #range's stop is not included
# https://docs.python.org/3/library/string.html#format-specification-mini-language
if len('{:b}'.format(k)) > 4:
print(k, '{:08b}'.format(k))
else:
print('{:04b}'.format(k))
您甚至可以使用字符串格式化语言本身和等式'{:08b}'
动态调整格式设置术语y = 2^x
以适用于任何整数:
for k in range(300):
print(k, '{{:0{:.0f}b}}'.format(ceil((len(bin(k))-2)/4)*4).format(k))