My gotcha moment with the loop's else clause was when I was watching a talk by Raymond Hettinger, who told a story about how he thought it should have been called nobreak. Take a look at the following code, what do you think it would do?
for i in range(10):
if test(i):
break
# ... work with i
nobreak:
print('Loop completed')
What would you guess it does? Well, the part that says nobreak would only be executed if a break statement wasn't hit in the loop.