Naredba continue

8.5 Naredba continue 

Problem: U primeru gde si objašnjavao naredbu break, koji pokazuje da li je reč suglasnik ili samoglasnik, program je grešio! Program je za svaki razmak između reči govorio da je – suglasnik? Mislim da je to veeeliki problem....
Rešenje: Zapravo i jeste, ali razmisli šta sam ja tu mogao da uradim... Mogao sam da dodam još jedan elif blok naredbi koji bi proveravao da li promenljiva ima vrednost ' ' (razmak na tastaturi), a potom – jedino da sam stavio print('razmak') što je, po meni, malo bezveze. Bilo bi korisno da smo ga – samo preskočili? Kako?
Python ima rešenje i za takve probleme: naredba continue! Ona se koristi da kažemo Python-u da preskoči ostatak naredbi u tom bloku (u kom se ona pojavljuje), unutar neke petlje, i da se vrati na vrh te petlje, bolje reći – da nastavi sa sledećim izvršavanjem te iste petlje. Prostim rečnikom : „Pythonu, ostavi se ćorava posla na ovome mestu, i nastavi da radiš zadato.“ (Za razliku od break, koji bi jednostavno glasio: „Pythonu, beži odavde... Mrš....“).
Dakle, primer bi glasio:
>>> for i in 'Ovo je rad.\nA ovo lenjost.': 
...     if i == ' ': 
...             continue 
...     elif i == '.': 
...             print('Koji majmun mi je stavio tačku usred rečenice?\nEvo zapeo sam o nju i razbio glavu....') 
...             break 
...     elif i in 'aeiouAEIOU': 
...             print(i, 'je samoglasnik.') 
...     else: 
...             print(i, 'je suglasnik.') 
... 
O je samoglasnik. 
v je suglasnik. 
o je samoglasnik. 
j je suglasnik. 
e je samoglasnik. 
r je suglasnik. 
a je samoglasnik. 
d je suglasnik. 
Koji majmun mi je stavio tačku usred rečenice? 
Evo zapeo sam o nju i razbio glavu.... 
>>> 
Jupi! Radi onako kako sam i zamislio. Svaki put kada je Python naišao na prazno polje, jednostavno ga je ignorisao i nastavio dalje da izvršava petlju.
Budući da Python kod naredbe continue momentalno se vraća na vrh petlje, moguće je da se i ovde pojavi „mrtav kod“ (isto kao i kod naredbe break). Zato, ako nismo oprezni možemo završiti ovako:
>>> while True: 
...     m += 1 
...     if m < 5: 
...             continue 
...             print(m) 
...     if m == 5: 
...             print(m) 
...     if m > 5: 
...             break 
...             print(m) 
... 
5 
>>> 
Ups.... Toliko funkcija za prikaz,a imamo samo jedan izlaz? Pogledaj primer i videćeš da je Python sasvim logički i momački „odradio posao“. Greška je bila sa naše strane, jer smo „džaba kucali“ delove programa, koji su samo „mrtav kod“ i ništa više.
I na kraju, sada kada znaš naredbe koje ti pomažu da kontrolišeš način izvršavanja programa, i naredbe koje „ubacuju“ program u neke petlje, kao i komande koje ga „izbacuju“ iz petlji, bilo bi lepo da razmisliš o jednoj stvari.
Rekli smo da Python prvo proverava uslov za petlju. Da li to znači da ono što želimo da proveravamo uvek moramo definisati pre petlje? Zapravo ne. Čak šta više – uslov za petlju uopšte ne mora biti ono što mi želimo da proveravamo! Naredbe continue i break nam omogućavaju da svoje zaključke donosimo unutar petlje, pa uslov možemo da proveravamo na početku, negde na sredini, ili pak, na kraju petlje, u zavisnosti kako nam odgovara, i gde želimo da izađemo iz petlje!
Znači, dovoljno je da napravimo beskonačnu petlju, i negde unutar nje proverimo nešto, a zatim i iskočimo iz nje sa break (ili nastavimo dalje sa continue)!
Evo primera koji si već video, pišemo ga u skriptu, sačuvaj ga kao sugsamo.py
#!/usr/bin/env python3 

