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 del if.
  • Si és False, executa només el bloc del else.
  • 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 if s’ignora completament.
  • Python entra directament al else i executa el print.
  • 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:

  1. comprova la condició del if,
  2. si és False, passa al primer elif,
  3. continua comprovant de dalt a baix,
  4. quan troba la primera condició que és True, executa eixe bloc,
  5. ix immediatament de l’estructura,
  6. 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 és False → Python no entra.
  • nota >= 5 és True → 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 elif no 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:

  1. Python comprova edat >= 18.
  2. Com que és True, entra dins del primer if.
  3. Ara comprova la segona condició (soci).
  4. Com que és True, mostra “Entrada amb descompte”.
  5. El else exterior no s’executa perquè la primera condició ja era certa.
  6. Si edat fora menor que 18, Python no comprovaria mai soci.

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 if anidats 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.



Table of contents