Instrucţiunea if
Instrucţiuneaif
execută o anumită porţiune de cod numai dacă este îndeplinită o condiţie. Condiţia este o expresie booleeană.
>>> x = 0 >>> if x < 0: print('Negativ') elif x == 0: print('Neutru') elif x == 1: print('Unitate') else: print('Pozitiv mai mare ca 1') NeutruPython foloseşte indentarea (alineatul) pentru a delimita blocurile de cod.
Instrucţiunile din blocul
if
se scriu cu 4 spaţii mai interior. În exemple nu apare aşa deoarece Python inserează TAB-uri în loc de spaţii, iar Blogspot se pare că are o problemă cu aceste TAB-uri. În exemplu am o singură instrucţiune sub
if
, print('Negativ')
.
Nu trebuie să număraţi spaţiile deoarece Python indentează automat când apăsaţi ENTER după cele două puncte (:). Instrucţiunea
elif
este o prescurtare de la else if
. Instrucţiunile
elif
şi else
sunt opţionale. else
apare întotdeauna ultima. Semnificaţia este următoarea: Dacă condiţia de la
if
este adevărată se execută instrucţiunile din blocul if
, altfel se trece la ramura următoare, else
sau elif
, şi se reia procesul.După ce aţi terminat de scris o instrucţiune
if
în IDLE, apăsaţi de două ori ENTER ca s-o executaţi.
Instrucţiunile for şi while
Instrucţiuneafor
este folosită pentru a parcurge o secvenţă de numere (progresie aritmetică) sau pentru a parcurge elementele unei colecţii (liste, stringuri, seturi, etc.).
>>> txt = 'tutorialeplusplus' >>> for ch in txt: print(ch, end=' ') t u t o r i a l e p l u s p l u s
end=' '
înseamnă că fiecare afişare este despărţită de spaţiu (implicit este end='\n'
).Iată un exemplu cu
for
şi if
.
>>> for ch in txt: if ord(ch) > ord('e'): print(ch, end=' ') else: print(ch.upper(), end=' ') t u t o r i A l E p l u s p l u sUn exemplu cu o progresie aritmetică generată de funcţia
range
.
>>> for i in range(5): print(i) 0 1 2 3 4Funcţia (de fapt este o clasă...dar voi ajunge şi acolo)
range
ia trei parametri (ultimul fiind opţional): start, stop, step
(step
[pas] semnifică raţia progresiei) SAU ia un singur parametru (ca-n exemplu) stop
(start=0
şi step=1
).
>>> for nr in range(10, 0, -1): print(nr, end=' ') 10 9 8 7 6 5 4 3 2 1Parcurgerea progresiilor aritmetice cu
range
este mult mai eficientă decât echivalentul în while
.
>>> mylist = ['a', 1, True, 'b', 0] >>> ln = len(mylist) >>> for i in range(ln): print(mylist[i]) a 1 True b 0Instrucţiunea
while
repetă o porţiune de cod cât timp condiţia este adevărată.
>>> q = 1 >>> while q < 10: print(q) q += 1 # q = q + 1 1 2 3 4 5 6 7 8 9Şi un alt exemplu, în care creez o listă pornind de la un string şi afişez acel string invers:
>>> st = list('stiva') >>> while len(st) > 0: print(st.pop(), end='') avitsNu uitaţi că funcţia
pop
returnează şi apoi elimină elementul de la sfârşitul listei.
Instrucţiunile break, continue şi else pentru loopuri
Un loop (buclă) reprezintă o structură repetitivă (for
sau while
). Instrucţiunea
break
întrerupe execuţia unui loop.
>>> for i in range(10): if i == 5: break print(i) 0 1 2 3 4Instrucţiunea
continue
ignoră restul codului din loop şi continuă cu următoarea iteraţie.
>>> for i in range(10): if i == 3 or i == 5 or i == 7: continue print(i) 0 1 2 4 6 8 9Instrucţiunile loop (repetitive) pot avea o ramură
else
care se execută atunci când loop-ul este epuizat, fie pentru că a parcurs toate elementele unei colecţii, fie condiţia a devenit falsă. Pe scurt: Loopul NU este întrerupt cu
break
.>>> for i in range(2, 10): for x in range(2, i): if i % x == 0: print(i, ' nu este numar prim') break else: # Dupa epuizarea forului se executa else print(i, ' este numar prim') 2 este numar prim 3 este numar prim 4 nu este numar prim 5 este numar prim 6 nu este numar prim 7 este numar prim 8 nu este numar prim 9 nu este numar primAtenţie! Acest
else
este asociat cu un for
nu cu if
. Priviţi ce s-ar fi afişat fără
else
.
>>> for i in range(2, 10): for x in range(2, i): if i % x == 0: print(i, ' nu este numar prim') break # Aceasta instructiune se va executa de fiecare data print(i, ' este numar prim') 2 este numar prim 3 este numar prim 4 nu este numar prim 4 este numar prim 5 este numar prim 6 nu este numar prim 6 este numar prim 7 este numar prim 8 nu este numar prim 8 este numar prim 9 nu este numar prim 9 este numar primDeci, pentru structurile repetitive,
else
se execută numai când loopul se termină normal, fără întrerupere cu break
.
Instrucţiunea pass
Instrucţiuneapass
nu face nimic. Este instrucţiunea vidă. Se foloseşte acolo unde se cere o instrucţiune din punct de vedere sintactic, dar nu este nevoie de una.
Exemplu,
while
infinit.
>>> while True: pass # Apasati Ctrl+C ca sa opriti executiaMai multe informaţii:
>>> help('for') >>> help('while')
Acum ar trebui să fiţi în stare să scrieţi programe (scripturi) simple.
Scrieţi în Python Shell un program care calculează suma primilor 20 de termeni ai şirului lui Fibonacci.
Primii doi termeni sunt 1, iar umătorii se calculează conform formulei
fib_n = fib_n-1 + fib_n-2Vezi rezultatul.
Vezi soluţia.