我的python代码中有一个错误。这是密码
binary=[]
bits=int(input("How many bits do you want to have? >>"))
numOfCombos=2**bits
lenOfPart=numOfCombos/2
x=0
y=0
z=0
while x!=numOfCombos:
binary.insert(x,[])
x+=1
x=0
while x!=lenOfPart:
binary[x].insert(0,"0")
x+=1
while x!=lenOfPart*2:
binary[x].insert(0,"1")
x+=1
x=0
p=0
while x!=bits:
lenOfPart=lenOfPart/2
while z!=len(binary)-1:
while p!=lenOfPart:
binary[y].insert(len(binary[y]),"0")
y+=1
p+=1
p=0
while p!=lenOfPart:
binary[y].insert(len(binary[y]),"1")
y+=1
p+=1
p=0
z+=1
y=0
x+=1
print(numOfCombos)
print(len(binary))
print(binary)
我收到一个错误
How many bits do you want to have? >>3
Traceback (most recent call last):
File "C:/Users/#####/AppData/Local/Programs/Python/Python36-32/binarygen.py", line 24, in <module>
binary[y].insert(len(binary[y]),"0")
IndexError: list index out of range
我不明白为什么我的变量不起作用。我已经测试了所有我能想到的东西。如果您有任何建议,请尽快回复。如果您认为整个程序是错误的,请在您的答案中插入一个工作版本。该程序的目的是为给定的位数生成所有可能的二进制组合。谢谢你的时间和帮助。你知道吗
循环中有一个“off by one”错误。您试图在
binary
的最后一个元素的末尾添加一个字符(我想)。但是,对于3的输入,使用下标8(2**3)。二进制有0-7个元素;下标8超出界限。也许你需要但是,我注意到你总是在列表的末尾插入。为什么不直接使用
append
?你知道吗更好的是,不要有字符列表,而是将每个字符都设置为字符串:
另外,请注意Python中的复制功能;您不需要那些繁琐的while循环:只需添加所需数量的1或0即可。比如:
一旦你学会了一些语言工具,你就可以简化很多。你知道吗
最重要的是,在上层找出你真正需要完成的事情。告诉我们,你可以把问题和解决办法都简单化。例如,如
Delirious Lettuce
所示,您可以通过在itertools
包中搜索first来消除很多悲伤。你知道吗环路在错误的时间停止。我需要它停在
bits-1
,而不是停在bits
。你知道吗相关问题 更多 >
编程相关推荐