/ / Pro smyčku: příklady a možné chyby

Pro smyčku: příklady a možné chyby

В информатике цикл for используется для того, Postupujte stejným typem akce mnohokrát. Například stahování zboží ze seznamu jeden po druhém, vyřešení čísel v určitém rozsahu a provedení příslušného skriptu pro každý z nich.

Cyklus pro, na rozdíl od doby, se používá nejčastěji. Obě verze existují ve všech programovacích jazycích. V řadě SP je syntakticky a sémanticky totožná.

V pythonu se pro smyčku tvoří:

  • pro prohlášení;
  • název přiřazené proměnné;
  • zpracovaný seznam;
  • tělových funkcí a dalších operátorů.

Na rozdíl od jazyků typu C, pokyny nejsoujsou odděleny kudrnými příchytkami {}. Chcete-li to provést, použijte operátor ":" po stavovém bloku a tabulku v těle smyčky. Bez odsazení kódu nefunguje a objeví se chyba.

Jako další operátoři použijte pokračování, přerušení, průchodné ukazatele na přeskočení iterace, ukončení smyčky, přeskočení iterace. Jsou specifikovány po bloku některých podmínek if-else.

Pro smyčku

Tento cyklus slouží k výčtu všech prvků sbírky. Nastavte ve formátu

pro proměnnou v seznamu: prohlášení

Schéma cyklu

To se podobá foreach smyčce z C ++

foreach (typ položky v sadě) {};

pro i v "hello world":

tisk (i * 2, konec = "")

hheelllloo wwoorrlldd

V Pythonu je smyčka for for spolupráce - tělesné instrukce jsou prováděny pro každého člena seznamu bez výslovného určení sekvence. K provádění pokynů dochází v nejoptimálnějším pořadí.

Переменной i присваивается каждый объект из kolekce. Položky seznamu mohou být číselné nebo řetězcové, ale vždy se jedná o celé číslo. Při práci s vícerozměrnými poli bude proměnná i chápána jako vnořená pole.

list_of_lists = [["hammerhead", "great white", "dogfish"], [0, 1, 2], [9,9, 8,8, 7,7]]

pro seznam v list_of_lists:

tisk (seznam)

["hammerhead", "great white", "dogfish"]

[0, 1, 2]

[9.9, 8.8, 7.7]

Chcete-li zobrazit každý prvek vnořeného pole, musíte použít vnořené smyčky.

Pokračujte

Operátor umožňuje přeskočit část smyčky for a looppřejděte na další iteraci. To se provádí, když nastane externí faktor. Pokračování je indikováno po nepovinném bloku if, ale samotná podmínka je uvnitř smyčky před hlavním příkazem.

číslo = 0

pro číslo v rozsahu (10):

number = number + 1

pokud číslo == 5:

pokračovat # zde je příkaz pokračovat

tisk (str (číslo))

tisk ("End")

Každé číslo v seznamu hodnot je od 0 do 10zvyšuje číslo proměnné, které je zpočátku nulové. Když číslo získá hodnotu 5, smyčka se přeruší a začne další iterace. Ukázalo se, že:

1

2

3

4

6

7

8

9

10

Konec

Přestávka

Operátor se používá ve spojení s podmínkou if. Tato konstrukce zcela přerušuje cyklus, když nastane faktor.

Smyčka přerušit prohlášení
číslo = 0

pro číslo v rozsahu (10):

číslo + = 1

pokud číslo == 5:

break # break

print ("Number =" + str (number))

tisk („Mimo smyčku“)

Zde příkaz if definuje podmínku: pokud je hodnota proměnné číslo 5, smyčka se zlomí. Při každé iteraci se provede první metoda print () a zobrazí oznámení

Číslo = 5.

Když je smyčka zastavena příkazem break, je spuštěna následující metoda print ().

Jiný příklad kontroluje, zda je druhé číslo dělitelné prvním bez zbytku.

