for i in range(n):
for j in range(o):
orderedList.append(newStringList[j][i])
我是Python初学者
我有一个加密问题要解决,其中我必须将一个字符串分割成n个大小的块,然后将每个索引的第一个索引添加到列表中,然后将每个索引的第二个索引添加,依此类推。我有一个有效的解决方案但是,当所有块都相等时,如果len(string)%n!= 0,则最后一个块有时会更小。当发生这种情况时,我用于将char添加到列表中的上述循环超出了范围,并且程序没有工作。有什么解决办法吗?
编辑
好像我有点不清楚
加密采用字符串,例如“ 123456789”和一个数字n,例如3.然后将字符串分成大小为n的块。所以newStringList [123,456,789]。然后,我将第一个元素从newStringList [0]移到newStringList [n-1],然后移至第二个元素,依此类推。因此,orderList [1,4,7,2,5,8,3,6,9]。现在,您对上述问题有了更好的了解。
最佳答案
在最后一行之前添加if条件将解决此问题。 if条件是确保仅在元素存在时才访问数组列表。
for i in range(n):
for j in range(o):
if j < len(newStringList) and i < len(newStringList[j]) :
orderedList.append(newStringList[j][i])
关于python - 避免在嵌套循环中使用“索引不在范围内”对字符串进行加密,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28182808/