Werk herhalen met lussen · oefening
Stop een lus met break
Een while True-lus kan niet stoppen doordat haar voorwaarde verandert. In de vorige les lieten we er bewust een draaien, wachtend op een uitgang vanuit het blok.
Die uitgang is break. Zodra Python daar komt, eindigt de huidige lus meteen en gaat de uitvoering verder op de eerste regel onder de lus.
Stop zodra het antwoord is gevonden
Zoeken is een logisch eerste gebruik. Zodra je vindt wat je nodig hebt, hoef je niet verder te zoeken:
De lus controleert drie namen, geen vier. Als name gelijk is aan "Alan", slaat break alle resterende items over. De laatste print() wordt nog wel uitgevoerd, omdat die onder de lus staat, niet erin.
Zonder break zou deze kleine zoekactie alleen één overbodige controle doen. Bij een lange lijst of als elke controle echt werk kost, is stoppen zodra je het antwoord hebt belangrijk.
Geef while True een zichtbare uitgang
De onvoltooide vorm uit de vorige les kan nu een menu worden dat openblijft totdat de gebruiker kiest om te stoppen:
while True:
command = input("Type help or quit: ").strip().lower()
if command == "help":
print("Try one small command at a time.")
elif command == "quit":
break
else:
print("I do not know that command.")
print("Goodbye")
Lees het belangrijke pad op volgorde:
while Truebegint een nieuwe ronde.Het programma vraagt om een opdracht.
quitleidt naarbreak.Python verlaat de lus en drukt
Goodbyeaf.
De lus heeft bewust geen vooraf bepaald einde, maar de uitgang is niet verborgen. Je kunt precies aanwijzen welke keuze tot break leidt.
Zet het resultaat vóór break
break vertrekt meteen, dus sla alles wat je nog nodig hebt ervoor op:
Als de toewijzing onder break stond, zou Python die nooit bereiken. Dat is een nuttige vraag bij het debuggen: ‘Heb ik het antwoord opgeslagen voordat ik vertrok?’
Wat drukt deze code af?
for value in [3, 7, 11, 15]:
if value > 10:
break
print(value)
print("end")Een lus zoekt in een lijst naar de eerste onbetaalde bestelling. Wat moet ze direct na het opslaan van die bestelling doen?
Gebruik nu break in één gerichte zoekactie. In de volgende les leer je het andere idee: één ronde overslaan zonder de hele lus te beëindigen.
Opdracht
Een sensor heeft een lijst met metingen vastgelegd. Zoek de eerste meting van 30 of hoger.
Schrijf één for-lus over readings die:
bij elke onderzochte meting
1bijcheckedoptelt;als een meting
30of hoger is, die opslaat infirst_highen metbreakde lus stopt.
Behoud de twee overzichtsregels, die één keer na de lus worden uitgevoerd.
Verwachte uitvoer:
Readings checked: 3
First high reading: 30
Een meting van precies 30 telt als 30 of hoger. De lus moet dus daar stoppen en nooit naar 45 of 9 kijken. Sla de meting vóór break op, want Python verlaat de lus meteen.