4 ms·
That version doesn't work. It raises KeyError on the first iteration if the if statement is false. The point of the for / else is that the else only gets eval
by xmcqdpt2 5y ago
That version doesn't work. It raises KeyError on the first iteration if the if statement is false.
The point of the for / else is that the else only gets evaluated when the for terminates without a break. So in the example you only get a KeyError if the search() never returns val.
Part of the confusion I guess is that the else: in my example is paired with for, not with if, Python indentation being significant etc.
- deleted 5y ago[deleted]
- montebicyclelo 5y agoAha, thank you. Yes, it's plausible that my brain did pair the `else` with the `if`, even though it knew it was supposed to be paired with the `for`. Before being introduced to `for`/`else`, I'd have written the example you gave as: result = None for i in range(n): if search(i) == val: result = i if not result: raise KeyError("not found")