Operadors d’assignació

Operadors d’assignació són assignacions que també realitzen una operació sobre la variable. S’utilitzen en Python per modificar el valor d’una variable sense haver de reassignar-la; això pot ser útil quan es vol incrementar o disminuir el valor d’una variable.
Concepte: cambiar <variable> por <valor>
El bloc cambiar <variable> por <valor> s’utilitzava molt comunament per modificar el valor assignat a una variable quan es programava en Blocs. Ho hem fet moltes vegades, per exemple, per incrementar un comptador o per modificar la posició d’un personatge.
Això es pot aconseguir en Python utilitzant la variable mateixa en l’equació:
num = num + 5
Això funciona perquè l’equació al costat dret de l’operador d’assignació es calcula primer, i el resultat d’aquesta equació s’assigna a la variable al costat esquerre.
Per exemple, si num emmagatzemava 4 abans del codi anterior, el costat dret de l’equació es calcularia primer a 9, i després num seria reassignat 9 com el seu nou valor.
Modificar un valor d’aquesta manera és una tasca molt comuna, així que Python i altres llenguatges introdueixen l’operador +=, que afegirà el valor al costat dret al valor actualment emmagatzemat al costat esquerre.
Utilitzant l’operador +=, el codi d’exemple anterior també es pot escriure com:
num += 5
Aquest procés de condensar l’expressió s’estén a tots els operadors, així que…
num -= 5és equivalent anum = num - 5num *= 5és equivalent anum = num * 5num /= 5és equivalent anum = num / 5
Aquests es diuen Operadors d’assignació, com =.
Exemple #1: Segons en una hora
- Revisa el codi següent
segons = 1 segons *= 60 game.splash(str(segons) + " segons en un minut") segons *= 60 game.splash(str(segons) + " segons en una hora") - Observa com s’utilitzen els operadors d’assignació per modificar la variable
segons - Identifica els dos valors que són mostrats a la pantalla
Tasca #1: Segons en una setmana
- Comença amb el codi de l’exemple #1
- Després del segon
game.splash, utilitza un operador d’assignació per fer quesegonsemmagatzemi el nombre de segons en un dia - Mostra el nou valor de
segonsambgame.splash. Assegura’t d’incloure una descripció del valor per coincidir amb els valors anteriors que van ser mostrats. - Utilitza un altre operador d’assignació per fer que
segonsemmagatzemi el nombre de segons en una setmana - Mostra el nou valor de
segonsambgame.splash, juntament amb la seva descripció corresponent - Repte: repeteix aquest procés tant per als segons en un mes, com per als segons en un any
Per al repte, pots utilitzar una estimació de 4 setmanes per mes i 12 mesos per any.
Concepte: Increment i Decrement
En Python, és molt comú afegir o restar un d’un valor: per exemple, per comptar el nombre de vegades que es va prémer un botó, o l’índex en un bucle.
En Python, hi ha diversos Operadors d’assignació que poden fer això. Per exemple, tant num = num + 1 com num += 1 donaran com a resultat que num s’incrementi en 1.
Per contra, num = num - 1 i num -= 1 decrementaran num en 1.
Exemple #2: Incrementant valors
- Revisa el codi següent
nombre = 5 game.splash(str(nombre) + " és massa baix!") nombre += 1 nombre += 1 game.splash(str(nombre) + " és massa alt!") - Abans d’executar el codi, identifica quins valors seran mostrats a la pantalla.
Tasca #2: just aquest!
- Comença amb el codi de l’exemple #2
- Utilitza la forma condensada de decrement per baixar
nombreen 1 - Utilitza
game.splashper mostrar el valor denombreamb la descripció ” és just aquest!”
Concepte: Afegint cadenes
L’Operador d’assignació += també pot ser útil quan s’afegeixen cadenes.
Els valors es poden afegir utilitzant l’operador +=. Per exemple, el següent fragment:
missatge = "hola"
missatge = missatge + " món"
també es pot escriure:
missatge = "hola"
missatge += " món"
Això permet que les cadenes es “construeixin” afegint peces a mesura que sigui necessari.
Exemple #3: Comanda de menjar
-
Revisa el codi escrit a continuació
comanda = "M'agradaria menjar " menjar = game.ask_for_string("Què t'agradaria menjar?") comanda += menjar comanda += ". També m'agradaria beure " beure = game.ask_for_string("Què t'agradaria beure?") comanda += beure comanda += "." game.splash(comanda) -
Abans d’executar el codi, identifica quin missatge serà mostrat a la pantalla
Tasca de l’estudiant #3: Postres
- Parteix del codi de l’exemple anterior
- Modifica el codi perquè també pregunti a l’usuari “Quin postre t’agradaria?”
- Afegeix a
comandala frase ” Per postres, m’agradaria “ seguida del postre que l’usuari ha demanat - Afegeix un “.” per acabar la frase
- Repte: en lloc d’emmagatzemar les variables
menjar,beure, ipostre, afegeix el resultat degame.ask_for_stringdirectament acomanda. Assegura’t que el resultat sigui el mateix.
Què hem après?
Crea un document i:
- Respon a les següents preguntes:
- Explica com els diferents operadors d’increment, decrement, i assignació poden ser útils per modificar una
variable. - Quin és un avantatge d’utilitzar l’operador
+=en lloc de= variable + valor? - Quins usos pràctics pots veure per a l’operador
+=en el teu propi codi? - I per a l’operador
-=?
- Explica com els diferents operadors d’increment, decrement, i assignació poden ser útils per modificar una
Puja el document a l’aula virtual (tasca 2.1.5).