Ik hoop dat het goed gaat met de Python smooth refreshers-serie. Laat me je snel eraan herinneren dat het doel van deze serie is om je op een vloeiende manier de belangrijkste concepten te leren die je moet begrijpen om vooruit te komen in je Python-leertraject.
Herinner je je die dag dat je 10 bloemen water moest geven? Of wanneer je 20 kopjes water moest vullen? Je deed dezelfde taak op elke bloem of beker water. Zo'n herhaling wordt genoemd looping in programmeren.
Om een idee te geven van het belang van looping, zegt u dat u een programma aan het schrijven was dat dezelfde verklaring 100.000 keer zou moeten afdrukken. Zou je deze verklaring 100.000 keer durven herhalen, manueel ?! Ik zal niet, en ik denk dat je dat ook niet zult doen. Ik weet zeker dat je veel belangrijkere dingen te doen hebt. Hier komt dus de schoonheid van het lussen.
Zonder verder oponthoud, laten we de Python manier van lussen zien.
In dit type iteratie, zolang als test is aan het evalueren waar
, de verklaring of het blok van verklaringen blijft uitvoeren. Zo blijft de controle behouden looping terug naar het begin van de instructie (d.w.z. test), en zal de controle afhandelen naar de volgende verklaring (en) als de test evalueert vals
. Als de test altijd evalueert naar waar, in dit geval is wat we hebben een oneindige lus.
De algemene syntaxis voor de while-statement is heel eenvoudig en ziet er als volgt uit:
while test: # loop test statements # loop body
Denk aan de oneindige lus die ik al een tijdje geleden noemde? Dat wil zeggen, de lus die nooit stopt omdat de test altijd waar is? Laten we een voorbeeld van een dergelijke lus bekijken:
while 1: print 'Ik ben een oneindige lus. Ctrl-C om me te stoppen! '
De waarde 1
is een andere vorm van de booleaanse waarde waar
. Dus als je schrijft terwijl het waar is
, dit komt overeen met de while-statement in het voorbeeld. Zoals u zult merken, blijft u de afdrukinstructies oneindig laten weergeven.
Klik gewoon op om de lus te beëindigen Besturing C op je toetsenbord. De onderstaande figuur laat zien hoe het programma oneindig liep en werd onderbroken door het toetsenbord (dat wil zeggen Control-C).
Laten we nu onze 10 prachtige bloemen water geven met Python. Dit kan als volgt worden gedaan:
bloemen = 1 terwijl bloemen <= 10: print 'Water the flower # ' + str(flowers) flowers = flowers + 1
Het resultaat van het programma kan in de volgende afbeelding worden weergegeven:
Laat me, voordat ik verder ga, enkele punten verduidelijken in het bovenstaande Python-script. Je vraagt je misschien af wat str ()
is en waarom we het hier hebben gebruikt. Gebaseerd op de documentatie:
Retourneer een tekenreeks met een mooi afdrukbare weergave van een object. Voor strings retourneert dit de tekenreeks zelf. Het verschil metrepr (object)
is datstr (object)
probeert niet altijd een tekenreeks terug te geven die acceptabel iseval ()
; het doel is om een afdrukbare tekenreeks terug te sturen. Als er geen argument wordt gegeven, wordt de lege tekenreeks geretourneerd,"
.
Met andere woorden, str ()
retourneert een afdrukbare tekenreeksrepresentatie van het object. Maar waarom? Laten we eens kijken wat Python zou klagen als we het niet zouden gebruiken str ()
:
Traceback (meest recente oproep laatste): bestand 'test.py', regel 3, inprint 'Water the flower #' + flowers TypeError: kan 'str' en 'int' objecten niet aaneenschakelen
Dus het probleem is dat een str
kan niet worden samengevoegd met int
.
Het andere punt dat ik wil noemen, is het gebruik van bloemen = bloemen + 1
. Als we een dergelijke verklaring niet zouden gebruiken, zouden we een oneindige lus hebben waar de waarde van bloemen zou blijven 1
, en dus altijd minder dan 10
(altijd waar).
De for loop
is een iteratie die door de items van een geordende volgorde zoals lijsten, woordenboeksleutels, tuples, strings, enz.
De Python for loop
syntaxis ziet er als volgt uit:
voor var op volgorde: verklaring (en)
Waar var
zal de items van de reeks (d.w.z. lijst, tuple) houden die de for loop
zal itereren, zodat de for loop
body wordt uitgevoerd voor elk item in de reeks.
Tijd voor enkele voorbeelden op de for loop
!
languages = ['Arabic', 'English', 'French', 'Spanish'] counter = 0 for lang in languages: print 'Deze taal staat in de lijst:' + languages [counter] counter = counter + 1
Wat gebeurt er als we initialiseren teller = 1
? In dit geval krijgt u de onderstaande foutmelding omdat op een bepaald moment in de lus de index buiten het lijstbereik valt:
Traceback (meest recente oproep laatste): bestand 'test.py', regel 4, inprint 'Deze taal staat in de lijst:' + talen [teller] IndexError: lijst index buiten bereik
Een kleine quiz. Wat zou de uitvoer van de volgende lus zijn? (hint: onthoud dat Python begint vanaf te tellen 0
):
voor x binnen het bereik (1,5): print x
De subsecties hieronder tonen enkele uitspraken die vaak binnen lussen worden gebruikt.
De verklaring breken
zorgt ervoor dat de lus wordt beëindigd en de uitvoering van het programma wordt voortgezet in de volgende instructie.
Een voorbeeld van gebruik breken
wordt hieronder getoond. Het laat zien hoe het programma stopt (breken
) de lus wanneer de if-statement
evalueert naar waar
.
getallen = [1,2,3,4,5,6,7,8,9,10] waarde = 1 terwijl de waarde in cijfers is: if value == 5: break print 'I \' m # '+ str (value ) waarde = waarde + 1 print 'Sorry, ik moest de lus afsluiten toen de waarde 5 werd'
Deze instructie stuurt de controle terug naar het begin van de lus en negeert eventuele uitspraken in de lus die daarna komt. Laten we het volgende voorbeeld eens bekijken:
getallen = [1,2,3,4,5,6,7,8,9,10] waarde = 1 terwijl waarde in cijfers: als waarde < 5: print 'I\'m # ' + str(value) value = value + 1 continue print 'I\'m in the if-condition, why are you ignoring me?!' elif value == 5: break print ('I have reached the last statement in the program and need to exit')
Heb je erachter hoe doorgaan met
werken? Wat denk je dat de uitvoer van dit Python-script zou zijn? Ga je gang, probeer het eens.
Deze verklaring is een beetje lastig. De voorbij lopen
verklaring is een nul
verklaring, dat is dat het niets doet. Maar waarom gebruiken we het? Stel dat u een programma aan het schrijven was, en op een gegeven moment wist u niet zeker wat er in het programma moest gaan for-statement
bijvoorbeeld, als volgt:
getallen = [1,2,3,4,5,6,7,8,9,10] waarde = 1 voor waarde in getallen: # niet zeker wat hier te doen, print nog ('Ik heb de laatste verklaring bereikt in de programma en moet afsluiten ')
Als u het programma probeert uit te voeren, krijgt u de volgende foutmelding:
Bestand "test.py", regel 6 print ('Ik heb de laatste verklaring in het programma bereikt en moet afsluiten') ^ IndentationError: verwacht een ingesprongen blok
Dus klaagt Python dat er een verklaring moet zijn binnenin de for loop
. Als je typt voorbij lopen
in de for loop
, de uitvoer van het programma zal zijn:
Ik heb de laatste verklaring in het programma bereikt en moet afsluiten
Hieruit kunnen we concluderen voorbij lopen
fungeert als een tijdelijke aanduiding om het programma uit te voeren, zelfs als u nog niet hebt besloten welke vereiste verklaring (en) op een plaats van de code moet gaan.
De anders
Deze verklaring spreekt voor zich en bevat eenvoudigweg een blok met instructies die moeten worden uitgevoerd wanneer de lus op een normale manier wordt afgesloten, en niet door een breken
. Een voorbeeld van het gebruik ervan is als volgt:
getallen = [1,2,3] waarde = 1 terwijl waarde in cijfers: print 'I \' m # '+ str (waarde) waarde = waarde + 1 anders: print' Ik maak deel uit van het else statement-blok ' print 'Ik maak ook deel uit van het else statement-blok'
Om dit artikel af te sluiten en me het belang van looping voor te stellen, herinner ik me toen ik die beeldanalyseoperaties moest uitvoeren elke pixel van een afbeelding.
Dit doen op een afbeelding met formaat 256x256
betekent alleen dat ik de bewerkingen 65.536 keer moest herhalen (dit is het aantal pixels)! Looping om te redden!