pro n v rozsahu (2, 10):
pro x v rozsahu (2, n):
pokud n% x == 0:
tisk (n, "rovná se", x, "*", n // x)
přestávka
jinde:
# loop prošla bez nalezení faktoru
print (n, "je prvočíslo")

V tomto případě je použita vnořená smyčka.Nejprve jsou všichni členové množiny čísel v rozsahu od 2 do 10 přijímáni jako n. Pro každé n je definován nový seznam s položkami od 2 do n. Máme tedy 8 polí různých délek. Všechny prvky z výsledných kolekcí jsou nastaveny proměnnou x. Nyní podmínka if zkontroluje, že výsledek n / x je celé číslo. Je-li true, smyčka se zlomí a zobrazí zprávu. Pokud je n / x rozděleno zbytkem, zobrazí se další zpráva.

Projít

Operátor je třeba ignorovat další podmínky.

číslo = 0
pro číslo v rozsahu (10):
číslo + = 1
pokud číslo == 5:
projít
tisk (str (číslo))
tisk ("End")

Program funguje, jako by podmínka, pokud číslo == 5 neexistuje. Objeví se na monitoru

1

2

3

4

5

6

7

8

9

10

Konec

Vidíme to při provádění průchodu operátoremnic se neděje. Používá se jako pahýl pouze tam, kde je to syntakticky nutné. Například při vývoji nové třídy s metodami, které nemusí být implementovány.

třída MyClass (objekt):

def meth_a (self):

projít

def meth_b (self):

tisk "I" m meth_b "

Funkce met_a zatím nemá vlastní instrukce. Ale Python vyžaduje, aby bloky kódu, pokud kromě třídy def, nebyly prázdné. Jinak se zobrazí chybová zpráva.

IndentationError: očekává se odsazený blok.

Místo toho můžete zadat průchod.

třída CompileError (Výjimka):

projít

Dalším účelem použití příkazu pass je výslovně neudělat nic.

To lze vidět na dalším příkladu smyčky pro a předat:

pro t v rozsahu (25):

do (t)

pokud t == 20:

projít

V tomto fragmentu kódu se iteruje nad položkami seznamuod 0 do 25. Jsou považovány za proměnnou t. Při každé iteraci je vykonána některá funkce do (). Pokud je nutné, aby se při určité hodnotě vůbec nic nedělo, je indikován průchod. Například funkce do zobrazí zprávu 24krát a přeskočí instrukci na t = 20.

Pole

Programy se smyčkou for for pomáhají vytvořit určitou posloupnost hodnot a přiřadit je k proměnným.

Pole a smyčka

Je možný následující záznam:

pro i v [0, 1, 2, 3, 4, 5]:

tisk i ** 2

Pokud by seznam obsahoval více prvků, bylo by racionálnější vytvořit samostatné pole.

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

pro v poli:

tisk i

Chcete-li vytvořit seznamy jako

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

, v Pythonu je funkce range ().Metoda range () v oblasti parametrů trvá tři argumenty: počáteční hodnota, konec, krok. Vyžaduje se pouze poslední prvek seznamu. Rozsah (5) tedy bude znamenat, že pole obsahuje čísla od 0 do 5. Pokud zadáte krok, musíte určit počáteční prvek.

rozsah (0, 10, 2)

Dostáváme:

0, 2, 4, 6, 8, 10

Seznamy řádků

Práce s těmito seznamy je podobná numerické. Například existuje seznam

colors = ["red", "green", "blue", "yellow"]

Vývojáři zvyklí na C mohou napsat následující funkci.

pro i v rozsahu (len (barvy)):
tisknout barvy [i]

Kód se spustí bez chyb, ale vhodnější použití smyčky for vypadá takto:

colors = ["red", "green", "blue", "yellow"]
pro barvy v barvách:
barva tisku
Vytvoření pole

Pokud potřebujete procházet seznam od poslední do nuly, použije se funkce obrácená ().

colors = ["red", "green", "blue", "yellow"]
pro barvy obráceně (barvy):
barva tisku

Následující položka je chybná. Opět to přišlo z jazyka C.

Seznamy a indexy

Python má vestavěné funkce enumerate () pro práci s indexy pole. Jsou užitečné v pythonu pro smyčky.

Pole a index

Argumentem je posloupnost hodnot. Funkce enumerate () zjednodušuje použití následujícího kódu:

pro i v rozsahu (len (L)):
item = L [i]
# ... vypočítat nějaký výsledek na základě položky ...

Zde se používá metoda len (). Vrací počet prvků, v tomto případě pole L. Mnoho prvků je bráno jako argument funkce range (). Takto definujeme seznam [0, ... n].

Pomocí L [i] získáme přístup ke každému prvku pole L.

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

Funkce enumerate () eliminuje potřebu inicializovat proměnnou čítače ba zjednodušuje zápis

pro počítadlo hodnota v výčtu (L):
print („index:“ counter, “value:“ value)

Enumerate () vrací pár čítačů, takže u operátoru smyčky jsou zadány dvě proměnné.

Funkce item () a iteritems (), které se používají jako metody, jsou podobné.

d.items ()

d.iteritems ()

Dva seznamy

Pokud potřebujete použít členy více seznamů, použije se funkce zip ().

Připojuje se pole

Vezme seznam A a seznam B, učiní z nich jeden objekt ZIP, který obsahuje vnořené n-tice. Každý prvek nového objektu spojuje členy seznamů A a B a třídí je podle indexu.

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

Если на входе zip() указывается 4 массива, prvky pole zip budou obsahovat vždy 4 prvky. Balení polí různých délek nezpůsobuje chybu. Do nového objektu budou umístěny pouze prvky, které obsahují párovou hodnotu.

Chcete-li zahrnout každý prvek do n-tice, i ten, který nemá pár, použije se zip_longest ().

seznam (itertools.zip_longest ((1,2,3), [4]))
# [(1, 4), (2, žádný), (3, žádný)]

Třídění klíčů

Pokud potřebujete procházet nejen prvky pole, ale také je upravovat, použije se funkce keys ().

Klíč je hodnota

Metoda duplikuje a vrací seznam dostupných klíčů slovníku.

pro k in d.keys ():
pokud k.startswith ("R"):
del d [k]

Existuje pole d. Jeho prvky jsou zkopírovány pomocí metody keys (). Každý prvek je proměnná k. Zpracovává se pomocí startwith, po shodě je prvek odstraněn z hlavního pole.

beginwith () vrací příznak, který kontroluje, zda řádek začíná zadanou předponou. Funkce má tři argumenty: prefix, start, end.

str.startswith (prefix [, start [, end]]) -> bool

Vyžaduje se pouze první - předpona. Může to být řetězec nebo n-tice.

my_str.startswith ('value')

nebo

my_str.startswith (('value1', 'value2')))

