/ / Par cilpu: piemēri un iespējamās kļūdas

Par cilpu: piemēri un iespējamās kļūdas

Datorzinātnēs tiek izmantota cilpadarīt to pašu darbību daudzas reizes. Piemēram, izņemiet preces no saraksta pa vienam, kārtojiet numurus noteiktā diapazonā un izpildiet atbilstošo skriptu katram no tiem.

Par cilpu, atšķirībā no tā, tiek izmantots visbiežāk. Abas opcijas ir pieejamas visās programmēšanas valodās. Vairākās PLs tas ir sintakses un semantiski identisks.

Python a for loop sastāv no:

  • operatoram;
  • piešķirtā mainīgā vārds;
  • saraksts tiek apstrādāts;
  • funkciju struktūras un papildu operatori.

Atšķirībā no C līdzīgām valodām instrukcijas navatdalīti ar cirtainām lencēm {}. Lai to izdarītu, izmantojiet operatoru ":" pēc nosacījuma bloka un tabulēšanas cilpa ķermenī. Bez ievilkšanas cilnes kods nedarbosies un parādīsies kļūda.

Kā papildu operatori, turpināt, pārtraukt, nodot izmanto - norādes, lai izlaistu iterāciju, cikla beigas, beidzot iterāciju. Tie ir norādīti pēc dažu citu nosacījumu bloka.

Cikls par

Šo ciklu izmanto, lai atkārtotu visus kolekcijas elementus. Iestatiet formātā

mainīgam sarakstā: instrukcija

Cikla shēma

Tas atgādina foreach cilpu no C ++

foreach (ierakstiet vienumu komplektā) {};  priekš i "sveika pasaule":  drukāt (i * 2, beigas = "")  hheelllloo wwoorrlldd

Programmā Python for cikls ir kopīgs - instrukcijas pamattekstā tiek izpildītas katram saraksta dalībniekam, skaidri nenorādot secību. Instrukcijas tiek izpildītas optimālākajā secībā.

Mainīgais i tiek piešķirts katram objektam nokolekcija. Saraksta elementi var būt skaitliski un virknes, taču tiem jābūt vesela skaitļa tipiem. Strādājot ar daudzdimensionāliem masīviem, mainīgais i tiks saprasts kā ligzdoti masīvi.

list_of_lists = [["hammerhead", "great white", "dogfish"], [0, 1, 2], [9.9, 8.8, 7.7]]  sarakstam list_of_lists:  izdrukāt (saraksts)  ["āmurzivs", "lielais baltais", "suns"]  [0, 1, 2]  [9.9, 8.8, 7.7]

Lai parādītu katru ligzdotā masīva elementu, jāizmanto ligzdotās cilpas.

Turpināt

Operators ļauj izlaist daļu no for loop unpārejiet uz nākamo atkārtojumu. Tas tiek darīts, kad rodas ārējs faktors. Turpināt tiek norādīts pēc papildu if bloka, bet pats nosacījums atrodas cilpā pirms galvenā paziņojuma.

skaitlis = 0  skaitlim diapazonā (10):  skaitlis = skaitlis + 1  ja skaitlis == 5:  turpināt # šeit ir turpinājuma paziņojums  drukāt (str (numurs))  drukāt ("Beigas")

Katrs skaitlis vērtību sarakstā no 0 līdz 10palielina mainīgo skaitli, kas sākotnēji ir nulle. Kad skaitlis sasniedz vērtību 5, cilpa beigsies un sāksies nākamā atkārtošana. Izrādīsies:

viens  2  3  četri  6  7  astoņi  deviņi  10  Beigas

Pārtraukums

Operators tiek izmantots kopā ar nosacījumu if. Šis dizains pilnībā pārtrauc ciklu, kad rodas kāds faktors.

Cilpas pārtraukuma operators
skaitlis = 0  skaitlim diapazonā (10):  skaitlis + = 1  ja skaitlis == 5:  pārtraukums # pārtraukums  drukāt ("Skaits =" + str (skaitlis))  drukāt ("Out of loop")

