My programming lecturer hates break and continue. As using them may influence my score, I figured some ways to avoid them. I like them nevertheless. I don’t know if he hates pass either, but I’ll include it though.
1. Alternatives for break
The break statement exits a loop immediately. If we cannot use it, we have two main workarounds depending on the context.
Example Code:
for i in range(1, 6):
if i == 4:
print("Hit 4! Breaking out.")
break
print("Processing:", i)
Alternative A: The Boolean Flag (布尔标记法)
We can introduce a boolean variable to skip the execution of the loop body once the condition is met.
Note: The iteration (迭代) doesn’t actually stop. Even though the processing logic is skipped, the loop will run until the end of the sequence. This approach is less efficient for large lists.
finish = False
for i in range(1, 6):
if not finish:
if i == 4:
finish = True
print("Hit 4! Breaking out.")
else:
print("Processing:", i)
Alternative B: Function Return
By wrapping the loop inside a function, we can use the return statement to exit the loop and the function simultaneously. Pretty elegant and efficient though.
def _():
for i in range(1, 6):
if i == 4:
print("Hit 4! Breaking out.")
return # Exits the entire function instantly
print("Processing:", i)
_()
2. Alternatives for continue
The continue statement skips the rest of the current iteration and moves to the next one. We can easily bypass it using logical branches.
Example Code:
for i in range(1, 6):
if i == 3:
print("Skipping 3...")
continue
print("Processing:", i)
Alternative A: The Boolean Flag
Using a flag variable to determine whether the main logic should run.
for i in range(1, 6):
skip = False
if i == 3:
print("Skipping 3...")
skip = True
if not skip:
print("Processing:", i)
Alternative B: The if-else Branch
This is much cleaner than using a flag. We simply put the code that should be skipped into the else block.
for i in range(1, 6):
if i == 3:
print("Skipping 3...")
else:
print("Processing:", i)
3. Alternatives for pass
The pass statement is just a placeholder. The easiest way to remove it is to reverse the logic of your condition.
Example Code:
for i in range(1, 6):
if i == 2:
pass # Something to-do
else:
print("Processing:", i)
Alternative: Reverse Condition
By changing == to !=, we completely eliminate the need for an empty block.
for i in range(1, 6):
if i != 2:
print("Processing:", i)
I’m waiting for a lecturer who accepts the use of break and continue.