Pokud potřebujete v poli parametrů zadat několik řádků, prvky jsou zalomeny do dalších závorek ().

Argument start ukazuje na index prvku pomocíjehož odpočítávání začíná. Podporovány jsou kladné a záporné hodnoty. Pokud start = -x, pak hledání začíná elementem s indexem x od konce. Koncový parametr označuje poslední znak, u kterého se zastaví analýza řádku. Podporuje také záporné hodnoty. S end = -x je posledním členem seznamu index x od začátku.

Podobně jako na začátku (), funguje funkce konce (). Zkontroluje, zda řádek končí zadaným postfixem. Má tři přípony parametrů, start, end, také vrací booleovskou hodnotu.

Sloučení seznamů

Если нужно соединить элементы двух массивов, nejrychlejší způsob je použít spoustu metod diktátu (izip (pole 1, pole 1)). V tomto případě nejsou prvky uspořádány postupně jeden po druhém, ale ve formě:

„Element pole 1“: „prvek pole 2“
names = ["raymond", "rachel", "matthew"]
colours = ["red", "green", "blue"]
d = dict (zip (jména, barvy))
# {"matthew": "blue", "rachel": "green", "raymond": "red"}

Метод dict() создает словарь, внутрь которого Hodnoty jsou umístěny výše uvedeným způsobem - prostřednictvím „:“. Jako hlavní hodnota se používá prvek pole 2. Chcete-li jej nazvat, musíte k němu přistupovat indexem - hodnotou pole 1.

d ['raymond' ']

# červená

Počítání členů seznamu

Pro zjištění, kolik prvků obsahuje seznam, se používá funkce get ().

d.get (key, default = None)

Tato metoda zkontroluje přítomnost klíče ve slovníku d, vrátí indexový klíč [index].

colors = ["red", "green", "red", "blue", "green", "red"]
d = {}
pro barvy v barvách:
d [barva] = d.get (barva, 0) + 1

Metoda get () je pohodlnější a rychlejší analog následujícího kódu.

colors = ["red", "green", "red", "blue", "green", "red"]

d = {}

pro barvy v barvách:

pokud není barva d:

d [barva] = 0

d [barva] + = 1

Toto jsou hlavní příklady a možné chyby smyčky for.

Líbí se:
0
Populární příspěvky
Duchovní rozvoj
Potraviny
jo