3. Condicionals en Python (estructures condicionals)
En el punt anterior hem aprés a executar codi només quan una condició es compleix. Ara anem un pas més enllà: decidir què fer quan una condició no es compleix i gestionar diversos casos possibles.
Amb les estructures condicionals, un programa no té un únic camí, sinó que pot seguir camins diferents d’execució segons les condicions.
És important entendre que, en cada execució del programa, Python només seguirà un d’aquests camins.
3.1 El condicional if ... else
La instrucció else permet indicar què ha de fer el programa quan la condició del if és falsa.
Forma general
if condicio:
instruccions_si_true
else:
instruccions_si_false
Funcionament:
- Python comprova la condició del
if. - Si és
True, executa només el bloc delif. - Si és
False, executa només el bloc delelse. - Sempre s’executa un dels dos blocs, però mai els dos.
Exemple
edat = 16
if edat >= 18:
print("Ets major d'edat")
else:
print("Ets menor d'edat")
Eixida per pantalla:
Ets menor d'edat
En el codi anterior:
- Python comprova la condició
edat >= 18. - El resultat és
False. - El bloc del
ifs’ignora completament. - Python entra directament al
elsei executa elprint. - El programa mostra un missatge en qualsevol cas.
Si canviem el valor:
edat = 20
Eixida:
Ets major d'edat
3.2 El condicional elif (diverses opcions)
Quan tenim més de dos casos possibles, utilitzem elif (else if).
Forma general
if condicio1:
codi1
elif condicio2:
codi2
elif condicio3:
codi3
else:
codi_final
Funcionament mental del elif
Python:
- comprova la condició del
if, - si és
False, passa al primerelif, - continua comprovant de dalt a baix,
- quan troba la primera condició que és True, executa eixe bloc,
- ix immediatament de l’estructura,
- no comprova cap altra condició, encara que també poguera ser True.
- En una estructura
if / elif / else, només s’executa un camí possible.
Exemple amb notes
nota = 6.5
if nota >= 9:
print("Excel·lent")
elif nota >= 5:
print("Aprovat")
else:
print("Suspés")
Eixida per pantalla:
Aprovat
Pas a pas:
nota >= 9ésFalse→ Python no entra.nota >= 5ésTrue→ Python entra en este bloc.- El missatge “Aprovat” s’imprimeix.
- Python ja no comprova el
else, encara que sempre està al final.
3.3 Importància de l’ordre en elif
L’ordre de les condicions canvia completament el comportament del programa.
Exemple incorrecte
nota = 9
if nota >= 5:
print("Aprovat")
elif nota >= 9:
print("Excel·lent")
Eixida:
Aprovat
Per què passa açò?
nota >= 5és True.- Python entra en el primer
if. - Entra en eixe bloc i ix de l’estructura.
- El
elifno s’arriba ni a comprovar. - El cas “Excel·lent” queda inaccesible.
Exemple correcte
nota = 9
if nota >= 9:
print("Excel·lent")
elif nota >= 5:
print("Aprovat")
- Les condicions més restrictives han d’anar abans.
3.4 if anidats (condicions dins de condicions)
Un if pot estar dins del bloc d’un altre if. Això s’anomena condicional anidat.
S’utilitza quan:
- una decisió només té sentit si una altra ja s’ha complert,
- volem comprovar una segona condició només en un cas concret.
Exemple
edat = 20
soci = True
if edat >= 18:
if soci:
print("Entrada amb descompte")
else:
print("Entrada normal")
else:
print("Accés denegat")
Eixida per pantalla:
Entrada amb descompte
Explicació detallada:
- Python comprova
edat >= 18. - Com que és True, entra dins del primer
if. - Ara comprova la segona condició (
soci). - Com que és True, mostra “Entrada amb descompte”.
- El
elseexterior no s’executa perquè la primera condició ja era certa. - Si
edatfora menor que 18, Python no comprovaria maisoci.
IMPORTANT!! les condicions internes només s’avaluen si s’entra al bloc exterior.
3.5 elif o if anidat? (comparació)
Moltes vegades, una estructura amb elif pot substituir un if anidat, fent el codi més clar.
Amb elif
if edat < 18:
print("Menor d'edat")
elif edat < 65:
print("Adult")
else:
print("Jubilat")
Amb if anidat
if edat < 18:
print("Menor d'edat")
else:
if edat < 65:
print("Adult")
else:
print("Jubilat")
Conclusió:
- Els dos codis fan exactament el mateix.
elifés més llegible i més fàcil d’entendre.- Els
ifanidats s’han d’utilitzar només quan realment fan falta.
3.6 Errors habituals en estructures condicionals
Oblidar el else quan cal
Si volem que el programa done resposta a tots els casos possibles, cal afegir un else.
Errors d’indentació
if edat >= 18:
print("Major")
else:
print("Menor")
Error:
IndentationError
La indentació incorrecta fa que Python no sàpiga quin bloc correspon a cada condició.
Condicions impossibles
if edat < 10 and edat > 20:
Esta condició mai pot ser True, perquè una edat no pot complir les dues coses alhora.