Šeit paziņojums if definē nosacījumu: ja mainīgā skaitļa vērtība ir 5, cilpa tiek pārtraukta. Katrā atkārtojumā tiek izpildīta pirmā drukas () metode, kas parāda paziņojumu

Skaitlis = 5.

Kad cilpa tiek pārtraukta ar pārtraukuma paziņojumu, tiek izpildīta nākamā drukas () metode.

Vēl viens piemērs pārbauda, ​​vai otrais skaitlis ir dalāms ar pirmo bez atlikuma.

n diapazonā (2, 10): x diapazonā (2, n): ja n% x == 0: drukāt (n, "vienāds", x, "*", n // x) pārtraukums cits: # cilpa nokrita, neatrodot faktoru drukāt (n, "ir galvenais skaitlis")

Šajā gadījumā tiek izmantota ligzdota cilpa.Pirmkārt, visi termini no skaitļu kopas diapazonā no 2 līdz 10 tiek uzskatīti par n. Katram n ir noteikts jauns saraksts ar elementiem no 2 līdz n. Tādējādi mums ir 8 dažāda garuma masīvi. Visus iegūto kolekciju elementus norāda mainīgais x. Nosacījums if tagad pārbauda, ​​vai n / x rezultāts ir vesela skaitļa vērtība. Ja tā ir taisnība, cilpa saplīst, ekrānā tiek parādīts kāds ziņojums. Ja n / x dala ar atlikušo daļu, tiek parādīts cits ziņojums.

Pass

Operators ir nepieciešams, lai ignorētu papildu nosacījumus.

skaitlis = 0 skaitlim diapazonā (10): skaitlis + = 1 ja skaitlis == 5: iziet drukāt (str (numurs)) drukāt ("Beigas")

Programma rīkojas tā, it kā nosacījums, ja skaitlis == 5 nepastāv. Parādīsies monitors

viens  2  3  četri  pieci  6  7  astoņi  deviņi  10  Beigas

Mēs to redzam caurlaides operatora izpildes laikānekas nenotiek. To lieto kā stumbru tikai tur, kur tas ir sintaktiski nepieciešams. Piemēram, izstrādājot jaunu klasi ar metodēm, kuras nav jāievieš.

klase MyClass (objekts):  def meth_a (pats):  iziet  def meth_b (pats):  drukāt "I" m meth_b "

Funkcijai metha vēl nav savas instrukcijas. Bet Python prasa, lai, ja, izņemot def, klases kodu bloki nebūtu tukši. Pretējā gadījumā parādīsies kļūdas ziņojums.

IndentationError: gaidāms ievilkts bloks.

Tā vietā varat norādīt caurlaidi.

klase CompileError (izņēmums):  iziet

Vēl viens pases paziņojuma izmantošanas mērķis ir nepārprotami pateikt neko nedarīt.

To var redzēt citā for and pass cilpas piemērā:

t diapazonā (25):  darīt (t)  ja t = = 20:  iziet

Šis koda fragments atkārto saraksta vienumusno 0 līdz 25. Tie tiek uzskatīti par mainīgo t. Katrā atkārtojumā tiek izpildīta funkcija do (). Ja vēlaties, lai kaut kas nenotiktu kādai vērtībai, tiek norādīta caurlaide. Piemēram, do funkcija izdrukā ziņojumu 24 reizes un izlaiž instrukciju pie t = 20.

Masīvi

Cilpas programmām palīdz izveidot vērtību secību un piešķirt tās mainīgajiem.

Masīvi un cilpa

Iespējams šāds ieraksts:

i i [0, 1, 2, 3, 4, 5]:  drukāt i ** 2

Ja sarakstā būtu vairāk elementu, būtu racionālāk izveidot atsevišķu masīvu.

masīvs = [1, 2, 3, 4, 5, 6, 7, 8, 9]  masīvā:  drukāt i

Lai izveidotu tādus sarakstus kā

masīvs = [1, 2, 3, 4, 5, 6, 7, 8, 9] 

, Python ir diapazona () funkcija.Range () metodei parametru apgabalā ir trīs argumenti: sākuma vērtība, beigu vērtība, solis. Nepieciešams tikai pēdējais saraksta elements. Tādējādi diapazons (5) nozīmēs, ka masīvā ir skaitļi no 0 līdz 5. Ja ir norādīts solis, tad jānosaka arī sākuma elements.

diapazons (0, 10, 2)

Mēs iegūstam:

0, 2, 4, 6, 8, 10

Stīgu saraksti

Darbs ar šādiem sarakstiem ir līdzīgs skaitliskajiem. Piemēram, ir saraksts

krāsas = ["sarkans", "zaļš", "zils", "dzeltens"]

Izstrādātāji, kas pieraduši pie C, var uzrakstīt šādu funkciju.

i diapazonā (len (krāsas)): drukas krāsas [i]

Kods darbosies bez kļūdām, taču pareizāka for loop izmantošana ir šāda:

krāsas = ["sarkans", "zaļš", "zils", "dzeltens"] krāsai krāsās: drukas krāsa
Masīva izveide

Ja jums ir nepieciešams atkārtot sarakstu no pēdējās līdz nullei, tiek izmantota apgrieztā () funkcija.

krāsas = ["sarkans", "zaļš", "zils", "dzeltens"] krāsai apgrieztā krāsā (krāsas): drukas krāsa

Šis ieraksts ir kļūdains. Atkal līdzīga lieta nāca no C valodas.

Saraksti un indeksi

Python nodrošina iebūvētas uzskaitīšanas () funkcijas masīvu indeksu manipulēšanai. Tos ir ērti izmantot pitonā cilpām.

Masīvi un indekss

Vērtību secība tiek uzskatīta par argumentu. Funkcija enumerate () atvieglo šī koda lietošanu:

i diapazonā (len (L)): vienums = L [i] # ... aprēķiniet kādu rezultātu, pamatojoties uz vienumu ...

Šeit tiek izmantota len () metode. Tas atgriež elementu skaitu, šajā gadījumā masīvu L. Daudzi elementi tiek pieņemti kā arguments diapazona () funkcijai. Tādējādi mēs definējam sarakstu [0, ... n].

Ar L [i] palīdzību mēs iegūstam piekļuvi katram masīva L elementam.

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

Funkcija uzskaitīt () novērš nepieciešamību inicializēt skaitītāja mainīgo b un atvieglo rakstīšanu

skaitītājam vērtība uzskaitījumā (L): drukāt (“rādītājs:“ skaitītājs, “vērtība:“ vērtība) ”

Rezultāts Enumerate () atgriež skaitļa vienību pāri, tāpēc ar for loop paziņojumu tiek norādīti divi mainīgie.

Funkcijas items () un iteritems (), kuras tiek izmantotas kā metodes, ir līdzīgas.

d. vienumi ()  d.iteritems ()

Divi saraksti

Ja nepieciešams izmantot vairāku sarakstu dalībniekus, tiek izmantota funkcija zip ().

Masīvu apvienošana

Tas aizņem sarakstu A un B, no tiem izveido vienu zip objektu, kas satur ligzdotus vienumus. Katrs jaunā objekta elements apvieno A un B sarakstu dalībniekus un sakārto tos pēc rādītāja.

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

Ja zip () ievade norāda 4 masīvus,zip masīva elementos katrā būs 4 elementi. Dažāda garuma masīvu iesaiņošana nerada kļūdu. Jaunajā objektā tiks ievietoti tikai tie elementi, kas satur vērtību pāri.

Zip_longest () tiek izmantots, lai katrā elementā iekļautu visus elementus, pat vienu bez pāra.

saraksts (itertools.zip_longest ((1,2,3), [4])) # [(1, 4), (2, Nav), (3, Nav)]

Kārtot pēc atslēgas

Ja ir nepieciešams ne tikai iziet cauri masīva elementiem, bet arī to modificēt, tiek izmantota taustiņu () funkcija.

Atslēga - vērtība

Metode dublē un atgriež pieejamo vārdnīcas atslēgu sarakstu.

attiecībā uz k d. taustiņos (): ja k.startswith ("R"): del d [k]

Ir masīvs d. Tās elementi tiek kopēti ar key () metodi. Katrs elements ir mainīgais k. To apstrādā, izmantojot startswith, ja ir atbilstība, vienums tiek noņemts no galvenā masīva.

startswith () atgriež karodziņu, kas pārbauda, ​​vai virkne sākas ar norādīto prefiksu. Funkcijai ir trīs argumenti: prefikss, sākums, beigas.

str.startswith (prefikss [, sākums [, beigas]]) -> bool

Nepieciešams tikai pirmais - prefikss. Tas var būt virkne vai korpuss.

my_str.startswith (‘vērtība’)

vai

my_str.startswith ((‘vērtība1’, ‘vērtība2’))

Ja parametru laukā ir nepieciešamas vairākas rindas, elementi tiek iesaiņoti papildu iekavās ().

Sākuma arguments norāda uz elementa indeksu arkuru sāk skaitīšana. Tiek atbalstītas pozitīvās un negatīvās vērtības. Ja sākums = -x, tad meklēšana sākas no elementa beigām indeksā x. Beigu parametrs apzīmē pēdējo rakstzīmi, kurā jāpārtrauc virknes parsēšana. Tas atbalsta arī negatīvās vērtības. Ja beigas = -x, pēdējais saraksta dalībnieks ar indeksu x no sākuma.

Funkcija endswith () darbojas pēc analoģijas ar startswith (). Tas pārbauda, ​​vai virkne beidzas ar norādīto postfix. Tam ir trīs parametru sufikss, sākums, beigas un atgriež arī Būla vērtību.

Sarakstu apvienošana

Ja jums jāpievieno divu masīvu elementi,ātrākais veids ir izmantot virkni dict (izip (1. masīvs, 1. masīvs)) metožu. Šajā gadījumā elementi nav kārtoti secīgi pēc kārtas, bet gan formā:

'1. masīva elements': '2. masīva elements'
vārdi = ["Raymond", "Rachel", "Matthew"] krāsas = ["sarkans", "zaļš", "zils"] d = dict (zip (nosaukumi, krāsas)) # {"matthew": "zils", "rachel": "zaļš", "raymond": "sarkans"}

Metode dict () izveido vārdnīcu, kuras iekšpusēvērtības tiek izvietotas iepriekš minētajā veidā - caur “:”. Masīva 2 elements tiek izmantots kā galvenā vērtība. Lai to izsauktu, jums tas jāatsauc pēc indeksa - masīva 1 vērtība.

d ['raymond']  #sarkans

Saraksta dalībnieku skaitīšana

Lai uzzinātu, no cik elementiem sastāv saraksts, izmantojiet funkciju get ().

d.get (atslēga, noklusējums = Neviens)

Šī metode pārbauda, ​​vai vārdnīcā d nav atslēgas, un atgriež indeksa atslēgu [rādītājs].

krāsas = ["sarkans", "zaļš", "sarkans", "zils", "zaļš", "sarkans"] d = {} krāsai krāsās: d [krāsa] = d.get (krāsa, 0) + 1

Get () metode ir ērtāka un ātrāka šī koda analogs.

krāsas = ["sarkans", "zaļš", "sarkans", "zils", "zaļš", "sarkans"]  d = {}  krāsai krāsās:  ja krāsa nav d:  d [krāsa] = 0  d [krāsa] + = 1

Šie ir galvenie for loop piemēri un iespējamās kļūdas.