A Byte of Python

La sentència if

La sentència if ens permet comprovar una condició. Quan la condició resulta ser certa, s'executa un bloc de sentències que anomenarem bloc if). Quan la condició resulta ser falsa, es processa un altre bloc de sentències que coneixerem com bloc else). La clàusula else és opcional.

Ús de la sentència if

Example 6.1. Ús de la sentència if

				
#!/usr/bin/python
# Filename: if.py

number = 23
guess = int(raw_input('Enter an integer : '))

if guess == number:
	print 'Congratulations, you guessed it.' # el nou bloc comença aquí
	print "(but you do not win any prizes!)" # el nou bloc finalitza aquí
elif guess < number:
	print 'No, it is a little higher than that' # un altre bloc
	# podem posar qualsevol sentència dins d'un bloc
else:
	print 'No, it is a little lower than that'
	# per a arribar aquí cal que guess > number

print 'Done'
# Aquesta darrera sentència s'executa sempre, un cop executada la sentència if.
				
				

Sortida

				
$ python if.py
Enter an integer : 50
No, it is a little lower than that
Done
$ python if.py
Enter an integer : 22
No, it is a little higher than that
Done
$ python if.py
Enter an integer : 23
Congratulations, you guessed it.
(but you do not win any prizes!)
Done
				
				

Com funciona

El programa demana un número a l'usuari i comprova si coincideix amb un cert número. Assignem un número qualsevol a la variable number, per exemple el 23. A continuació obtenim el número de l'usuari amb la funció raw_input(). Podem entendre una funció com una peça de codi que podem reusar. N'aprendrem més sobre funcions al següent capítol.

Passem una cadena a la funció raw_input que mostra a l'usuari abans d'esperar que l'introdueixin la resposta. Un cop l'usuari escriu alguna cosa i prem la tecla Enter, la funció ens retorna l'entrada en forma de cadena de text. En aquest moment, el programa converteix la cadena a un enter fent servir int i guarda el resultat a la variable guess. En realitat, int és una classe però tot el que necessitem saber de moment és que ho podem fer servir per a convertir un string en un enter (sempre i quant, la cadena contingui un enter vàlid, és clar).

A continuació compara el número introduït per l'usuari amb el que hem escollit. Si són iguals, escriu un missatge d'èxit. Fixem-nos en l'ús del sagnat o indentació per a indicar-li a Python a quin bloc pertanyen les sentències. Aquesta és la raó per la qual és tan important la indentació a Python. Confio en que a hores d'ara ja ens hàgim acostumat a la regla d'un tabulador per nivell d'indentació.

Fixem-nos també en que l'estructura if finalitza amb el caràcter dos punts ':'. Aquesta és la manera amb la que indiquem a Python que a continuació comença un nou bloc d'instruccions.

A continuació comprova si el número introduït és menor que el nostre. En aquest cas informa la usuaria què ha fet curt. Aquí hem fet servir la clàusula elif que, en realitat, combina dos sentències if else-if else relacionades en una if-elif-else, fent el programa més fàcil de llegir i reduint els nivells d'indentació requerits.

Les clàusules elif i else també han de finalitzar amb dos punts al final de la línia, seguits dels blocs corresponents adequadament indentats.

Podem disposar d'un nou if dins del bloc if d'una sentència if - d'això en diem niuament de sentències if.

Recordem que les parts elif i else són opcionals. La sentència mínima vàlida és

			
if True:
	print 'Yes, it is true'
			
			

Un cop s'ha finalitzat l'execució de la sentència if juntament amb els corresponents elif i else, es passa a la següent sentència al bloc que conté la sentència if. En aquest cas, es tracta del bloc principal on va començar l'execució del programa i la següent sentència és print 'Done'. Un cop executada, Python es troba el final del programa i simplement acaba.

Hem vist que, fins i tot a un programa tan senzill com el de l'exemple, hi ha un bon nombre d'elements importants que, com a programadors, hem de tenir presents. Tots ells resulten força trivials (fins i tot sorprenentment senzills per a aquells amb experiència en C/C++) Al començament requereixen que estiguem atents, però, un cop ens comencem a trobar còmodes amb Python, ens semblaran "naturals".

Nota pels programadors de C/C++

Python no disposa d'una sentència equivalent a un switch. Podem fer servir sentències if..elif..else per fer el mateix i, de vegades, usar un diccionari per fer-ho més ràpid.