Pensamiento Computacional (090) · Unidad 3 — Estructuras de control
Booleanos y comparaciones
Una comparación no devuelve un número: devuelve True o False. Con eso, y con and / or / not, se arma cualquier condición.
La explicación
Comparar da un booleano
!= distinto de 5 != 3 → True
> mayor 5 > 3 → True
< menor 5 < 3 → False
>= mayor o igual 5 >= 5 → True
<= menor o igual 5 <= 3 → False
x = 5 le pone 5 a x;
x == 5 pregunta si vale 5. Confundirlos es el error de sintaxis más común de la
materia, y Python lo marca — pero recién en esa línea.
Los tres operadores lógicos
or True si al menos una es True
not da vuelta el valor
es_finde or es_feriado → cualquiera de las dos
not llueve → True cuando no llueve
Encadenar comparaciones
Python permite escribir lo que uno escribiría en matemática, y significa exactamente eso:
Es de las pocas cosas donde Python se parece más a la matemática que otros lenguajes.
Qué cuenta como verdadero
Cualquier valor se puede usar como condición, y Python decide si es verdadero:
Verdaderos: todo lo demás
bool("0") da True. El cero como
número es falso, pero "0" es un string con un carácter adentro, y todo string no
vacío es verdadero. Lo mismo con "False": es texto, y da True.
Cuidado al comparar tipos distintos
"10" == 10 → False (un texto nunca es igual a un número)
El segundo caso vuelve a ser el problema de input(): si comparás lo que entró por
teclado con un número sin convertirlo, siempre va a dar False.
Escribir la condición para que alguien pueda votar: tiene que tener 16 años o más y estar empadronado.
Traducir la frase. "y" es and: tienen que cumplirse las dos.
return edad >= 16 and empadronado
Por qué >= y no >. "16 años o más" incluye a los de 16.
Con > dejarías afuera justo a los que cumplen el mínimo. Ese corrimiento de
uno es de los errores que más cuestan, porque el programa anda bien para casi todos los casos
y falla sólo en el borde.
Por qué empadronado va solo. Si ya es un booleano, escribir
empadronado == True es redundante. La variable ya vale True o False.
edad >= 16 and edad <= 70 and empadronado, y se lee igual que en matemática.
El control que hay que hacer siempre con condiciones: probá los bordes. Con 15, 16, 70 y 71. Si funciona en los bordes, funciona en el medio; al revés no.
Dónde se cae la mayoría
- Escribir = en vez de == dentro de una condición.
- Suponer que "0" o "False" son falsos: son strings no vacíos, y dan True.
- Comparar el resultado de input() con un número sin convertirlo: siempre da False.
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 Booleanos y comparaciones →