/ / For loop: eksempler og mulige fejl

For-loop: eksempler og mulige fejl

I datalogi er en for loop brugt tilat udføre den samme type handling mange gange. Tag f.eks. Et produkt fra listen en efter en, iterere over numrene i et bestemt interval og udfør det tilsvarende script for hver af dem.

I modsætning til når den er den mest anvendte løkke. Begge indstillinger findes på alle programmeringssprog. På et antal sprog er det syntaktisk og semantisk identisk.

I python består en for loop af:

  • til operatør;
  • navnet på den variabel, der skal tildeles;
  • listen, der behandles
  • funktionsorgan og yderligere operatører.

I modsætning til C-lignende sprog er instruktioner ikkeadskilt af krøllede seler {}. For at gøre dette skal du bruge operatøren “:” efter blokeringsforhold og tabulering i cyklusens krop. Uden fanebladindrykning mislykkes koden, og der vises en fejl.

Fortsæt, bryt, pass bruges som yderligere operatører - pegepunkter til at springe over iteration, slutning af løkken, springe over iteration. De vises efter blokken af ​​nogle betingelser, hvis ellers.

Til sløjfe

Denne løkke bruges til at itereere over alle elementer i samlingen. Indstil i formatet

for variabel på listen: sætning

Cykeldiagram

Det minder om foreach loop fra C ++

foreach (type element i sæt) {};  for jeg i "hej verden":  print (i * 2, end = "")  hheelllloo wwoorrlldd

I Python er for-loopen samarbejdende - instruktionerne i kroppen udføres for hvert medlem af listen uden eksplicit at specificere sekvensen. Instruktionerne udføres i den mest optimale rækkefølge.

Variablen i er tildelt hvert objekt frakollektion. Elementerne p

list_of_lists = [["hammerhead", "great white", "dogfish"], [0, 1, 2], [9.9, 8.8, 7.7]]  til liste i liste_of_lister:  print (liste)  ["hammerhead", "great white", "dogfish"]  [0, 1, 2]  [9,9, 8,8, 7,7]

For at få vist hvert element i en indlejret matrix, skal du bruge indlejrede sløjfer.

Blive ved

Operatøren giver dig mulighed for at springe over en del af for-loopen oggå til næste iteration. Dette gøres, når der opstår en ekstern faktor. Fortsæt specificeres efter den yderligere if-blok, men selve betingelsen er inde i løkken før hovedopgørelsen.

antal = 0  for antal inden for rækkevidde (10):  tal = tal + 1  hvis nummer == 5:  fortsæt # her er fortsætningserklæringen  print (str (antal))  print ("Slut")

Hvert nummer i en liste over værdier fra 0 til 10trinvis øger variablen, som oprindeligt er nul. Når nummeret er indstillet til 5, slutter løkken og den næste iteration begynder. Det viser sig:

1  2  3  4  6  7  8  ni  ti  Ende

Pause

Operatøren bruges i forbindelse med if-tilstanden. Dette design afbryder cyklussen fuldstændigt, når der opstår en eller anden faktor.

Looper afbryder operatøren
antal = 0  for antal inden for rækkevidde (10):  nummer + = 1  hvis nummer == 5:  pause # pause  print ("Antal =" + str (antal))  print ("Out of loop")

Her definerer if-sætningen betingelsen: hvis værdien af ​​variabeltallet er 5, afsluttes løkken. På hver iteration udføres den første print () -metode og viser en anmeldelse

Antal = 5.

Når sløjfen stoppes af en pauseanvisning, udføres den næste udskrivningsmetode () -metode.

Et andet eksempel kontrollerer, om det andet tal kan deles med det første uden en rest.

