我的目标是获得两个不同列表(keyNum和stringNum)的同一索引中的值,并将总和放入新的单独列表(encNum)中。但是,当我运行代码时,它并没有在整个列表中完全运行。 代码如下:
def encrypt(key, string):
letters = 'abcdefghijklmnopqrstuvwxyz'
keyNum = []
stringNum = []
encNum = []
for symbol in key:
numKey = letters.find(symbol)
keyNum.append(numKey)
for symbol in string:
numString = letters.find(symbol)
stringNum.append(numString)
for element in stringNum:
a = keyNum.pop(0)
b = stringNum.pop(0)
c = a + b
encNum.append(c)
print keyNum
print stringNum
print encNum
您所描述的跳过项问题是由于从
stringNum
弹出的,同时在第三个for循环中迭代它。在这个循环的第一次迭代中,element = stringNum[0]
,然后在同一个循环中,从列表中弹出该项。因此,在下一个迭代中element = stringNum[1]
,但是,由于原始列表中的第一个项目已被删除,element
实际上等于原始列表中的stringNum[2]
,在for循环开始之前。在下面的代码片段是一个示例,说明当您从列表的左侧弹出时,同时对其进行迭代时会发生什么情况:
如果
^{pr2}$key
和string
的长度相同,就像您的方法描述所暗示的那样,那么您将在第三个循环中寻找更像这样的内容,这比迭代相同列表时从左侧弹出更合适:或者你甚至可以把这三个循环合并成一个:
但是,如果
len(key) != len(string)
,这两种方法都不起作用,那么您的重新实现将需要更多的思考。在相关问题 更多 >
编程相关推荐