Pensamiento Computacional (090) · Unidad 2 — Datos, expresiones y funciones
Variables y asignación
Una variable es un nombre pegado a un valor. El signo = no compara: guarda. Y se ejecuta de derecha a izquierda.
La explicación
El signo igual no significa igual
Esto no dice "edad es igual a 20": dice guardá el 20 y llamalo edad. Es una orden, y se ejecuta de derecha a izquierda: primero se calcula lo de la derecha, después se guarda.
contador += 1.
Reasignar
Una variable puede cambiar de valor cuantas veces quieras. Vale lo último que se le asignó, no lo que está escrito más arriba en el archivo:
x = 20
print(x) → 20
Cómo nombrar
Las reglas de Python: empiezan con letra o guión bajo, sin espacios, distinguen mayúsculas
(edad y Edad son dos variables distintas), y no pueden ser palabras
reservadas como if o for.
La regla que importa de verdad es otra: el nombre tiene que decir qué guarda.
x sirve para tres líneas; promedio_notas sirve para siempre. La
convención en Python es minúsculas con guión bajo.
Intercambiar dos valores
Un clásico que expone si entendiste la asignación. Esto no funciona:
b = 2
a = b # a ahora vale 2... y el 1 se perdió
b = a # b vale 2. Los dos valen 2.
Hace falta un lugar donde dejar el valor mientras tanto:
a = b
b = aux
En Python, además, se puede hacer directo: a, b = b, a.
Contadores y acumuladores
Hay dos usos de variable = variable + algo que aparecen en casi todos los programas de la materia, y conviene reconocerlos por nombre porque después se usan adentro de los ciclos:
- Un contador cuenta cuántas veces pasó algo. Arranca en 0 y hace
+= 1. - Un acumulador junta una suma. Arranca en 0 y hace
+= el valor de turno.
total = total + 4 sin haber puesto total = 0 primero, Python corta con NameError: name 'total' is not defined, porque para leer lo de la derecha la variable ya tiene que existir. Inicializar en 0 para sumar; en 1 si vas a multiplicar, porque el 0 se comería todo.
El nombre no es el valor
Conviene pensarlo como una etiqueta pegada a un valor y no como una caja que lo contiene. Cuando escribís y = x no se copia ninguna caja: quedan dos etiquetas sobre lo mismo. Con números eso no se nota nunca, porque la única forma de "cambiar" un número es reasignar la etiqueta a otro. Con listas sí se nota, y muchísimo — es todo el tema 4.2.
NameError (nunca la definiste, o la escribiste distinto: promedio contra Promedio) y un valor inesperado (existe, pero le quedó otra cosa). El primero se arregla mirando dónde se define; el segundo, imprimiéndola antes de usarla.
¿Qué imprime este programa? x = 5 · y = x · x = 10 · print(x, y)
Línea por línea:
y = x → se copia el valor de x: y vale 5
x = 10 → x pasa a valer 10
print(x, y) → 10 5
Por qué y sigue valiendo 5. En la línea 2 no quedó ningún vínculo entre
x e y: se copió el valor que x tenía en ese momento.
Que después x cambie no afecta a y.
y = x no copia nada, y tocar una cambia la otra. La diferencia entre valores
simples y estructuras mutables es de lo que más se pregunta.
El control: ante cualquier duda, andá línea por línea anotando qué vale cada variable. Es lo que muestra la animación de arriba, y es lo que conviene hacer en el parcial.
total += 8 → total 8
total += 6 → total 14
total += 10 → total 24
promedio = total / 3 → 8.0
total = 0 el programa
no arranca, porque la segunda línea necesita leer total para poder sumarle.
Segundo: el promedio da 8.0 y no 8, porque / siempre
devuelve un float aunque la división sea exacta.
Y el control de esta cuenta es el de siempre: la suma de las tres notas tiene que dar el total (8 + 6 + 10 = 24 ✓) y el promedio tiene que caer entre la nota más baja y la más alta (6 ≤ 8 ≤ 10 ✓). Si un promedio se te va fuera de ese rango, el error está en el acumulador.
Dónde se cae la mayoría
- Leer = como comparación. Para comparar se usa ==, que es otra cosa.
- Creer que una variable vale lo que dice la línea de más arriba, en vez de la última que se ejecutó.
- Intercambiar dos valores sin variable auxiliar, y perder uno de los dos.
Hasta acá la explicación. La práctica es la otra mitad: 7 ejercicios de este tema, en cuatro niveles, que no te dicen sólo si está bien al final sino que te corrigen en cada paso y te explican por qué. Además trae una animación que muestra la idea en movimiento.
Practicar Variables y asignación →