/ / For loop: príklady a možné chyby

Pre slučku: príklady a možné chyby

V informatike sa používa for loopAk chcete urobiť ten istý typ akcie mnohokrát. Napríklad, aby ste tovar stiahli zo zoznamu jeden po druhom, aby ste vyriešili čísla v určitom rozsahu a vykonali príslušný skript pre každý z nich.

Smyčka for je na rozdiel od while najbežnejšie používanou slučkou. Obe možnosti existujú vo všetkých programovacích jazykoch. Vo viacerých jazykoch je syntakticky a sémanticky identický.

V pytóne sa for slučka skladá z:

  • pre vyhlásenie;
  • názov priradenej premennej;
  • spracovaný zoznam;
  • funkcií tela a ďalších operátorov.

Na rozdiel od jazykov typu C, pokyny niesú oddelené kučeravými závorami {}. Ak to chcete urobiť, použite operátor ":" po podmienke blokovania a tabuľku v tele smyčky. Bez odsadenia kód nefunguje a objaví sa chyba.

Ako ďalší operátori používajú pokračovať, zlomiť, prejsť - ukazovatele, aby preskočili iteráciu, ukončili slučku a preskočili iteráciu. Sú špecifikované po bloku niektorých podmienok if-else.

Slučka pre

Tento cyklus sa používa na vymenovanie všetkých prvkov zbierky. Nastavte vo formáte

pre premennú v zozname: vyhlásenie

Schéma cyklu

To sa podobá foreach slučke z C ++

foreach (položka typu v množine) {};

pre i v "hello world":

tlač (i * 2, koniec = "")

hheelllloo wwoorrlldd

V Pythone je for slučka spoločná - pokyny v tele sú vykonávané pre každého člena zoznamu bez výslovného uvedenia sekvencie. Vykonanie inštrukcie prebieha v najvhodnejšom poradí.

Переменной i присваивается каждый объект из kolekcie. Položky zoznamu môžu byť numerické a reťazcové, ale vždy typu integer. Pri práci s multidimenzionálnymi poliami bude premenná i chápaná ako vnorené polia.

list_of_lists = [["hammerhead", "great white", "dogfish"], [0, 1, 2], [9.9, 8.8, 7.7]]

pre zoznam v zozname listov:

vytlačiť (zoznam)

["hammerhead", "veľký biely", "žralok"]

[0, 1, 2]

[9.9, 8.8, 7.7]

Ak chcete zobraziť každý prvok vnoreného poľa, musíte použiť vnorené slučky.

pokračovať

Оператор позволяет пропустить часть цикла for и prejsť na ďalšiu iteráciu. To sa robí, keď sa vyskytne externý faktor. Pokračovanie je indikované po prídavnom bloku, ale samotná podmienka je vo vnútri slučky pred hlavným pokynom.

číslo = 0  pre číslo v rozsahu (10):  číslo = číslo + 1  ak číslo == 5:  pokračovať # tu je vyhlásenie pokračovať  print (str (number))  tlačiť („Koniec“)

Každé číslo v zozname hodnôt od 0 do 10zvyšuje číslo premennej, ktoré je spočiatku nulové. Keď je číslo nastavené na 5, cyklus sa ukončí a začne sa ďalšia iterácia. Ukázalo sa:

jeden  2  3  4  6  7  8  deväť  desať  Koniec

Prestávka

Operátor sa používa v spojení s podmienkou if. Táto konštrukcia úplne preruší cyklus, keď dôjde k určitému faktoru.

Operátor prerušenia slučky
číslo = 0  pre číslo v rozsahu (10):  číslo + = 1  ak číslo == 5:  zlomiť # zlomiť  print ("Number =" + str (number))  tlačiť („mimo slučku“)

Tu príkaz if definuje podmienku: ak je hodnota premennej number 5, cyklus je ukončený. Pri každej iterácii sa vykoná prvá metóda print () a zobrazí sa oznámenie

Počet = 5.

Keď je slučka zastavená príkazom break, vykoná sa ďalšia metóda print ().

Iný príklad kontroluje, či je druhé číslo deliteľné prvým bez zvyšku.

