擅长:python、mysql、java
<p>不要在for循环中使用else子句,只需修改迭代的iterable(list):</p>
<pre><code>for padsel in (pad[1:16] + [pad[0]]):
print(str(hexlify(padsel)) + "- selected pad")
for i in range(256): #increment guess
g = unhexlify("000000000000000000000000000000" + "{:02x}".format(i))
print(str(hexlify(g)) + "- guess")
if attack(g,padsel,ct_prev, ct_target):
m2 += "{:02x}".format(i)
print(m2)
break
else:
continue
m2 = m2[::-1]
print(m2 + "- m2")
</code></pre>
<p>使用else子句将需要在for循环的主体中复制代码,或者将主体重构为一个函数,这样就不需要重复了。但是,由于第一个项目的处理方式与其他项目相同,因此最简单的方法是通过迭代项目2到项目16,然后迭代项目1(如果需要)来组织最后一个处理项目。在</p>
^{pr2}$
<p>最后一条语句有效地将列表的第一个元素移动到列表的末尾。如果您不介意修改列表,或者更喜欢修改列表,可以执行以下操作:</p>
<pre><code>>>> l = range(1,16+1)
>>> l.append(l.pop(0))
>>> print l
[2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 1]
</code></pre>