2. Condicionals en Python (simples)

Els condicionals permeten que un programa prenga decisions. A diferència dels programes lineals, en què totes les instruccions s’executen sempre, amb els condicionals podem fer que algunes línies només s’executen quan es compleix una condició.


2.1 Condicions i funcionament bàsic del if

Una condició és una expressió que Python pot avaluar com a:

  • True
  • False

Les condicions no executen codi, només indiquen si una situació és certa o falsa. Per exemple, una comparació com edat >= 18 només respon a la pregunta: és cert o no?

edat = 17
print(edat >= 18)

Eixida:

False

Ací Python comprova la condició i mostra el resultat, però no pren cap decisió.

Per a prendre decisions utilitzem la instrucció if.

if condicio:
    instruccions

El codi indentat sota el if només s’executa si la condició és True. Si la condició és False, Python ignora eixe bloc i continua amb el programa.

edat = 16

if edat >= 18:
    print("Ets major d'edat")

Eixida:

(no es mostra res) 
Quan la condició és falsa i no hi ha else, el programa no mostra cap missatge.

Com que la condició és falsa, el print no s’executa, però el programa no dona cap error.

Si canviem el valor:

edat = 20

if edat >= 18:
    print("Ets major d'edat")

Eixida:

Ets major d'edat

2.2 Flux del programa i importància de la indentació

Un if no interromp l’execució del programa. Simplement decidix si entra o no en un bloc de codi.

edat = 15

print("Inici")

if edat >= 18:
    print("Ets major d'edat")

print("Final")

Eixida:

Inici
Final

Encara que la condició siga falsa, el programa continua executant les instruccions següents.

Perquè Python sàpiga quines línies formen part del if, utilitza la indentació. La indentació defineix el bloc, i per tant és obligatòria.

if edat >= 18:
    print("Accés permés")
    print("Benvingut")

Si la condició és True, s’executen totes dues línies, perquè estan dins del mateix bloc.

Si no indentem correctament:

if edat >= 18:
print("Accés permés")

Python mostra l’error:

IndentationError: expected an indented block

Açò indica que després d’un if sempre ha d’haver-hi un bloc indentat.


2.3 Condicions simples i condicions compostes en un if

Fins ara hem vist condicions simples, és a dir, una sola comparació:

nota = 7

if nota >= 5:
    print("Has aprovat")

Eixida:

Has aprovat

Si la condició no es compleix, no passa res: el bloc no s’executa.

També podem utilitzar condicions compostes, combinant diverses comprovacions amb operadors lògics, però continuem tenint un únic if i cap alternativa encara.

AND

Amb l’operador and, totes les condicions han de ser certes:

edat = 17
autoritzacio = True

if edat >= 16 and autoritzacio:
    print("Pots entrar")

Eixida:

Pots entrar

OR

Amb l’operador or, n’hi ha prou que una siga certa:

vip = False
soci = True

if vip or soci:
    print("Accés especial")

Eixida:

Accés especial

NOT

Amb l’operador not, invertim el valor d’una condició:

repetidor = False

if not repetidor:
    print("Pot passar de curs")

Eixida:

Pot passar de curs

not canvia True per False i False per True.

NOTA: Per què passa de curs si repetidor és false? -> perquè la condicó es True (not repetidor == True.)

Parèntesis

Quan la condició és més llarga, podem utilitzar parèntesis per millorar la claredat:

edat = 17
vip = True
soci = False

if (edat >= 18 and soci) or vip:
    print("Pot entrar")

Eixida:

Pot entrar

Tot i que la condició és més complexa, el funcionament és sempre el mateix:

  • Python avalua la condició,
  • si el resultat és True, executa el bloc,
  • si és False, el salta.

2.4 Errors habituals en condicionals simples

Un dels errors més freqüents és confondre assignació i comparació.

edat = 18      # assignació
edat == 18     # comparació

En un if sempre hem de comparar.

if edat = 18:

Produeix l’error:

SyntaxError: invalid syntax


Table of contents