Capítol 4 — Decisions: if, elif, else
Capítol 4

Decisions: if, elif, else

Els programes interessants prenen decisions: fan una cosa o una altra segons les dades.

Comparacions

Abans de decidir, un programa ha de comparar valors. Les comparacions retornen sempre True (cert) o False (fals):

Aquí tens tots els operadors de comparació:

  • == — igual a (dos signes d'igual, no un!)
  • != — diferent de
  • < — menor que
  • > — major que
  • <= — menor o igual
  • >= — major o igual

Fixa't bé: = assigna un valor a una variable, i == compara dos valors. Confondre'ls és un dels errors més freqüents en Python.

El if simple

Amb if pots fer que un bloc de codi s'executi només si una condició és certa:

Dues coses imprescindibles: els dos punts : al final de la línia del if, i la indentació (4 espais) al bloc interior. Prova de canviar nota = 8 per nota = 3 i torna a executar — el programa no imprimeix res.

if / else

Si vols fer una cosa quan la condició és certa i una altra quan és falsa, afegeix else:

L'else no porta cap condició — s'executa simplement quan el if no s'ha complert. Canvia la nota i comprova que el programa sempre imprimeix exactament una de les dues línies.

if / elif / else

Quan hi ha més de dues possibilitats, afegeixes tants elif (contracció de «else if») com calgui. Python comprova les condicions de dalt a baix i executa el primer bloc que es compleix:

L'ordre importa. Si posessis primer nota >= 5, un 9 imprimiria «Aprovat» perquè la primera condició ja seria certa. Python s'atura en el primer if/elif que es compleix i no mira els de sota.

Prova valors com 4, 5, 7, 9 i 10:

Condicions compostes: and, or, not

Pots combinar dues comparacions en una sola condició:

and exigeix que les dues condicions siguin certes. or n'exigeix almenys una:

not inverteix una condició: not True és False, i viceversa. S'usa per fer el codi més llegible quan la condició negativa és la natural:

Errors típics

Aquests tres errors els comet tothom alguna vegada. Llegeix els missatges d'error — Python t'indica exactament on és el problema.

1. Oblidar els dos punts :

2. Indentació incorrecta — el bloc interior ha d'anar amb 4 espais:

3. Usar = en lloc de == per comparar

Exercici

Escriu un programa que llegeixi una nota enter (de 0 a 10) i imprimeixi la qualificació corresponent, seguint aquest criteri: de 0 a 4, Suspens; de 5 a 6, Aprovat; de 7 a 8, Notable; de 9 a 10, Excel·lent.

El programa ha de funcionar per qualsevol nota vàlida. La sortida ha de ser exactament una d'aquestes quatre paraules (amb accent on calgui).

Resum

  • if condició: executa un bloc si la condició és certa.
  • else: s'executa quan cap if/elif anterior s'ha complert.
  • elif condició: permet encadenar més de dues branques; Python s'atura en la primera certa.
  • Les comparacions (==, !=, <, >, <=, >=) retornen True o False.
  • and / or / not combinen o inverteixen condicions.
  • Tots els blocs if/elif/else acaben amb : i el seu contingut va indentat 4 espais.