pre n v rozsahu (2, 10): pre x v rozsahu (2, n): ak n% x == 0: print (n, "equals", x, "*", n // x) prestávka inak: # slučka prepadla bez hľadania faktora print (n, „je prvočíslo“)

V takom prípade sa použije vnorená slučka.Najskôr sa všetky výrazy zo sady čísel v rozsahu od 2 do 10 považujú za n. Pre každé n je definovaný nový zoznam s prvkami od 2 do n. Máme teda 8 polí rôznych dĺžok. Všetky prvky z výsledných kolekcií sú určené premennou x. Teraz podmienka if kontroluje, či je výsledok n / x celočíselná hodnota. Ak je to pravda, slučka sa pretrhne, zobrazí na obrazovke nejakú správu. Ak je n / x vydelené zvyškom, zobrazí sa ďalšia správa.

Prejdite

Prevádzkovateľ je povinný ignorovať ďalšie podmienky.

číslo = 0 pre číslo v rozsahu (10): číslo + = 1 ak číslo == 5: prejsť print (str (number)) tlačiť („Koniec“)

Program funguje, akoby podmienka, ak number == 5 neexistuje. Zobrazí sa monitor

jeden  2  3  4  5  6  7  8  deväť  desať  Koniec

Vidíme to počas vykonávania priepustkynič sa nedeje. Používa sa ako pahýľ iba tam, kde je to syntakticky nevyhnutné. Napríklad pri vývoji novej triedy s metódami, ktoré nie je potrebné implementovať.

trieda MyClass (objekt):  def meth_a (seba):  prejsť  def meth_b (self):  tlač „ja som meth_b“

Funkcia meth_a ešte nemá vlastnú inštrukciu. Python však vyžaduje, aby bloky bloku kódu, okrem triedy def, neboli prázdne. V opačnom prípade sa zobrazí chybové hlásenie.

IndentationError: očakáva sa odsadený blok.

Namiesto toho môžete určiť priechod.

trieda CompileError (výnimka):  prejsť

Ďalším účelom použitia príkazu pass je výslovne povedať, že nič nerobiť.

Toto je možné vidieť na ďalšom príklade slučky for and pass:

pre t v rozsahu (25):  robiť (t)  ak t == 20:  prejsť

Tento útržok kódu iteruje nad položkami zoznamuod 0 do 25. Považujú sa za premennú t. Pri každej iterácii sa vykoná nejaká funkcia do (). Ak nechcete, aby sa pri nejakej hodnote stalo vôbec nič, je zadaný pass. Napríklad funkcia do vytlačí správu 24-krát a preskočí inštrukciu na t = 20.

poľa

Programy vám pomôžu vytvoriť sled hodnôt a priradiť ich k premenným.

Polia a slučka

Je možný tento záznam:

pre i v [0, 1, 2, 3, 4, 5]:  tlačiť i ** 2

Ak by zoznam mal viac prvkov, bolo by racionálnejšie vytvoriť samostatné pole.

pole = [1, 2, 3, 4, 5, 6, 7, 8, 9]  pre v poli:  tlačiť i

Ak chcete vytvoriť zoznamy ako

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

, Python má funkciu range ().Metóda range () má v oblasti parametrov tri argumenty: začiatočná hodnota, konečná hodnota, krok. Vyžaduje sa iba posledný prvok zoznamu. Rozsah (5) bude teda znamenať, že pole obsahuje čísla od 0 do 5. Ak je zadaný krok, musí sa určiť aj počiatočný prvok.

rozsah (0, 10, 2)

Dostaneme:

0, 2, 4, 6, 8, 10

Zoznamy reťazcov

Práca s takýmito zoznamami je podobná ako s číselnými. Napríklad existuje zoznam

farby = ["červená", "zelená", "modrá", "žltá"]

Vývojári zvyknutí na jazyk C môžu napísať nasledujúcu funkciu.

pre i v rozsahu (len (farby)): tlačiť farby [i]

Kód pobeží bez chýb, ale správnejšie použitie slučky for vyzerá takto:

farby = ["červená", "zelená", "modrá", "žltá"] pre farbu vo farbách: farba tlače
Tvorba poľa

Ak potrebujete prechádzať zoznamom od poslednej po nulu, použije sa funkcia obrátená ().

farby = ["červená", "zelená", "modrá", "žltá"] pre obrátenú farbu (farby): farba tlače

Nasledujúci záznam je chybný. Podobné veci opäť pochádzali z jazyka C.

Zoznamy a indexy

Python poskytuje zabudované funkcie enumerate () na manipuláciu s indexmi polí. Sú vhodné na použitie v pythone pre slučky.

Polia a index

Poradie hodnôt sa považuje za argumenty. Funkcia enumerate () uľahčuje použitie nasledujúceho kódu:

pre i v rozsahu (len (L)): položka = L [i] # ... vypočítať nejaký výsledok na základe položky ...

Používa sa tu metóda len (). Vráti počet prvkov, v tomto prípade pole L. Sada prvkov sa považuje za argument funkcie range (). Definujeme teda zoznam [0, ... n].

Pomocou L [i] získame prístup ku každému prvku poľa L.

L [0], L [1], L [2] atď.

Funkcia enumerate () eliminuje potrebu inicializácie premennej počítadla b a uľahčuje zápis

pre počítadlo hodnota v zozname (L): tlačiť („index:“ počítadlo, „hodnota:“ hodnota)

Enumerate () vráti pár protipoložiek, takže s príkazom for loop sú určené dve premenné.

Funkcie items () a iteritems () sú podobné a používajú sa ako metódy.

d.položky ()  d.iteritems ()

Dva zoznamy

Ak potrebujete použiť členov viacerých zoznamov, použije sa funkcia zip ().

Kombinované polia

Berie zoznam A a zoznam B a vytvorí z nich jediný objekt zip, ktorý obsahuje vnorené n-tice. Každý prvok nového objektu sa pripája k členom zoznamov A a B a triedi ich podľa indexu.

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

Ak vstup zip () určuje 4 polia,prvky poľa zip budú obsahovať každý 4 prvky. Balenie polí rôznych dĺžok neznamená chybu. Do nového objektu budú umiestnené iba tie prvky, ktoré obsahujú hodnotový pár.

Zip_longest () slúži na zahrnutie každého prvku do n-tice, aj jedného bez páru.

zoznam (itertools.zip_longest ((1,2,3), [4])) # [(1, 4), (2, žiadne), (3, žiadne)]

Zoradiť podľa kľúča

Keď je potrebné nielen prechádzať prvkami poľa, ale aj ich modifikovať, použije sa funkcia keys ().

Kľúč - hodnota

Metóda duplikuje a vráti zoznam dostupných kľúčov slovníka.

pre k v d.kľúčoch (): ak k.startswith ("R"): del d [k]

Existuje pole d. Jeho prvky sa kopírujú metódou keys (). Každý prvok je premenná k. Spracúva sa pomocou startupsith, ak sa zhoduje, položka sa odstráni z hlavného poľa.

startswith () vráti príznak, ktorý skontroluje, či reťazec začína zadanou predponou. Funkcia má tri argumenty: prefix, start, end.

str.startswith (predpona [, štart [, koniec]]) -> bool

Vyžaduje sa iba prvý - predpona. Môže to byť šnúrka alebo n-tica.

my_str.startswith („hodnota“)

alebo

my_str.startswith ((„hodnota1“, „hodnota2“))

Ak sa v poli parametrov vyžaduje viac riadkov, položky sa zalomia do ďalších zátvoriek ().

Argument start ukazuje na index prvku sktoré začína odpočítavanie. Kladné a záporné hodnoty sú podporované. Ak start = -x, potom sa hľadanie začne od konca prvku v indexe x. Koncový parameter označuje posledný znak, pri ktorom sa má zastaviť analýza reťazca. Podporuje tiež záporné hodnoty. S end = -x, posledný člen zoznamu s indexom x od začiatku.

Funkcia endswith () funguje analogicky s funkciou startwith (). Skontroluje, či sa reťazec končí zadanou príponou. Má príponu troch parametrov: start, end a vráti tiež logickú hodnotu.

Kombinovanie zoznamov

Ak potrebujete spojiť prvky dvoch polí,najrýchlejší spôsob je použiť zväzok metódy dict (izip (pole 1, pole 1)). V tomto prípade nie sú prvky usporiadané postupne jeden za druhým, ale vo forme:

„Array element 1“: „array element 2“
names = ["raymond", "rachel", "matthew"] colors = ["red", "green", "blue"] d = dict (zip (mená, farby)) # {"matthew": "modrá", "rachel": "zelená", "raymond": "červená"}

Metóda dict () vytvorí slovník, vo vnútri ktoréhohodnoty sú umiestnené vyššie uvedeným spôsobom - cez „:“. Ako hlavná hodnota sa používa prvok poľa 2. Ak ho chcete nazvať, musíte ho označiť indexom - hodnotou poľa 1.

d ['raymond']  #red

Počítam členov zoznamu

Ak chcete zistiť, z koľkých prvkov sa zoznam skladá, použite funkciu get ().

d.get (kľúč, predvolené = žiadne)

Táto metóda skontroluje prítomnosť kľúča v slovníku d a vráti indexový kľúč [index].

colors = ["red", "green", "red", "blue", "green", "red"] d = {} pre farbu vo farbách: d [farba] ​​= d.get (farba, 0) + 1

Metóda get () je pohodlnejším a rýchlejším analógom nasledujúceho kódu.

colors = ["red", "green", "red", "blue", "green", "red"]  d = {}  pre farbu vo farbách:  ak farba nie je d:  d [farba] ​​= 0  d [farba] ​​+ = 1

Toto sú základné príklady a možné chyby cyklu for.

páčilo sa:
0
Populárne príspevky
Duchovný rozvoj
jedlo
y