###################### 
# Program koji nam daje dužinu stringa i broji suglasnike i samoglasnike u njemu. 
###################### 

while True: 
    print('Unesi string čiju dužinu želiš da saznaš.') 
    print('(Unesi samo tačku (.) za izlaz iz programa.)') 
    unos = input('>>> ') 
    if unos == '.': 
        break 
    sam = 0 
    sug = 0 
    for i in unos: 
        if i in 'aeiouAEIOU': 
            sam += 1 
            print(i, 'je samoglasnik.') 
        elif i == ' ': 
            continue 
        elif i in '.,;:\'"-*': 
            print('Što me spotičeš sa ovim "kamenčićima?" -', i) 
        else: 
            sug += 1 
            print(i, 'je suglasnik.') 
    print('\nDužina unetog stringa je:', len(unos)) 
    print('\nI on se sastoji od:') 
    print('\n\t{0} suglasnika i\n\t{1} samoglasnika'.format(sug, sam)) 
print('\nHvala što koristite naš softver!') 
input('Za punu verziju molimo uplatite 1,000.000 eura na naš žiro račun.\n\tPritisni enter za izlaz.')
Hmm... Komplikovano?
Ne treba da bude... Igraj se malo, na primer:
./sugsamo.py 
Unesi string čiju dužinu želiš da saznaš. 
(Unesi samo tačku (.) za izlaz iz programa.) 
>>> omnibus, filmovi, muzika.... 
o je samoglasnik. 
m je suglasnik. 
n je suglasnik. 
i je samoglasnik. 
b je suglasnik. 
u je samoglasnik. 
s je suglasnik. 
Što me spotičeš sa ovim "kamenčićima?" - , 
f je suglasnik. 
i je samoglasnik. 
l je suglasnik. 
m je suglasnik. 
o je samoglasnik. 
v je suglasnik. 
i je samoglasnik. 
Što me spotičeš sa ovim "kamenčićima?" - , 
m je suglasnik. 
u je samoglasnik. 
z je suglasnik. 
i je samoglasnik. 
k je suglasnik. 
a je samoglasnik. 
Što me spotičeš sa ovim "kamenčićima?" - . 
Što me spotičeš sa ovim "kamenčićima?" - . 
Što me spotičeš sa ovim "kamenčićima?" - . 
Što me spotičeš sa ovim "kamenčićima?" - . 

Dužina unetog stringa je: 28 

I on se sastoji od: 

 11 suglasnika i 
 9 samoglasnika 
Unesi string čiju dužinu želiš da saznaš. 
(Unesi samo tačku (.) za izlaz iz programa.) 
>>> . 

Hvala što koristite naš softver! 
Za punu verziju molimo uplatite 1,000.000 eura na naš žiro račun. 
 Pritisni enter za izlaz. 
Za domaći ti zadajem dva zadatka, prvi je da iznad svake linije koda u ovom programu napišeš komentar (ako si zaboravio #), tako će ti biti lakše da „ukapiraš“ gde sem pravio odluke, i za koju petlju (u ovom programu, ako nisi primetio, postoje dve petlje). Drugi zadatak je da ispraviš program kako ne bi dobijao ovakav izlaz:
Unesi string čiju dužinu želiš da saznaš. 
(Unesi samo tačku (.) za izlaz iz programa.) 
>>> //// 
/ je suglasnik. 
/ je suglasnik. 
/ je suglasnik. 
/ je suglasnik. 

Dužina unetog stringa je: 4 

I on se sastoji od: 
 
 4 suglasnika i 
 0 samoglasnika 
Unesi string čiju dužinu želiš da saznaš. 
(Unesi samo tačku (.) za izlaz iz programa.) 
>>> 

8.4 break naredba Indeks 8.6 Rezime

Коментари

Popularno

Audacious - program za slušanje muzike

LibreOffice Calc - program za izradu tabela

Brasero - program za rezanje CD-ova

Bekstvo iz Titela

Minitube - program za praćenje YouTube sadržaja

Idemo

Kako blokirati neželjene oglase koje AdSense pokazuje na Vašoj web lokaciji

Bezimena

Pozadina Bekstva iz titela

Pažljivo sa MS Word dokumentima koje primate putem elektronske pošte