passArray = ['s','d','f','r']
qwertyLine=["QWE","WER","ERT","RTY","TYU","YUI","UIO","IOP","ASD","SDF","DFG","FGH","GHJ","HJK","JKL","ZXC","XCV","CVB","VBN","BNM"]
PasswordScore = 0
NumQwerty = 0
for x in range(0,len(passArray)-1):
qwertyCheck = passArray[x] + passArray[x+1] + passArray[x+2]
check = qwertyCheck.upper()
if check in qwertyLine:
NumQwerty = NumQwerty + 1
QwertyDeduction = NumQwerty * 5
PasswordScore = PasswordScore - QwertyDeduction
print(PasswordScore)我试图在一个列表中一起检查qwerty字符,当我运行下面的代码时,我得到了超出范围错误的索引,但不确定原因。
任何帮助都是非常感谢的。
发布于 2017-11-09 13:03:29
从len(passArray)中减去2,而不是1。
编辑:在第一次迭代中,check被设置为'SDF‘。对于第二个,check被设置为'DFR‘。在第三次迭代中,当range为(0,3)时,您将超过列表的末尾,因此您将得到IndexError: list index out of range。
但是,如果从长度中减去2,就会得到一个range(0, 2),然后循环遍历列表两次,所以首先有check = 'SDF',然后是check = 'DFR',循环在这里结束。
https://codereview.stackexchange.com/questions/179995
复制相似问题