for n inden for rækkevidde (2, 10): for x inden for rækkevidde (2, n): hvis n% x == 0: udskriv (n, "er lig", x, "*", n // x) pause andet: # loop faldt igennem uden at finde en faktor print (n, "er et primtal")

I dette tilfælde bruges en indlejret løkke. Først tages alle termer fra et sæt numre i området fra 2 til 10 som n. For hver n defineres en ny liste med elementer fra 2 til n. Vi har således 8 matriser i forskellige længder. Alle elementer fra de resulterende samlinger er specificeret af x-variablen. Nu-betingelsen kontrollerer, at resultatet af n / x er en heltalværdi. Hvis det er sandt, går løkken i stykker og viser en meddelelse på skærmen. Hvis n / x er divideret med resten, vises en anden meddelelse.

Passere

Operatøren er nødvendig for at ignorere yderligere betingelser.

antal = 0 for antal inden for rækkevidde (10): nummer + = 1 hvis nummer == 5: passere print (str (antal)) print ("Slut")

Programmet fungerer som om betingelsen, hvis nummer == 5 ikke findes. Skærmen vises

1  2  3  4  fem  6  7  8  ni  ti  Ende

Vi ser det under udførelsen af ​​passoperatørenintet sker. Det bruges kun som en stub, hvor det er syntaktisk nødvendigt. For eksempel når man udvikler en ny klasse med metoder, der ikke behøver at blive implementeret.

klasse MyClass (objekt):  def meth_a (selv):  passere  def meth_b (selv):  tryk "I" m meth_b "

Meth_a-funktionen har endnu ikke sin egen instruktion. Men Python kræver, at undtagen def, klasseblokke med kode ikke skal være tomme. Ellers vises en fejlmeddelelse.

IndenterError: forventede en indrykket blok.

Du kan angive pass i stedet.

klasse CompileError (undtagelse):  passere

Et andet formål med at bruge passerklæringen er eksplicit at sige at ikke gøre noget.

Dette kan ses i et andet eksempel på en for- og pas-loop:

for t inden for rækkevidde (25):  gør (t)  hvis t == 20:  passere

Dette kodestykker gentages over listepunkternefra 0 til 25. De behandles som variabel t. Ved hver iteration udføres nogle do () -funktioner. Hvis du overhovedet ikke ønsker, at der skal ske noget værdi, specificeres pass. F.eks. Udskriver do-funktionen meddelelsen 24 gange og springer instruktionen over ved t = 20.

arrays

For programmer, der hjælper dig med at oprette en række af værdier og tildele dem til variabler.

Arrays og Loop

Følgende registrering er mulig:

for i i [0, 1, 2, 3, 4, 5]:  tryk i ** 2

Hvis listen havde flere elementer, ville det være mere rationelt at oprette en separat matrix.

array = [1, 2, 3, 4, 5, 6, 7, 8, 9]  for i matrix:  tryk i

Sådan oprettes lister som

array = [1, 2, 3, 4, 5, 6, 7, 8, 9] 

, Python har en rækkevidde () -funktion. Metoden rækkevidde () tager tre argumenter i parameterområdet: startværdi, slutværdi, trin. Kun det sidste element på listen er påkrævet. Område (5) betyder således, at matrixen inkluderer tal fra 0 til 5. Hvis et trin er specificeret, skal startelementet også bestemmes.

rækkevidde (0, 10, 2)

Vi får:

0, 2, 4, 6, 8, 10

Strenglister

Arbejde med sådanne lister ligner numeriske lister. For eksempel er der en liste

farver = ["rød", "grøn", "blå", "gul"]

Udviklere, der er vant til C, kan skrive følgende funktion.

for i inden for rækkevidde (len (farver)): trykfarver [i]

Koden kører uden fejl, men en mere korrekt brug af for-loop ser sådan ud:

farver = ["rød", "grøn", "blå", "gul"] til farve i farver: udskriv farve
Array skabelse

Hvis du er nødt til at iterere gennem listen fra sidste til nul, bruges funktionen omvendt ().

farver = ["rød", "grøn", "blå", "gul"] for farve i omvendt (farver): udskriv farve

Følgende indlæg er forkert. Igen kom en lignende ting fra C-sproget.

Lister og indekser

Python leverer indbyggede enumerate () funktioner til at manipulere matrixindekser. De er praktiske at bruge i python til sløjfer.

Arrays og indeks

En række værdier tages som argumenter. Funktionen tæller () gør det nemt at bruge følgende kode:

for i inden for rækkevidde (len (L)): vare = L [i] # ... beregne noget resultat baseret på varen ...

Len () -metoden bruges her. Det returnerer antallet af elementer, i dette tilfælde array L. En masse elementer accepteres som et argument til funktionen rækkevidde (). Således definerer vi listen [0, ... n].

Ved hjælp af L [i] får vi adgang til hvert element i matrixen L.

L [0], L [1], L [2] osv.

Funktionen tæller () eliminerer behovet for at initialisere tællervariablen b og gør det lettere at skrive til

for tæller, værdi i tæller (L): print ("indeks:" tæller, "værdi:" værdi) "

Enumerate () returnerer et modpostpar, så to variabler er specificeret med for loop-sætningen.

Funktionerne elementer () og iteritems () er ens og bruges som metoder.

d.items ()  d.iteritems ()

To lister

Når du skal bruge medlemmer af flere lister, bruges funktionen zip ().

Kombination af matriser

Den tager liste A og liste B og laver et enkelt zip-objekt ud af dem, der indeholder indlejrede tupler. Hvert element i det nye objekt slutter sig til medlemmerne af lister A og B og sorterer dem efter indeks.

zip_object [1] = [A [1], B [1]];

Hvis zip () -indgangen specificerer 4 arrays,zip array-elementer vil hver indeholde 4 elementer. Pakningssæt i forskellige længder kaster ikke en fejl. Kun de elementer, der indeholder et værdipar, placeres i det nye objekt.

Zip_longest () bruges til at inkludere hvert element i en tuple, også et uden et par.

liste (itertools.zip_longest ((1,2,3), [4])) # [(1, 4), (2, Ingen), (3, Ingen)]

Sorter efter nøgle

Når det ikke kun er nødvendigt at gennemgå elementerne i en matrix, men at ændre den, bruges tasterne () -funktionen.

Nøgleværdi

Metoden duplikerer og returnerer en liste over tilgængelige ordbogstaster.

for k in d.keys (): hvis k.startswith ("R"): del d [k]

Der er en matrix d. Dens elementer kopieres ved hjælp af metoden nøgler (). Hvert element er en variabel k. Det behandles ved hjælp af startswith, hvis det matcher, fjernes elementet fra hovedgruppen.

startswith () returnerer et flag, der kontrollerer, om strengen starter med den specificerede præfiks. Funktionen har tre argumenter: præfiks, start, slut.

str.startswith (præfiks [, start [, slut]]) -> bool

Kun det første kræves - præfiks. Det kan være en streng eller en tuple.

my_str.startswith ('værdi')

eller

my_str.startswith (('værdi1', 'værdi2'))

Hvis der kræves flere linjer i parameterfeltet, indpakkes elementerne i yderligere parenteser ().

Startargumentet peger på indekset for elementet medsom nedtællingen begynder. Positive og negative værdier understøttes. Hvis start = -x, starter søgningen fra slutningen af ​​elementet ved indeks x. Slutparameteren angiver det sidste tegn, hvorved parring af strengen skal stoppes. Det understøtter også negative værdier. Med end = -x, det sidste medlem af listen ved indeks x fra begyndelsen.

Funktionen Ende med () fungerer analogt med start med (). Den kontrollerer, om strengen slutter med det specificerede postfix. Det har tre parametersuffiks, start, slut og returnerer også en boolesk værdi.

Kombination af lister

Hvis du har brug for at forbinde elementer fra to arrays,den hurtigste måde er at bruge dikteren (izip (array 1, matrix 1)) -gruppe metoder. I dette tilfælde er elementerne ikke arrangeret efter hinanden, men i form:

'Array element 1': 'array element 2'
names = ["raymond", "rachel", "matthew"] farver = ["rød", "grøn", "blå"] d = dict (lynlås (navne, farver)) # {"matthew": "blue", "rachel": "green", "raymond": "red"}

Metoden dict () opretter en ordbog, indeni hvilkenværdier er placeret på ovenstående måde - gennem “:”. Elementet i array 2 bruges som hovedværdi. For at kalde det skal du henvise til det efter indeks - værdien af ​​array 1.

d ['raymond']  #rød

Tæller medlemmer af en liste

Funktionen get () bruges til at finde ud af, hvor mange elementer en liste består af.

d.get (nøgle, standard = Ingen)

Denne metode kontrollerer ordbogen d for tilstedeværelsen af ​​nøgle og returnerer indeksetasten [indeks].

farver = ["rød", "grøn", "rød", "blå", "grøn", "rød"] d = {} til farve i farver: d [farve] = d.get (farve, 0) + 1

Get () -metoden er en mere praktisk og hurtigere analog til følgende kode.

farver = ["rød", "grøn", "rød", "blå", "grøn", "rød"]  d = {}  til farve i farver:  hvis farve ikke er i d:  d [farve] = 0  d [farve] + = 1

Dette er grundlæggende eksempler og mulige fejl i for-loopen.

ønsket:
0
Populære indlæg
Åndelig udvikling
mad
y