- Aprender
- Informática
- Programación
- Introducción a la programación con Python
- Condiciones en Python
Condiciones y lógica booleana en Python
and, or y not, y usa if, elif y else para ejecutar el código adecuado en cada situación. Después, anida decisiones, usa el valor de verdad de los valores en un contexto booleano (truthiness), prueba cada rama con entradas bien elegidas y elige entre casos con la sentencia match.PrincipianteUnidad 2 de 10 del curso Curso de Introducción a la programación con Python
Lo que aprenderás
- Escribe comparaciones con los seis operadores de comparación de Python, predice si dan
TrueoFalsecon números y texto, y evita las confusiones que hacen que una condición sea incorrecta sin avisar.- Compara números con los seis operadores de comparaciónUsa
==,!=,<,<=,>y>=para comparar números, interpreta cada resultado como un valor booleano y distingue la comparación de la asignación. - Compara texto, valores de distintos tipos y rangosCompara cadenas de forma exacta y en orden alfabético, convierte los datos introducidos antes de compararlos con números y comprueba rangos, pertenencia y
Nonecon el operador adecuado.
- Compara números con los seis operadores de comparación
- Escribe decisiones de una, dos o varias alternativas para que un programa ejecute el bloque de código adecuado en cada situación, y predice exactamente qué líneas se ejecutan para una entrada dada.
- Ejecuta código solo cuando una condición sea verdaderaEscribe una sentencia
ifcon su cabecera (encabezado), dos puntos y bloque con sangría, y sigue qué líneas se ejecutan y cuáles se omiten. - Elige entre dos acciones con if y elseAñade una rama
elsepara que se ejecute exactamente uno de dos bloques y usa una expresión condicional para elegir entre dos valores en una sola línea. - Elige entre varios casos con elifConstruye cadenas
if–elif–elseque comprueben las condiciones en orden, ejecuten solo la primera rama cuya condición sea verdadera y ordenen las comprobaciones para que cada entrada corresponda al caso adecuado.
- Ejecuta código solo cuando una condición sea verdadera
- Combina y niega condiciones con
and,orynot, predice sus resultados con tablas de verdad e interpreta las condiciones más largas en el orden en que Python las evalúa.- Combina y niega condiciones con and, or y notUsa tablas de verdad para predecir los resultados de
and,orynot, traduce reglas cotidianas a condiciones combinadas y evita el error clásico conor. - Predice cómo evalúa Python las condiciones más largasAplica la precedencia de operadores y la evaluación en cortocircuito, añade paréntesis que aclaren la agrupación prevista y reescribe condiciones negadas con las leyes de De Morgan.
- Combina y niega condiciones con and, or y not
- Anida decisiones cuando una elección dependa de otra, comprueba directamente los valores mediante su valor de verdad y sigue y prueba cada rama para que la lógica sea válida con cualquier entrada.
- Anida decisiones dentro de otras decisionesColoca una sentencia
ifdentro de otra rama cuando una segunda decisión dependa de la primera, interpreta el anidamiento mediante la sangría y redúcelo cuandoandoelifexpresen lo mismo de forma más sencilla. - Evalúa directamente el valor de verdad de los valoresPredice qué valores considera Python verdaderos o falsos en una condición, úsalo para comprobar de forma breve si la entrada está vacía y evita los casos engañosos en que
0,"0"o"False"se comportan de forma inesperada. - Sigue la ejecución y prueba cada rama de una decisiónSigue una decisión a mano, elige entradas de prueba que alcancen cada rama y cada límite, y corrige las condiciones que dejen casos sin cubrir, solapamientos o ramas que nunca puedan ejecutarse.
- Anida decisiones dentro de otras decisiones
- Usa la sentencia
matchde Python para comparar un valor con varios patrones, capturar valores y añadir condiciones de guarda, y decide cuándomatches más claro que una cadenaif–elif.- Comprueba la coincidencia de un valor con casos fijosEscribe una sentencia
matchcon patrones literales, alternativas y un comodín, y predice qué único caso se ejecutará. - Captura valores y añade condiciones de guarda a los casosUsa patrones de captura y
aspara dar nombre al valor coincidente, añade condiciones de guardaifpara lo que un literal no puede expresar y evita el caso engañoso en que un nombre de variable en un caso coincide con todo.
- Comprueba la coincidencia de un valor con casos fijos
Guía de estudio de Condiciones en Python
1Comparaciones que responden sí o no
Un programa necesita una comprobación precisa antes de poder elegir una acción. Las comparaciones convierten preguntas sobre valores en respuestas que Python puede usar: ¿es suficientemente alta la puntuación, coincide la respuesta o está la entrada dentro de un rango válido? Los números y el texto siguen reglas de comparación distintas. Leer esas reglas con atención te ayuda a detectar errores que parecen razonables en pantalla, sobre todo en un límite o cuando los dígitos introducidos siguen almacenados como texto.
1.1 Números, igualdad y límites
Una comparación plantea una pregunta sobre valores. Su resultado es un valor booleano: True o False. Son valores del tipo bool, escritos con la primera letra en mayúscula y sin comillas. "True" es texto; true, en minúsculas, es un nombre y provoca un NameError cuando no se ha definido.
Elige el operador que corresponda a la regla
| Operador | Pregunta | Con x = 7 |
|---|---|---|
== | ¿Igual a? | x == 7 da True |
!= | ¿Distinto de? | x != 7 da False |
< | ¿Menor que? | x < 7 da False |
<= | ¿Menor o igual que? | x <= 7 da True |
> | ¿Mayor que? | x > 5 da True |
>= | ¿Mayor o igual que? | x >= 7 da True |
Los operadores de dos caracteres se escriben juntos, con = al final. Escribe <=, no =<. Un número entero y uno de coma flotante pueden resultar iguales al compararlos: 7 == 7.0 da True porque sus valores numéricos coinciden.
Una comparación es una expresión, así que puedes mostrar su resultado o almacenarlo:
x = 7
is_big = x > 5
print(is_big)
Python evalúa x > 5, obtiene True y asigna ese valor a is_big. La salida es True. Un nombre como is_big o has_ticket hace que una variable booleana se lea como una pregunta de sí o no.
Distingue la asignación de la comparación
x = 5 almacena un nuevo valor en x. x == 5 comprueba el valor actual sin cambiarlo. Escribir if x = 5: es un error de sintaxis. El error inverso puede ser más difícil de detectar:
x = 7
x == 5
print(x)
En un archivo de programa, el resultado de la comparación no se utiliza. La salida sigue siendo 7; esa línea intermedia nunca asigna 5.
Resuelve las operaciones aritméticas antes de comparar
En 2 + 3 > 4, Python suma primero para obtener 5 y después compara 5 > 4. El resultado es True. Una comprobación útil para números enteros es n % 2 == 0: % da el resto de la división, y los números pares dejan un resto de 0 al dividirlos entre 2.
Para n = 10, los pasos son 10 % 2 y después 0 == 0, que da True. Para n = -7, -7 % 2 es 1, así que la comprobación de paridad es False. Con el divisor positivo 2, el resto de Python para un entero impar es 1, incluso si el entero impar es negativo.
Decide si se incluye el límite
«Al menos 18» incluye el 18: age >= 18. «Más de 18» lo excluye: age > 18. Del mismo modo, «menos de 13» es age < 13 y «como máximo 3» es bags <= 3. Prueba el propio límite al elegir un operador. Con age = 18, la primera comprobación de edad es verdadera y la segunda es falsa.
Ten en cuenta las pequeñas diferencias de coma flotante
Muchas fracciones decimales solo tienen representaciones binarias aproximadas. Python almacena 0.1 + 0.2 como 0.30000000000000004, así que 0.1 + 0.2 == 0.3 es False.
Para una comparación con una tolerancia absoluta de 1e-9, usa:
print(abs((0.1 + 0.2) - 0.3) < 1e-9)
abs() da la magnitud de la diferencia sin su signo. Esa diferencia es menor que una milmillonésima, así que esta comprobación muestra True. La tolerancia indica cuánta diferencia acepta esta comprobación; no es una igualdad exacta.
Puntos clave
- Las comparaciones producen los valores booleanos
TrueyFalse. =asigna un valor;==compara valores sin cambiarlos.- Elige
<o<=, y>o>=, según se incluya o no el límite. - Las operaciones aritméticas se realizan antes de la comparación, así que
n % 2 == 0comprueba si el número es par. - Los números de coma flotante calculados pueden necesitar una comprobación con tolerancia en lugar de una igualdad exacta.
1.2 Texto, números introducidos y rangos
Los valores de ambos lados de una comparación importan tanto como el operador. Un texto puede parecer un número y seguir obedeciendo las reglas de las cadenas.
Compara texto de forma exacta
La igualdad de cadenas comprueba cada carácter, incluidas las mayúsculas, las minúsculas y los espacios. "yes" == "Yes" es False, y "yes" == "yes " también es False. Para aceptar diferencias habituales de mayúsculas y minúsculas y espacios alrededor, compara una copia limpia:
answer = " Yes "
print(answer.strip().lower() == "yes")
strip() elimina los caracteres de espacio en blanco de ambos extremos. lower() convierte las letras a minúsculas. El texto limpio es "yes", así que el resultado es True. El valor almacenado en answer no cambia, salvo que le asignes el valor limpio.
Comprende el orden de las cadenas
Python compara cadenas de izquierda a derecha mediante puntos de código Unicode, los números asignados a los caracteres. Se detiene en el primer par de caracteres distintos. Con letras inglesas sin acentos, todas en mayúsculas o todas en minúsculas, esto sigue el orden alfabético: "apple" < "banana" es True. Cuando una cadena es el inicio de la otra, la más corta va primero: "cat" < "catalog" es True.
Esto no es una regla completa de ordenación de diccionario. De A a Z, los puntos de código son 65–90, y de a a z son 97–122. Por tanto, "Zebra" < "apple" es True. La é acentuada también va después de z, así que "zebra" < "éclair" es True.
Los dígitos de las cadenas siguen la misma regla de caracteres. "10" < "9" es True: la primera comparación es entre "1" y "9", no entre los números diez y nueve.
Convierte la entrada para tomar decisiones numéricas
input() devuelve una cadena. Si alguien introduce 5, "5" == 5 da False; la igualdad no convierte el texto. El orden es distinto: "5" < 10 provoca un TypeError porque Python no puede ordenar esa cadena y ese entero entre sí.
age = int(input("Age: "))
print(age >= 18)
Para el texto introducido "18", int() produce el entero 18 y la comprobación muestra True. Usa float() cuando la entrada represente un valor decimal.
Usa una comparación encadenada para un rango
0 <= score <= 100 exige que las dos comparaciones entre valores vecinos sean verdaderas. Significa 0 <= score and score <= 100. Para score = 105, se cumple la comprobación del límite inferior, pero falla la del superior, así que toda la cadena es False.
| Regla | Comprobación en Python |
|---|---|
| De 1 a 10, ambos extremos incluidos | 1 <= x <= 10 |
| Estrictamente entre 1 y 10 | 1 < x < 10 |
Una cadena solo compara valores vecinos. 1 < 3 > 2 es True porque tanto 1 < 3 como 3 > 2 son verdaderos; no compara 1 directamente con 2.
Elige pertenencia o identidad cuando corresponda
Los operadores de pertenencia comprueban si un texto aparece dentro de otro. "nan" in "banana" es True; "Ban" in "banana" es False. "x" not in "banana" es True.
None representa la ausencia de valor. Compruébalo con result is None o result is not None. El operador is pregunta si se trata del mismo objeto, mientras que == pregunta si los valores son iguales. Usa == para la igualdad de números y cadenas: una comprobación de identidad como x is 5 no es fiable para ese fin y produce un SyntaxWarning.
Puntos clave
- Las comparaciones de cadenas distinguen entre mayúsculas y minúsculas y conservan los espacios.
- Convierte los dígitos introducidos con
int()ofloat()antes de realizar comparaciones numéricas. - Un rango expresado mediante comparaciones encadenadas exige que se cumpla cada comparación entre valores vecinos.
incomprueba la pertenencia;is Nonecomprueba si el valor es el marcador de ausencia de valor.
2Elegir el código que se ejecuta
Una comparación resulta útil cuando controla una acción. Python marca cada elección con una condición y un bloque con sangría, de modo que la disposición indica qué líneas se ejecutan juntas. Empieza con un bloque que pueda omitirse, dale después una alternativa y, por último, elige entre varios casos. La clave es seguir el programa en orden: una línea posterior puede usar un valor asignado en una rama anterior, y una comprobación posterior de una cadena puede no llegar a alcanzarse.
2.1 La cabecera de if y su bloque
Una sentencia if ejecuta un bloque solo cuando su condición es verdadera. La cabecera empieza con if, indica la condición y termina con dos puntos. Las líneas que hay debajo llevan sangría para mostrar que pertenecen a su cuerpo.
Sigue una decisión de una sola alternativa
temperature = 31
if temperature > 30:
print("Hot day")
print("Drink water")
print("Done")
En la cabecera, Python lee el valor actual de temperature. La comparación 31 > 30 es True, así que se ejecutan ambas líneas con sangría. Después, el programa llega a la línea que está fuera del bloque. Su salida es:
Hot day
Drink water
Done
Cambia la primera línea por temperature = 25. Ahora 25 > 30 es False, así que Python omite todo el cuerpo. Solo se muestra Done. La condición se comprueba una vez cuando Python llega a la cabecera; un if no sigue comprobándola.
Deja que la sangría indique qué pertenece al bloque
Por convención, usa 4 espacios por cada nivel de sangría. Las líneas del mismo nivel pertenecen al mismo bloque. Volver al nivel externo lo termina. Si aplicas una sangría de 4 espacios a print("Done"), pasa al cuerpo del if y solo muestra su mensaje cuando se cumple la condición.
Un diagrama de flujo muestra la misma elección con un rombo. El camino de verdadero entra en el cuerpo, el de falso lo rodea y ambos se unen en la siguiente sentencia fuera del bloque.
| Problema | Qué corregir |
|---|---|
| Faltan los dos puntos | Termina la cabecera con :. |
| No hay un cuerpo con sangría | Aplica sangría a las líneas controladas por if. |
| Sangría incoherente | Alinea las sentencias que pertenecen al mismo bloque. |
| Mezcla de tabulaciones y espacios | Configura el editor para insertar espacios. |
Python puede informar de SyntaxError, IndentationError o TabError ante estos problemas. Empieza por la cabecera y la sangría alrededor de la línea indicada. Los paréntesis alrededor de la condición son opcionales; if temperature > 30: es la forma habitual.
Un cuerpo no puede estar vacío. Si dejas un lugar reservado para una acción, escribe un pass con sangría. Es una sentencia válida que no hace nada:
if temperature > 30:
pass
Las comprobaciones separadas son independientes
score = 95
if score >= 50:
print("Pass")
if score >= 90:
print("Excellent")
Python llega a ambas cabeceras. Las dos condiciones son verdaderas, así que muestra ambos mensajes. Las sentencias if independientes son adecuadas para reglas cuyas acciones pueden aplicarse todas a la misma entrada.
Da al código posterior un valor que pueda usar
Un nombre al que solo se asigna un valor dentro del cuerpo puede no llegar a crearse:
x = 0
if x > 0:
message = "positive"
print(message)
En un archivo de programa ejecutado desde cero, se omite el cuerpo y message no tiene valor, así que la última línea provoca un NameError. Una solución es proporcionar un valor inicial antes de la elección:
x = 0
message = "not positive"
if x > 0:
message = "positive"
print(message)
Ahora la línea posterior dispone de un valor en ambos caminos. Para cero muestra not positive; para un x positivo, el cuerpo sustituye ese texto por positive.
Puntos clave
- Una cabecera
iftermina con:, seguida de un cuerpo con sangría. - Una condición falsa hace que se omita todo el cuerpo; la ejecución continúa después de él.
- Cada sentencia
ifindependiente se comprueba al llegar a ella. - Usa un valor inicial o asigna un valor en cada rama antes de leer la variable más adelante.
passproporciona un cuerpo válido que no hace nada.
2.2 Dos caminos y un valor que elegir
Una sentencia if–else elige uno de dos bloques. Cuando la condición es verdadera, Python ejecuta el cuerpo del if. En caso contrario, ejecuta el cuerpo del else. Se ejecuta exactamente uno al llegar a esta decisión.
Alinea las alternativas
number = int(input("Enter a whole number: "))
if number % 2 == 0:
print(number, "is even")
else:
print(number, "is odd")
Para la entrada 14, el resto es 0, así que la salida es 14 is even. Para la entrada -7, el resto es 1, así que la salida es -7 is odd. El else pertenece al if que tiene su mismo nivel de sangría. Su cuerpo lleva su propia sangría.
No hay ninguna condición después de else: significa que la condición anterior era falsa. else number < 0: es un error de sintaxis. Mantén la cláusula justo después del cuerpo del if; una sentencia ajena sin sangría entre ambos rompe la estructura.
Comprueba qué incluye «todo lo demás»
Con if answer == "yes":, un else no significa solo "no". También acepta "maybe", "Yes" y "", porque ninguno es igual a "yes". Esto es útil cuando todas las entradas restantes merecen la misma acción. Si varias entradas rechazadas necesitan respuestas distintas, hacen falta más comprobaciones.
Asigna un valor en ambos caminos
Una regla de envío ofrece envío gratuito para importes totales de al menos 50 u.m. y cobra 5,99 u.m. en los demás casos:
total = 42.50
if total >= 50:
shipping = 0
else:
shipping = 5.99
print(total + shipping)
Primero, 42.50 >= 50 da False. Python omite la asignación de 0, ejecuta el else y almacena 5.99. La última línea está fuera de ambos cuerpos y muestra 48.49. Cambia total a 60: el primer cuerpo almacena 0, el otro se omite y la última línea muestra 60. Ambos caminos definen shipping antes de que se use.
Elige un valor con una expresión condicional
Cuando la única diferencia es el valor que se asigna, una expresión condicional puede expresarlo en una línea:
shipping = 0 if total >= 50 else 5.99
Su forma es value_if_true if condition else value_if_false. Aunque el valor para el caso verdadero aparece primero en la página, Python evalúa primero la condición. Solo evalúa el valor elegido y después asigna el resultado a shipping.
Otro ejemplo es label = "even" if n % 2 == 0 else "odd". Para n = 14, selecciona "even". Para n = -7, selecciona "odd".
| Necesidad | Forma adecuada |
|---|---|
| Varias acciones en cualquiera de los caminos | Bloques if–else completos |
| Uno de dos valores | Expresión condicional |
La expresión necesita ambos valores. x = 1 if flag está incompleta y provoca un SyntaxError porque no hay un valor para else. Una sentencia if completa puede omitir else porque simplemente puede no realizar ninguna acción en el camino falso; una expresión debe producir un valor en cualquier caso.
Puntos clave
else:no tiene condición y se alinea con suif.- Un
elseabarca todas las entradas que la condición rechaza. - Asignar un valor a la misma variable en ambos cuerpos hace que esté disponible después de cualquiera de los dos caminos.
- Una expresión condicional tiene la forma
a if condition else by solo evalúa el valor seleccionado.
2.3 Varios casos en un orden elegido con cuidado
Usa elif, abreviatura de «si no, si», para añadir otra comprobación a una decisión. Python prueba las condiciones de arriba abajo. Se elige la primera condición verdadera y se omite el resto de esa cadena.
Sigue una decisión de calificación
score = 85
if score >= 90:
grade = "A"
elif score >= 80:
grade = "B"
elif score >= 70:
grade = "C"
elif score >= 60:
grade = "D"
else:
grade = "F"
print(grade)
La primera comprobación, 85 >= 90, es falsa. La segunda, 85 >= 80, es verdadera, así que Python almacena "B". No comprueba las condiciones restantes ni entra en else. La salida es B.
| Puntuación | Primer camino que se cumple | Calificación |
|---|---|---|
90 | score >= 90 | A |
89 | score >= 80 | B |
60 | score >= 60 | D |
59 | else final | F |
Usa lo que te indican las condiciones falsas anteriores
Llegar a elif score >= 80: ya te indica que la puntuación es inferior a 90. Para puntuaciones enteras, esta rama abarca de 80 a 89. Añadir and score < 90 repetiría una comprobación que el programa ya ha resuelto.
El orden importa porque estos rangos se solapan. Si score >= 60 va primero, abarca 85 y 95 antes de que se llegue a las comprobaciones de sus calificaciones superiores. Para comprobaciones de límite inferior con >=, coloca primero el umbral más alto. Para comprobaciones de límite superior con <, empieza por el umbral más bajo.
Mantén una sola elección en una sola cadena
Sustituir las palabras reservadas elif por if cambia el comportamiento. Con una puntuación de 85, la comprobación de 80 asigna "B", la de 70 asigna después "C" y la de 60 asigna "D". El valor final es "D". Cada nuevo if inicia una decisión independiente.
Esta distinción también afecta a else. En un grupo de sentencias if independientes, un else final pertenece solo a su if correspondiente, no a todo el grupo. Mantén unidas las ramas cuando representen una sola clasificación.
Prevé los límites y las entradas sin coincidencia
Una cadena elif puede tener cualquier número de comprobaciones adicionales, y su else final es opcional. Sin una rama para los casos restantes, puede no ejecutar ningún cuerpo:
temp = 20
if temp < 18:
print("Cool")
elif temp > 24:
print("Warm")
No se cumple ninguna condición. Añade else: con un print("Comfortable") con sangría si cada temperatura necesita un mensaje. Del mismo modo, t < 18 seguido de t > 18 deja exactamente el 18 sin coincidencia. En los umbrales de calificación, escribir score > 90 enviaría el 90 a la rama "B".
Los menús de texto usan la misma estructura: comprueba choice == "1", después choice == "2" y responde con "Unknown option" a cualquier otra entrada. Estas comprobaciones comparan cadenas porque input() devuelve texto. Cuando muchas comprobaciones comparan un valor con opciones fijas, match ofrece otra forma de organizar la decisión.
Puntos clave
- Solo se ejecuta la primera rama verdadera de una cadena
if–elif. - Las comprobaciones falsas anteriores reducen las entradas que pueden llegar a una rama posterior.
- Ordena los umbrales que se solapan para que una comprobación amplia no oculte un caso más restringido.
- Las sentencias
ifindependientes pueden ejecutar varios cuerpos y sobrescribir asignaciones anteriores. - Un
elsefinal trata las entradas que no cumplen ninguna de las condiciones. - Prueba los umbrales exactos para encontrar casos sin cubrir y errores de desfase de una unidad.
3Combinar comprobaciones sin cambiar la regla
Las decisiones reales suelen depender de varios hechos a la vez: un rango tiene dos límites, y el acceso puede exigir tanto permiso como una plaza disponible. Los operadores lógicos combinan esos hechos en una sola condición. Su agrupación y orden de evaluación también importan, porque Python puede detenerse antes de llegar a una parte de la comprobación. Traduce primero la regla y después sigue la expresión de izquierda a derecha, teniendo presentes los paréntesis y las operaciones que se omiten.
3.1 Ambos, al menos uno y lo contrario
Los operadores lógicos and, or y not permiten construir una condición a partir de otras más sencillas. Python los escribe como palabras en minúsculas.
Examina todas las posibilidades
Para entradas booleanas, and da True solo cuando ambas entradas son verdaderas. or da True cuando al menos una es verdadera, incluido el caso en que ambas lo son. Esto es una disyunción inclusiva.
A | B | A and B | A or B |
|---|---|---|---|
True | True | True | True |
True | False | False | True |
False | True | False | True |
False | False | False | False |
not invierte un valor de verdad: not True da False y not False da True. Una tabla de verdad enumera todas las combinaciones de entradas booleanas. Dos entradas necesitan cuatro filas; tres necesitan ocho. Cada entrada booleana independiente adicional duplica las combinaciones.
Para A and not B, invierte primero B y después combínalo con A. En la fila A = True, B = False, not B es True, así que el resultado es True. Las otras tres filas dan False.
Traduce una regla a comprobaciones completas
Un museo aplica un descuento en la entrada a los visitantes menores de 12 años o de 65 años en adelante:
has_discount = age < 12 or age >= 65
A los 10 años se cumple la primera comparación. A los 65, se cumple la segunda. Las edades 30 y 64 no cumplen ninguna. Usar and exigiría que una misma edad fuera menor de 12 y de al menos 65, lo que no puede ocurrir.
Una atracción exige una estatura de al menos 120 centímetros y no tener ninguna afección cardíaca:
can_ride = height >= 120 and not has_heart_condition
Los dos requisitos deben cumplirse a la vez. Con la estatura mínima y has_heart_condition = False, se cumplen ambas partes. Si falla cualquiera de los requisitos, can_ride es False.
Distingue entre estar dentro y fuera de un rango
| Significado | Comprobación |
|---|---|
| Dentro del rango de 0 a 100 | score >= 0 and score <= 100 |
| Fuera del rango de 0 a 100 | score < 0 or score > 100 |
La comprobación de pertenencia al rango necesita ambos límites. Para estar fuera basta con incumplir uno de ellos. score < 0 and score > 100 nunca puede ser verdadero para un mismo número.
Cada comparación necesita ambos lados. score >= 0 and <= 100 tiene una sintaxis incompleta. Un problema más sutil se ejecuta sin errores:
if answer == "y" or "yes":
print("Accepted")
Python interpreta (answer == "y") or "yes". Cuando la comparación es falsa, la cadena no vacía "yes" hace que la condición siga considerándose verdadera. Repite la comparación: answer == "y" or answer == "yes".
La redacción cotidiana necesita el mismo cuidado. «Cerrado los sábados y domingos» significa day == "Saturday" or day == "Sunday"; un día no tiene que tener ambos nombres a la vez. Para una variable booleana, niégala directamente con not is_member. Una comparación negada como not (age >= 18) también puede escribirse de forma más sencilla como age < 18. Aquí los operadores de Python son palabras, no &&, || ni !.
Puntos clave
andexige que ambas entradas booleanas sean verdaderas; elorinclusivo exige al menos una.notinvierte un valor de verdad y siempre produce un booleano.- Estar dentro de un rango requiere
and; estar fuera requiereor. - Repite la comparación completa a cada lado de un operador lógico.
- Una tabla de verdad comprueba todas las combinaciones, incluido el caso en que ambas entradas son verdaderas.
3.2 Agrupación, operaciones omitidas y negación
Una condición más larga plantea dos cuestiones: cómo se agrupan sus partes y qué partes evalúa realmente Python. La precedencia de operadores responde a la primera. La evaluación en cortocircuito responde a la segunda.
Interpreta primero la agrupación
Para los operadores que se usan aquí, la precedencia va de mayor a menor:
- Potenciación:
**. - Multiplicación, división, división entera con redondeo hacia abajo y resto:
*,/,//,%. - Suma y resta:
+,-. - Comparaciones, incluidas
in,not in,iseis not. not, despuésandy despuésor.- La expresión condicional:
a if condition else b.
Los paréntesis cambian la agrupación. Por ejemplo, x > 3 or x < 0 and x != 5 se agrupa como x > 3 or (x < 0 and x != 5). Con x = 5, la comparación izquierda es verdadera y se omite todo el grupo de la derecha. El resultado es True.
Con (x > 3 or x < 0) and x != 5, los paréntesis convierten el primer grupo en un operando de and. Con x = 5, ese grupo es verdadero, pero x != 5 es falso, así que el resultado es False.
Por eso is_weekend or is_holiday and is_sunny acepta todos los fines de semana, incluso si llueve. Para la regla «un día libre que además sea soleado», escribe (is_weekend or is_holiday) and is_sunny.
Sigue la evaluación de izquierda a derecha
| Expresión | Cuándo omite Python B |
|---|---|
A and B | A se considera falso |
A or B | A se considera verdadero |
Para and, una primera parte falsa ya ha descartado el requisito completo. Para or, una primera parte verdadera ya lo ha satisfecho. La precedencia no obliga a Python a calcular un operando omitido solo porque contenga operadores de mayor precedencia.
Puedes usar esto para colocar una condición de protección antes de una operación que fallaría:
count = 0
total = 50
is_large_average = count != 0 and total / count > 10
print(is_large_average)
count != 0 es falso, así que Python nunca intenta 50 / 0. Almacena y muestra False. Invertir los operandos intenta primero la división y provoca un ZeroDivisionError; la comprobación posterior no puede proteger una operación anterior.
Distribuye not dentro de una comprobación agrupada
Las leyes de De Morgan reescriben una negación invirtiendo cada parte y cambiando el operador que las combina:
| Original | Equivalente |
|---|---|
not (A and B) | not A or not B |
not (A or B) | not A and not B |
«No es adolescente» puede comprobarse como not (age >= 13 and age <= 19). La comprobación directa equivalente es age < 13 or age > 19. Las edades 12 y 20 la cumplen; 13, 16 y 19 no.
Mantener and después de negar ambas partes cambia la regla. Con A = True, B = False, not (A and B) es verdadero, pero not A and not B es falso. Compara todas las filas de las tablas de verdad al comprobar si dos formas booleanas son equivalentes.
Para una variable que ya contiene un booleano, escribe if is_valid: o if not is_valid:. Compararla con True o False añade una comprobación que la condición no necesita.
Puntos clave
- La precedencia agrupa una expresión; la evaluación en cortocircuito determina a qué operandos se llega.
andomite su operando derecho si el izquierdo se considera falso;orlo omite si el izquierdo se considera verdadero.- Coloca una condición de protección antes de la operación que protege.
- Las leyes de De Morgan niegan ambas partes e intercambian
andyor. - Usa paréntesis para mostrar la agrupación prevista al mezclar
andyor. - Comprueba las variables booleanas directamente con su nombre o con
not.
4Facilitar el seguimiento y la prueba de decisiones
Una decisión puede depender de otra, y un valor puede actuar como condición sin una comparación explícita. Ambas cosas acortan los archivos de programa, pero también crean caminos que pueden pasar inadvertidos. La sangría muestra qué comprobaciones dependen de elecciones anteriores; el valor de verdad explica cómo se comportan el texto vacío y el cero. Seguir esos caminos y probar los límites exactos permite encontrar respuestas que faltan, valores sobrescritos y ramas a las que ninguna entrada puede llegar.
4.1 Decisiones dentro de otras ramas
Un condicional anidado coloca una decisión dentro de una rama de otra. Solo se llega a la decisión interna cuando la ejecución entra en esa rama externa. Cada nivel de anidamiento añade 4 espacios de sangría.
Sigue la elección externa antes de la interna
has_ticket = True
age = 15
if has_ticket:
if age >= 13:
print("Enjoy the movie")
else:
print("This movie needs an adult")
else:
print("Please buy a ticket first")
Primero, has_ticket es verdadero, así que Python entra en el cuerpo externo. Después comprueba 15 >= 13, obtiene verdadero y muestra Enjoy the movie. Se omiten tanto el cuerpo del else interno como el del externo.
Cambia la edad a 10 y mantén la entrada. Python sigue entrando en el cuerpo externo, pero la condición interna falla, así que muestra This movie needs an adult. Con has_ticket = False, nunca se llega a comprobar la edad; el else externo muestra Please buy a ticket first.
Asocia cada else según la sangría
Un else pertenece al if que tiene su mismo nivel de sangría. Moverlo puede cambiar el comportamiento aunque el archivo de programa siga siendo válido. Considera esta variante más breve:
if has_ticket:
if age >= 13:
print("Enter")
else:
print("Buy a ticket")
El else pertenece a if has_ticket:. Un niño de 10 años con entrada no recibe ningún mensaje. Mueve ese else y su cuerpo un nivel hacia dentro y pasará a pertenecer a if age >= 13:. Ahora el mismo niño recibe Buy a ticket, mientras que alguien sin entrada no recibe ningún mensaje. La nueva disposición expresa una regla distinta.
En el ejemplo completo de la película, el if interno ya tiene un else. Mover ahí el else externo hacia dentro crearía dos alternativas para el mismo if y causaría un error de sintaxis.
Reduce el anidamiento de dos requisitos
Cuando solo hay una acción y ninguno de los niveles tiene un else, and suele eliminar un nivel de anidamiento:
if is_member and total >= 50:
print("Free shipping")
Esto ejecuta la misma acción que un if is_member: externo que contiene un if total >= 50: interno. Ambos requisitos deben cumplirse, y solo se llega al segundo después de que se cumpla el primero. Mantén el anidamiento cuando las ramas externas necesiten sus propias acciones distintas, como al comprar una entrada.
Un else cuya única acción sea otro if–else puede convertirse en una cadena elif. Para positivo, negativo y cero, la forma sin anidamiento es if x > 0:, después elif x < 0: y después else:. Conserva los mismos tres resultados con menos sangría.
Valida antes de clasificar
Una decisión de calificación debe rechazar las puntuaciones fuera del rango permitido antes de asignar una letra:
if 0 <= score <= 100:
if score >= 90:
print("A")
else:
print("Below A")
else:
print("Score must be between 0 and 100")
Con score = 150, la comprobación externa falla, así que no se asigna ninguna calificación. El anidamiento también pone de manifiesto caminos imposibles: un if x < 5: interno bajo if x > 10: nunca puede cumplirse. Cuando haya muchos niveles de sangría, busca requisitos que puedan combinarse, una cadena elif o una comprobación de validación anterior que aclare los caminos restantes.
Puntos clave
- Una condición interna solo se comprueba después de entrar en su rama externa.
- La sangría determina a qué
ifpertenece unelse. - Dos requisitos anidados con una sola acción y sin alternativas pueden convertirse en una condición con
and. - Valida el rango permitido antes de asignar una categoría.
- Los requisitos internos y externos contradictorios crean código inalcanzable.
4.2 Vacío, cero y valores usados como condiciones
Python puede comprobar un valor directamente en una condición. Su valor de verdad en un contexto booleano determina si se ejecuta el cuerpo. Esto ahorra comparaciones, pero el valor de verdad puede diferir de lo que parece decir el texto.
Reconoce los valores considerados falsos
Para los tipos incorporados que se usan aquí, False, None, el cero numérico, las cadenas vacías y las colecciones vacías se consideran falsos. Los números distintos de cero y las cadenas o colecciones no vacías se consideran verdaderos.
| Valor | bool(value) | Motivo |
|---|---|---|
0, 0.0 | False | Cero numérico |
-3 | True | Número distinto de cero |
"" | False | Cadena vacía |
" " | True | Contiene un espacio |
"0", "False", "no" | True | Cadenas no vacías |
None | False | Marcador de ausencia de valor |
[], (), {} | False | Colecciones vacías |
bool() convierte un valor a su valor de verdad booleano. En una condición, if value: elige la misma rama que if bool(value):. No transforma el valor almacenado en un booleano.
Comprueba si la entrada está vacía sin interpretarla mal
name = input("Name: ")
if name:
print("Hello", name)
else:
print("No name entered")
Pulsar Intro sin escribir nada produce "", así que se ejecuta el segundo cuerpo. Un nombre formado únicamente por espacios no está vacío y cumple la primera condición. En cambio, if name.strip(): comprueba el texto después de eliminar los espacios en blanco de los extremos, así que una respuesta formada solo por espacios tampoco cumple la condición.
Una respuesta de sí o no necesita otra pregunta. if answer: se ejecuta para "no" y "False" porque ambas contienen caracteres. Para reconocer una respuesta afirmativa, compara el texto, por ejemplo answer == "yes". El valor de verdad comprueba si el texto está vacío, no el significado de una palabra.
Distingue un cero válido de un dato ausente
Supón que quantity es None antes de que se proporcione un valor y que puede ser legítimamente 0. if quantity: rechaza ambos. Usa quantity is not None para preguntar si hay un valor; esto acepta el cero.
Para una variable que realmente es booleana, la comprobación directa es clara. Para otros valores, x == True hace algo distinto de if x:. Con x = 5, se cumple la comprobación del valor de verdad, pero 5 == True es falso; la igualdad numérica considera que True es igual a 1, no a cualquier número distinto de cero.
and y or devuelven un valor que examinan
Estos operadores devuelven un operando, que puede no ser un booleano:
| Expresión | Valor devuelto |
|---|---|
"" or "Guest" | "Guest" |
"Ana" or "Guest" | "Ana" |
0 and 5 | 0 |
3 and 5 | 5 |
Para or, Python devuelve el valor izquierdo si se considera verdadero; en caso contrario, evalúa y devuelve el derecho. Para and, devuelve el valor izquierdo si se considera falso; en caso contrario, evalúa y devuelve el derecho.
display_name = name or "Guest" proporciona un valor predeterminado para una entrada vacía. El mismo patrón con quantity or 1 sustituye un cero real por 1. Usa así un valor predeterminado solo cuando todos los valores considerados falsos signifiquen ausencia de datos. not se comporta de otra manera: siempre devuelve True o False. Si una variable indicadora (bandera) almacenada debe ser booleana, has_name = bool(name or nickname) convierte el texto seleccionado en un valor de verdad.
Puntos clave
- Los contenedores incorporados y el texto vacíos, el cero,
NoneyFalsese consideran falsos. - Las cadenas no vacías siguen considerándose verdaderas aunque contengan
"0"o"False". - Usa
is not Nonecuando el cero sea un valor introducido válido. andyordevuelven operandos;notsiempre devuelve un booleano.- Un valor predeterminado con
orsustituye cualquier valor izquierdo considerado falso, incluido el cero. strip()deja vacía una entrada formada solo por espacios antes de comprobarla.
4.3 Sigue los caminos y prueba los límites
Un archivo de programa puede ejecutarse sin errores de sintaxis y aun así elegir la rama incorrecta. El seguimiento de la ejecución permite seguir una ejecución a mano. Las pruebas ejecutan entradas elegidas y comparan el resultado observado con el que exige la regla.
Planifica y sigue un camino
Antes de escribir código, expresa las elecciones en pasos de lenguaje cotidiano, o pseudocódigo. Un diagrama de flujo coloca cada condición en un rombo con flechas de verdadero y falso. Ambos caminos necesitan un siguiente paso o un final claro.
Para seguir el código, escribe los valores iniciales, evalúa cada condición a la que se llegue, registra las asignaciones y copia la salida exactamente. Para la cadena de calificaciones con score = 72:
| Condición alcanzada | Resultado | Acción |
|---|---|---|
score >= 90 | False | Continuar con la siguiente comprobación |
score >= 80 | False | Continuar con la siguiente comprobación |
score >= 70 | True | Asignar "C" a grade |
| Resto de la cadena | No se evalúa | Continuar después de la cadena |
«No se evalúa» es distinto de falso. Python ya ha seleccionado una rama, así que no necesita las comparaciones posteriores.
Cubre todas las ramas y todos los límites
Una cadena de cuatro ramas necesita al menos cuatro entradas para ejecutar cada rama una vez. Elígelas según los caminos previstos, no por lo variados que parezcan los números. Varias puntuaciones altas pueden ejecutar siempre el mismo primer cuerpo.
La cobertura de ramas por sí sola puede no detectar un límite incorrecto. Para age >= 18, prueba 17, 18 y 19. Un > equivocado supera las dos comprobaciones de los extremos como se esperaba, pero rechaza el límite exacto. Para un umbral de calificación de 90, compara 89, 90 y 91; haz lo mismo en los demás umbrales. Para entradas decimales, elige valores próximos adecuados a la precisión de la medida.
Encuentra ramas que no pueden ejecutarse
if score >= 60:
print("Pass")
elif score >= 90:
print("Excellent")
La segunda rama es inalcanzable. Cualquier puntuación de al menos 90 ya ha cumplido la primera condición. Coloca primero el umbral más restrictivo o cambia los rangos para que correspondan a la regla prevista.
Un caso sin cubrir deja sin tratar un caso previsto: t < 0 seguido de t > 0 omite el cero. Un solapamiento puede hacer que se ejecuten varias acciones independientes: las comprobaciones separadas t >= 0 y t <= 10 se cumplen ambas para 5. Una cadena solo permite ejecutar su primera rama verdadera, pero su orden sigue determinando qué condición de las que se solapan se elige.
Incluye entradas problemáticas
Prueba valores negativos, cero, texto vacío y respuestas en mayúsculas cuando el programa espera minúsculas. Si solo se aceptan "y" y "n", da a cualquier otro texto una respuesta clara como "Please answer y or n".
Cuando una comprobación se comporte de forma inesperada, inspecciona el valor y su tipo antes de evaluar la comparación sospechosa:
print(repr(age), type(age))
Para age = "18", esto muestra '18' <class 'str'>. Convierte el texto antes de intentar age >= 18; colocar la comparación defectuosa dentro de ese mismo print() de depuración provocaría un TypeError antes de que apareciera la salida de diagnóstico. Para problemas de estructura, inspecciona la sangría y el mensaje de error de sintaxis.
Por último, una comparación puede asignar directamente una variable indicadora booleana: is_adult = age >= 18. Esto sustituye a dos ramas cuyas únicas asignaciones son True y False. Usa bool() cuando la expresión subyacente pueda devolver otro tipo de valor.
Puntos clave
- Sigue solo las condiciones a las que llega el programa y registra como omitidas las comprobaciones que no se realizan.
- Prueba cada rama, además del valor exacto de cada límite y sus valores próximos.
- Las comprobaciones amplias anteriores pueden hacer inalcanzables las ramas posteriores.
- Comprueba los casos sin cubrir, los solapamientos y las entradas inesperadas según la regla prevista.
- Inspecciona el valor y su tipo antes de evaluar una comparación que pueda fallar.
5Elige casos con match
Los menús y los comandos suelen comparar un valor con varias opciones fijas. Una sentencia match organiza esas opciones como patrones y ejecuta el primer caso que coincide. Los valores literales, las alternativas y un comodín final permiten resolver muchos menús sencillos. Las capturas y las condiciones de guarda añaden flexibilidad, pero un nombre dentro de un patrón se comporta de forma distinta de un nombre en una comparación. Aprender esa distinción evita que un caso acepte por accidente cualquier entrada.
5.1 Valores fijos, alternativas y un caso para los restantes
Una sentencia match, disponible en Python 3.10 y posteriores, comprueba un valor con una serie de patrones. Ese valor es el valor examinado. Cada case proporciona un patrón y un cuerpo con sangría.
Sigue el primer caso que coincide
command = "stop"
match command:
case "start":
print("Starting")
case "stop":
print("Stopping")
case _:
print("Unknown command")
print("Ready")
El valor examinado es "stop". No coincide con "start", así que Python prueba el siguiente caso. "stop" coincide y el cuerpo muestra Stopping. Después, Python sale de todo el match y muestra Ready. Solo se ejecuta el cuerpo de un caso; no se pasa al cuerpo siguiente y no hace falta ningún break.
Un valor examinado de "jump" llega al patrón comodín final, _, que acepta cualquier valor. La salida es Unknown command y después Ready. Sin ese caso, un valor examinado sin coincidencia simplemente no ejecuta ningún cuerpo y continúa después de la sentencia.
Mantén la disposición y el caso final en orden
Las cabeceras case llevan una sangría de 4 espacios bajo match, y sus cuerpos otros 4 espacios. Todas las cabeceras terminan con dos puntos. Un case _: sin condición de guarda debe ir al final, porque acepta todo. Colocar más casos después provoca un SyntaxError: nunca se podría llegar a esos patrones posteriores.
Un comodín con condición de guarda puede aparecer antes porque su condición adicional puede fallar. Un match en un archivo de programa de ejecución secuencial tampoco puede contener break; esa sentencia necesita un bucle que la contenga.
Comprende cómo coinciden los literales
Un patrón literal usa un número fijo, una cadena, True, False o None. Los patrones de cadena son exactos y distinguen entre mayúsculas y minúsculas: "stop" no coincide con "Stop". Los patrones numéricos usan la igualdad, así que case 1: coincide con 1, 1.0 y True, que es igual a 1.
En cambio, los patrones True, False y None usan la identidad. Por tanto, case True: coincide con el booleano True, pero no con el entero 1. El orden de los patrones importa si tanto un caso numérico como uno booleano pueden aceptar el valor examinado.
Combina alternativas fijas con una barra
Un patrón de alternativas combina alternativas con |:
day = int(input("Day number: "))
match day:
case 6 | 7:
print("Weekend")
case 1 | 2 | 3 | 4 | 5:
print("Weekday")
case _:
print("Not a day number")
Para 6, se ejecuta el primer cuerpo; para 3, el segundo; para 9, el comodín. Sin int(), el "6" introducido sigue siendo una cadena y no coincide con el número 6.
Usa el separador de patrones |, no la palabra lógica or. case "y" or "yes": no es válido; case "y" | "yes": sí lo es.
| Decisión | Elección inicial clara |
|---|---|
| Un valor examinado comparado con muchos valores fijos | match |
Rangos como score >= 90 | if–elif |
| Condiciones que implican variables distintas | if–elif |
Para comandos fijos, una cadena if–elif basada en la igualdad puede producir las mismas salidas. Elige la disposición que facilite más la lectura de los casos.
Puntos clave
matchnecesita Python 3.10 o posterior y solo ejecuta el primer caso que coincide.- Un comodín
_sin condición de guarda acepta todo y debe ir al final. - Usa
|para combinar patrones alternativos. - Los literales de cadena y numéricos coinciden por igualdad; los patrones
True,FalseyNoneusan la identidad. - Los valores examinados sin coincidencia no ejecutan ningún cuerpo si no hay un caso para los restantes.
- Usa
matchpara opciones fijas eif–elifpara comprobaciones habituales de rangos.
5.2 Capturas, condiciones de guarda y valores con nombre
Los patrones pueden hacer más que comprobar un literal fijo. Un patrón puede dar nombre al valor examinado, y una condición de guarda puede comprobar un requisito adicional antes de aceptar el caso.
Captura primero y comprueba después la condición de guarda
Un patrón de captura es un nombre sin más, como n. Acepta cualquier valor examinado y lo asigna al nombre. Una condición de guarda sigue al patrón con if condition; el cuerpo solo se ejecuta si el patrón coincide y la condición de guarda es verdadera.
temperature = -5
match temperature:
case 0:
print("Exactly freezing")
case t if t < 0:
print("Below freezing by", -t, "degrees")
case _:
print("Above freezing")
Con -5, el primer literal no coincide. El siguiente patrón captura -5 en t y después comprueba t < 0. La condición de guarda es verdadera, así que la salida es Below freezing by 5 degrees.
Con 0, se elige el caso literal antes de intentar la captura. Con 12, la captura tiene éxito, pero la condición de guarda falla, así que Python prueba el comodín y muestra Above freezing. Una condición de guarda falsa no termina la búsqueda de un caso.
Un nombre sin más no consulta una constante
Supón que QUIT = "q". Es tentador escribir case QUIT: para comprobar si el valor examinado es igual a ese valor. Pero un nombre sin más siempre es una captura, incluso si está en mayúsculas. El caso acepta cualquier valor examinado y sobrescribe QUIT con él.
Si hay más casos después de una captura sin condición de guarda, Python informa de un error de sintaxis porque la captura los hace inalcanzables. Si la captura está al final, el error puede pasar inadvertido durante la ejecución. Compara explícitamente con una condición de guarda:
QUIT = "q"
key = "x"
match key:
case k if k == QUIT:
print("Quit")
case _:
print("Keep working")
Aquí k captura "x". La condición de guarda lo compara con el "q" existente, falla y deja que el comodín muestre Keep working. Un literal case "q": es más sencillo cuando el valor fijo puede escribirse directamente.
Distingue un patrón de valor con punto
Un nombre con punto como math.pi es un patrón de valor, no una captura. Consulta un valor existente y compara el valor examinado con él mediante ==. Las constantes con nombre proporcionadas por módulos o clases pueden usar esta forma. La distinción que debes reconocer es el punto: case n: asigna un nombre; un patrón con punto comprueba un valor existente.
Da nombre a una coincidencia específica con as
answer = "y"
match answer:
case "y" | "yes" as accepted:
print("Accepted:", accepted)
case _:
print("Please answer y or yes")
El patrón de alternativas comprueba las cadenas permitidas y as almacena el valor examinado que ha coincidido en accepted. Para "y", la salida es Accepted: y. No sustituye la entrada por una palabra estándar: "yes" almacenaría "yes". "Yes" no coincide con ninguna de las cadenas porque las mayúsculas y minúsculas siguen importando.
Una o dos condiciones de guarda pueden encajar de forma natural entre casos fijos. Cuando casi todos los casos comprueban rangos o usan variables distintas, una cadena if–elif suele ser más clara. Cualquiera de las dos estructuras necesita un caso final para los restantes cuando cada entrada deba recibir una respuesta.
Puntos clave
- Un patrón con un nombre sin más captura el valor examinado aunque ese nombre ya tenga un valor.
- La condición de guarda se comprueba después de que coincida el patrón; si es falsa, permite probar los casos posteriores.
- Un patrón de valor con punto compara con un valor existente.
asda nombre al valor examinado aceptado por un patrón más específico.- Usa un literal o una comparación con condición de guarda para evitar capturar por accidente el nombre de una constante.
Ejemplos de Condiciones en Python
1Convierte valores en comparaciones fiables
13 pasos
- 1IntroducciónUn límite de almacenamiento necesita una comprobación exacta
Una taquilla de almacenamiento acepta paquetes que pesen de 1 a 8 kilogramos, con ambos límites incluidos. Antes de elegir una acción, el programa debe convertir esa regla en una respuesta de sí o no, un booleano producido por una comparación, de modo que cada decisión posterior se apoye en una prueba exacta.
Empieza con comparaciones individuales y después combina los dos límites en un rango. A lo largo del proceso, comprueba si un valor es un número o simplemente texto que parece numérico.
- 2ExplicaciónUna comparación produce un booleano
Con
weight = 8, la expresiónweight < 8esFalse: ocho no es menor que sí mismo. La expresiónweight <= 8esTrue, porque incluye la igualdad.Ambos resultados tienen el tipo
bool. EscribeTrueyFalsecon inicial mayúscula y sin comillas. Un texto como"True"es una cadena, y untrueen minúsculas sin definir provoca unNameErroren lugar de proporcionar un booleano. - 3EjemploAlmacena el resultado sin cambiar el peso
weight = 8 fits_upper_limit = weight <= 8 print(weight, fits_upper_limit)Primero,
8 <= 8se evalúa comoTrue. La asignación almacena ese booleano enfits_upper_limit; el peso original no cambia. La salida es8 True.El
=simple realiza la asignación. La comparación usa<=; para preguntar por valores iguales, usa==. - 4Desafío¿Una comparación actualiza el valor?
Predice la salida:
weight = 6 weight == 8 print(weight)---reveal---
Muestra
6. La línea intermedia compara el peso actual con 8, pero nunca asigna un valor que lo sustituya. En un archivo de programa, su resultado falso no se utiliza. Una asignación simpleweight = 8cambiaría la salida final a8. - 5ConexiónUna operación aritmética puede dar el valor que se compara
Una comprobación de números enteros puede comparar un resultado aritmético:
n % 2 == 0calcula primero el resto de dividir entre 2 y después comprueba si es igual a cero.Para
n = -9, el resto es1, así que la comprobación es falsa. El resto de Python con divisor positivo 2 es1para los enteros impares, incluso cuando el entero original es negativo. Comparar el resto con1comprueba si el número es impar. - 6ConsejoLos números de coma flotante calculados pueden diferir ligeramente
0.1 + 0.2se almacena como0.30000000000000004, así que su comprobación de igualdad exacta con0.3falla.Una comprobación con tolerancia plantea otra pregunta:
abs((0.1 + 0.2) - 0.3) < 1e-9comprueba si la distancia es menor que una milmillonésima.abs()elimina el signo de la diferencia. Esta comprobación es verdadera; acepta una pequeña discrepancia en lugar de afirmar que hay igualdad exacta. - 7EjemploLos dígitos introducidos empiezan siendo texto
weight = input("Weight in kilograms: ")Si el usuario introduce
8, la variable contiene"8". Compararweight <= 8provoca unTypeError, porque intenta ordenar una cadena y un entero.Lee una medida decimal con
weight = float(input("Weight in kilograms: ")). Los mismos dígitos introducidos producen ahora8.0, que puede compararse numéricamente con8. - 8ExplicaciónLas cadenas siguen los caracteres desde la izquierda
El orden del texto se basa en puntos de código Unicode.
"18" < "8"es verdadero porque el primer par distinto es"1"y"8"; Python no trata esas cadenas como dieciocho y ocho.Las mayúsculas, las minúsculas y los espacios también importan.
"ready" == "Ready"es falso. Compararanswer.strip().lower()con"ready"elimina los espacios en blanco de los extremos y normaliza las mayúsculas y minúsculas antes de comprobar la igualdad. - 9DesafíoComprueba qué pregunta realmente la pertenencia
Evalúa estas dos comprobaciones:
"box" in "mailbox" "Box" in "mailbox"---reveal---
La primera es
Truey la segunda esFalse. La pertenencia busca la subcadena exacta, incluidas las mayúsculas y minúsculas. Las letras"box"aparecen juntas al final de"mailbox"; la"B"mayúscula no aparece ahí.not ininvertiría cada resultado. - 10EjemploComprueba ambos límites de la regla de la taquilla
weight = 8 fits_locker = 1 <= weight <= 8 print(fits_locker)La cadena comprueba
1 <= 8y8 <= 8. Ambas se cumplen, así que el resultado esTrue. Conweight = 0.5, falla la comprobación del límite inferior; con8.5, falla la del superior.Todas las comparaciones entre valores vecinos de una cadena deben cumplirse. Sustituir cualquiera de los
<=por<excluye ese extremo. - 11Idea claveLa ausencia de datos es otra pregunta
Nonesignifica que no hay ningún valor. Compruébalo conweight is Noneoweight is not None.El operador
ispregunta si las referencias identifican el mismo objeto. La igualdad numérica usa==, así que no sustituyasweight == 8porweight is 8. Los valores pueden ser iguales sin ser el mismo objeto, y una comparación de identidad con un literal numérico produce una advertencia. - 12DesafíoCombina la conversión con una comprobación de límites
Un archivo de programa ejecuta
weight = float(input("Weight: "))y el usuario introduce"8.5". ¿Qué devuelve1 <= weight <= 8? ¿La conversión rechaza por sí sola la entrada?---reveal---
Devuelve
Falseporque8.5 <= 8no se cumple. La conversión tiene éxito: 8,5 es un número de coma flotante válido. Convertir el texto establece un tipo numérico; la comprobación del rango decide por separado si ese número está permitido. - 13RepasoTres preguntas que debes distinguir
Elige el operador que corresponda al límite, determina el tipo del valor y después sigue la comparación.
El orden numérico necesita valores numéricos. Las comprobaciones de cadenas conservan los caracteres exactos salvo que limpies el texto. Un rango necesita ambos límites, la pertenencia pregunta por una subcadena y la identidad es la herramienta adecuada para comprobar
None.
2Sigue una decisión de entrega por sus ramas
14 pasos
Guarda esta unidad para seguir cada Lección Interactiva paso a paso.
- 1IntroducciónDe una regla a un camino por el código
- 2EjemploUna advertencia que puede omitirse
- 3ConsejoCorrige la estructura antes de interpretar los resultados
- 4DesafíoMueve la última línea al cuerpo
- 5EjemploDa una acción al camino falso
- 6Idea claveElse significa todas las entradas rechazadas
- 7EjemploElige solo la tarifa en una expresión
- 8DesafíoInterpreta los valores a ambos lados de la condición
- 9EjemploOrganiza tres categorías de servicio
- 10EjemploUsa la condición falsa anterior para delimitar el rango
- 11DesafíoCambia el orden de comprobaciones que se solapan
- 12ConexiónUn nuevo if es una nueva decisión
- 13DesafíoDetermina tanto la categoría como la tarifa
- 14RepasoAdapta la estructura a la elección
3Construye y protege una condición combinada
13 pasos
Guarda esta unidad para seguir cada Lección Interactiva paso a paso.
- 1IntroducciónVarios hechos pueden controlar una acción
- 2ExplicaciónExige ambos hechos con and
- 3EjemploPermite cualquiera de los pagos con or
- 4DesafíoElige una fila que cumpla la condición
- 5ConsejoDa a cada comparación sus propios operandos
- 6EjemploColoca las alternativas dentro del requisito compartido
- 7Idea claveLa agrupación no es el orden de ejecución
- 8EjemploColoca una condición de protección antes de una media
- 9Desafío¿A qué operaciones se llega?
- 10ExplicaciónNegar un rango cambia el conector
- 11DesafíoConserva los extremos incluidos
- 12DesafíoTraduce dos requisitos y una exclusión
- 13RepasoInterpreta el significado, la agrupación y las operaciones alcanzadas
4Valida, clasifica y prueba una solicitud de entrega
16 pasos
Guarda esta unidad para seguir cada Lección Interactiva paso a paso.
- 1IntroducciónCada entrada necesita el camino previsto
- 2EjemploValida antes de elegir un servicio
- 3EjemploSigue el camino interno
- 4DesafíoAverigua a qué if pertenece else
- 5ConexiónReduce el anidamiento cuando haya una sola acción compartida
- 6ExplicaciónEl cero y la ausencia se consideran falsos
- 7EjemploUn texto que parece negativo puede cumplir la condición
- 8DesafíoConserva un cero real
- 9Idea claveUn operador puede seleccionar texto
- 10EjemploRegistra un camino sin inventar comprobaciones
- 11ConsejoElige pruebas para los caminos y los límites
- 12DesafíoUna condición amplia oculta una rama posterior
- 13ConexiónBusca casos sin cubrir y solapamientos no previstos
- 14ConsejoInspecciona el valor antes de una comparación que pueda fallar
- 15DesafíoPrueba por completo una decisión corregida
- 16RepasoDa una finalidad clara a los valores y las pruebas
5Comprueba comandos y añade casos con condiciones de guarda
15 pasos
Guarda esta unidad para seguir cada Lección Interactiva paso a paso.
- 1IntroducciónUn valor examinado y varios casos posibles
- 2EjemploOrganiza el menú de comandos
- 3Idea claveEl caso siguiente no se ejecuta automáticamente
- 4EjemploUsa un cuerpo para dos comandos exactos
- 5DesafíoColoca el caso alternativo donde resulte útil
- 6ConsejoComprueba el comportamiento de los patrones numéricos y booleanos
- 7ExplicaciónUn nombre sin más captura cualquier valor examinado
- 8EjemploAñade una condición de guarda al valor capturado
- 9DesafíoContinúa después de una condición de guarda falsa
- 10EjemploUn nombre en mayúsculas sigue capturando
- 11ConexiónUn punto cambia el comportamiento de la consulta
- 12EjemploDa nombre a una alternativa literal que coincide
- 13DesafíoElige una estructura de menú adecuada a la tarea
- 14DesafíoConserva un nombre fijo y permite un caso alternativo
- 15RepasoInterpreta los patrones antes de los cuerpos de los casos
Ejercicios de Condiciones en Python
Set 1: Interpreta comparaciones y sigue decisiones10 Preguntas de Práctica
Pregunta 1 de 10
weight?Mostrar respuestaOcultar respuesta
weight <= 6 acepta 6 y los pesos inferiores. La comprobación estricta weight < 6 rechaza un paquete justo en el límite permitido. El sentido de la comparación también debe aceptar pesos menores, así que una comprobación de mayor que invierte la regla.Pregunta 2 de 10
"14" < "7"?Mostrar respuestaOcultar respuesta
"1" precede a "7", lo que hace verdadera esta comparación sin comparar los valores numéricos 14 y 7. La interpretación numérica solo se aplicaría después de convertir las cadenas en números.Pregunta 3 de 10
¿Qué se muestra?
stock = 0
if stock > 0:
print("Available")
print("Checked")
Mostrar respuestaOcultar respuesta
0 > 0 es falsa, así que Python omite el print con sangría. El print final está fuera del cuerpo y se ejecuta igualmente, produciendo Checked. Omitir toda la salida supondría tratar incorrectamente esa sentencia sin sangría como parte del cuerpo condicional.Pregunta 4 de 10
¿Qué valor se asigna a fee?
has_pass = False
fee = 2 if has_pass else 7
Mostrar respuestaOcultar respuesta
has_pass es falso, así que fee pasa a ser 7. Elegir 2 supondría interpretar el primer valor escrito como predeterminado, en lugar del valor reservado para una condición verdadera.Pregunta 5 de 10
¿Qué se muestra?
points = 46
if points >= 50:
print("Gold")
elif points >= 30:
print("Silver")
elif points >= 10:
print("Bronze")
else:
print("Starter")
Mostrar respuestaOcultar respuesta
Silver y sale de la cadena. Aunque 46 también cumple el umbral de bronce, esa condición posterior se omite; una cadena no ejecuta todos los cuerpos cuyas condiciones podrían ser verdaderas.Pregunta 6 de 10
Mostrar respuestaOcultar respuesta
or inclusivo acepta una suscripción, un pase de un día o ambos, y solo rechaza el caso en que no hay ninguno. Usar and exigiría ambas formas de acceso a la vez. La regla nombra alternativas que permiten la descarga de forma independiente, así que ese requisito adicional rechazaría a usuarios válidos.Pregunta 7 de 10
total e items, una variable indicadora debe ser verdadera solo cuando una media supere 8. Con cero elementos, debe dar falso sin intentar dividir. ¿Qué expresión implementa ambos requisitos?Mostrar respuestaOcultar respuesta
and, para que cero elementos detenga la evaluación antes de dividir y dé falso. Con una cantidad distinta de cero, Python evalúa la comprobación de la media. Colocar primero la división falla con cero; usar or acepta el cero u omite la media para cantidades distintas de cero.Pregunta 8 de 10
bool("no")?Mostrar respuestaOcultar respuesta
"no" contiene caracteres, así que su valor de verdad es verdadero. bool() convierte ese valor de verdad en el booleano True; no interpreta la palabra como una negativa. Devolver falso supondría confundir una cadena no vacía con una respuesta booleana sobre su significado.Pregunta 9 de 10
visits de al menos 24. Un programador escribió visits > 24. ¿Qué entrada revela más directamente el resultado incorrecto?Mostrar respuestaOcultar respuesta
>= 24 y > 24, así que cualquiera de ellas por sí sola pasaría por alto este error. Probar el límite exacto permite distinguir los dos operadores.Pregunta 10 de 10
¿Qué se muestra?
mode = "SAVE"
match mode:
case "save" | "write":
print("Stored")
case _:
print("Unknown")
print("End")
Mostrar respuestaOcultar respuesta
"SAVE" no es igual a ninguno de los literales en minúsculas porque la coincidencia de cadenas distingue entre mayúsculas y minúsculas. El comodín muestra Unknown y la línea posterior al match muestra End. Mostrar Stored supondría asumir que la coincidencia de patrones normaliza automáticamente las mayúsculas y minúsculas.Set 2: Aplica reglas y diagnostica ramas incorrectas10 Preguntas de Práctica
Guarda esta unidad para ver todas las respuestas y practicar cada set.
Pregunta 1 de 10
¿Qué valor booleano se almacena en is_odd?
n = -13
is_odd = n % 2 == 1
Mostrar respuestaOcultar respuesta
Guarda esta unidad para ver esta respuesta.
Pregunta 2 de 10
level = input("Level: "). El usuario introduce 16. ¿Qué ocurre cuando después evalúa level < 20?Mostrar respuestaOcultar respuesta
Guarda esta unidad para ver esta respuesta.
Pregunta 3 de 10
Mostrar respuestaOcultar respuesta
Guarda esta unidad para ver esta respuesta.
Pregunta 4 de 10
¿Cuál es el valor final de label?
points = 37
if points >= 30:
label = "High"
if points >= 10:
label = "Middle"
else:
label = "Low"
Mostrar respuestaOcultar respuesta
Guarda esta unidad para ver esta respuesta.
Pregunta 5 de 10
is_open and not is_full sea verdadero?Mostrar respuestaOcultar respuesta
Guarda esta unidad para ver esta respuesta.
Pregunta 6 de 10
Mostrar respuestaOcultar respuesta
Guarda esta unidad para ver esta respuesta.
Pregunta 7 de 10
¿Qué se muestra?
is_open = False
has_booking = True
if is_open:
if has_booking:
print("Enter")
else:
print("Book first")
else:
print("Closed")
Mostrar respuestaOcultar respuesta
Guarda esta unidad para ver esta respuesta.
Pregunta 8 de 10
"" or "Reader"?Mostrar respuestaOcultar respuesta
Guarda esta unidad para ver esta respuesta.
Pregunta 9 de 10
"edit" como "change" a un mismo cuerpo?Mostrar respuestaOcultar respuesta
Guarda esta unidad para ver esta respuesta.
Pregunta 10 de 10
¿Qué se muestra?
value = 11
match value:
case n if n < 0:
print("Negative", n)
case n if n % 2 == 0:
print("Even", n)
case _:
print("Other")
Mostrar respuestaOcultar respuesta
Guarda esta unidad para ver esta respuesta.
Set 3: Sigue los valores a través de varias decisiones10 Preguntas de Práctica
Guarda esta unidad para ver todas las respuestas y practicar cada set.
Pregunta 1 de 10
a = 0.1 + 0.2 y el valor objetivo es b = 0.3. La comprobación debe aceptar diferencias menores que 1e-8. ¿Qué comprobación lo implementa?Mostrar respuestaOcultar respuesta
Guarda esta unidad para ver esta respuesta.
Pregunta 2 de 10
¿Qué se muestra?
remaining = 4
if remaining > 0:
remaining = 0
if remaining == 0:
print("Empty")
print(remaining)
Mostrar respuestaOcultar respuesta
Guarda esta unidad para ver esta respuesta.
Pregunta 3 de 10
¿Qué valor se asigna a label?
has_booking = True
label = "Reserved" if has_booking else "Open"
Mostrar respuestaOcultar respuesta
Guarda esta unidad para ver esta respuesta.
Pregunta 4 de 10
¿Qué ocurre al evaluar esta expresión?
is_admin = True
count = 0
total = 18
is_admin or count != 0 and total / count > 6
Mostrar respuestaOcultar respuesta
Guarda esta unidad para ver esta respuesta.
Pregunta 5 de 10
¿Qué se muestra y por qué?
has_badge = True
is_active = False
if has_badge:
if is_active:
print("Enter")
else:
print("Get a badge")
print("Checked")
Mostrar respuestaOcultar respuesta
Guarda esta unidad para ver esta respuesta.
Pregunta 6 de 10
None significa que no se ha proporcionado ninguna cantidad. ¿Qué asignación usa un valor predeterminado de 9 solo cuando falta el dato?Mostrar respuestaOcultar respuesta
Guarda esta unidad para ver esta respuesta.
Pregunta 7 de 10
Este clasificador de enteros debe mostrar exactamente una etiqueta de signo para cada entero. ¿Qué entrada revela un caso sin cubrir?
if balance < 0:
print("Negative")
elif balance > 0:
print("Positive")
Mostrar respuestaOcultar respuesta
Guarda esta unidad para ver esta respuesta.
Pregunta 8 de 10
¿Qué se muestra?
reply = "later"
match reply:
case "now" | "later" as chosen:
print(chosen)
case _:
print("Unknown")
Mostrar respuestaOcultar respuesta
Guarda esta unidad para ver esta respuesta.
Pregunta 9 de 10
not (-4 <= reading <= 9)?Mostrar respuestaOcultar respuesta
Guarda esta unidad para ver esta respuesta.
Pregunta 10 de 10
¿Qué ocurre con EXIT?
EXIT = "x"
key = "z"
match key:
case EXIT:
print(EXIT)
Mostrar respuestaOcultar respuesta
Guarda esta unidad para ver esta respuesta.
Set 4: Corrige y prueba reglas de decisión combinadas10 Preguntas de Práctica
Guarda esta unidad para ver todas las respuestas y practicar cada set.
Pregunta 1 de 10
case n ___ n > 4:?Mostrar respuestaOcultar respuesta
Guarda esta unidad para ver esta respuesta.
Pregunta 2 de 10
"go" aunque haya espacios en blanco alrededor o diferencias de mayúsculas y minúsculas. Debe rechazar "gopher" y "stop". ¿Qué condición lo implementa?Mostrar respuestaOcultar respuesta
Guarda esta unidad para ver esta respuesta.
Pregunta 3 de 10
¿Qué se muestra?
units = 0
amount = 15
result = amount / units if units != 0 else "No units"
print(result)
Mostrar respuestaOcultar respuesta
Guarda esta unidad para ver esta respuesta.
Pregunta 4 de 10
"High" con al menos 70 puntos, "Mid" de 35 a 69 y "Low" por debajo de 35. Las comprobaciones usan >= en una sola cadena. ¿Qué orden de ramas y etiquetas implementa la regla?Mostrar respuestaOcultar respuesta
Guarda esta unidad para ver esta respuesta.
Pregunta 5 de 10
wired y wireless, y no haya mantenimiento activo. ¿Qué condición implementa toda la regla?Mostrar respuestaOcultar respuesta
Guarda esta unidad para ver esta respuesta.
Pregunta 6 de 10
"High"; las demás válidas, "Low"; y las no válidas, "Invalid". Un archivo de programa clasifica con if score >= 9: y else:, pero nunca valida el rango. ¿Qué estructura lo corrige para cualquier puntuación entera?Mostrar respuestaOcultar respuesta
Guarda esta unidad para ver esta respuesta.
Pregunta 7 de 10
¿Qué valor se almacena en chosen?
preferred = ""
alternate = "Morgan"
chosen = preferred or alternate or "Visitor"
Mostrar respuestaOcultar respuesta
Guarda esta unidad para ver esta respuesta.
Pregunta 8 de 10
Para puntuaciones enteras, un clasificador debe usar "Top" con al menos 80, "Pass" de 40 a 79 y "Retry" por debajo de 40. ¿Qué entrada de prueba revela un error en este código?
if score >= 40:
print("Pass")
elif score >= 80:
print("Top")
else:
print("Retry")
Mostrar respuestaOcultar respuesta
Guarda esta unidad para ver esta respuesta.
Pregunta 9 de 10
¿Qué se muestra?
value = True
match value:
case 1:
print("Number case")
case True:
print("Boolean case")
case _:
print("Other case")
Mostrar respuestaOcultar respuesta
Guarda esta unidad para ver esta respuesta.
Pregunta 10 de 10
Mostrar respuestaOcultar respuesta
Guarda esta unidad para ver esta respuesta.
¿Te atascas con una pregunta tuya? Ayuda con Tareas
Términos Clave
A
Asignación
=, sustituyendo cualquier valor que ya estuviera asociado a ese nombre.score = 28 cambia score; escribir score == 28 solo compara su valor actual.B
Bloque
print() con sangría bajo una comprobación de temperatura están en el bloque que controla la comprobación.C
Cláusula elif
if y solo se considera después de que hayan fallado todas las condiciones anteriores.Cobertura de ramas
Comparación con distinción entre mayúsculas y minúsculas
"Yes" cuando el texto exacto requerido es "yes".Comparación encadenada
2 <= level <= 9 incluye 2 y 9, pero rechaza un nivel de 10.Comprobación de identidad
is o is not para comprobar si las referencias identifican el mismo objeto, habitualmente para reconocer None.result is None distingue un resultado ausente de un valor real de cero.Condición de guarda del caso
if después de un patrón que debe cumplirse antes de ejecutar su cuerpo; si es falsa, permite probar casos posteriores.case n if n < 0: comprueba el número capturado antes de elegir el caso negativo.Condición de protección
count != 0 antes de la división en count != 0 and total / count > 10.Condición externa
has_ticket es falsa, se omite la comparación interna de edad.Condicional anidado
Condiciones equivalentes
not (age >= 18) y age < 18 coinciden para cualquier edad expresada como número entero.Conjunción
and que solo se cumple cuando se cumplen ambos requisitos, como los dos límites de un rango.age >= 13 and age <= 19 rechaza las edades situadas a ambos lados del rango adolescente.Conversión de tipos
int() antes de comparar magnitudes.level = int(input("Level: ")) permite comprobar un límite numérico.D
Decisión de dos alternativas
if y else, con un cuerpo para cada valor de verdad.Diagrama de flujo
Disyunción inclusiva
or lógico de Python sigue este significado.is_member or has_coupon se cumpla cuando se dispone tanto de una membresía como de un cupón.E
Evaluación en cortocircuito
total / count después de una comprobación falsa count != 0 combinada con and.Expresión condicional
a if condition else b, evaluando solo el valor seleccionado.fee = 0 if has_pass else 4 almacena 4 cuando no se dispone del pase.L
Leyes de De Morgan
and y or, de modo que conservan su valor de verdad.not (A or B) por not A and not B, invirtiendo ambas partes.Límite incluido
<= o >= en una comparación numérica.age >= 18 permite que una persona de exactamente 18 años cumpla la condición.O
Operador de comparación
<= al incluir un límite.weight <= 8 acepta un peso de exactamente 8 kilogramos.Operador de pertenencia
in y not in comprueban subcadenas exactas."rain" in "raincoat" encuentra el texto y devuelve True.Operador lógico
and, or y not para estas operaciones.has_ticket and is_open en una sola comprobación.Operando
and y or devuelven uno de sus operandos en lugar de devolver siempre un booleano."" or "Guest" se considera falso, así que la expresión devuelve el operando derecho.P
Patrón as
case "y" | "yes" as reply: almacena "y" cuando esa es la cadena proporcionada.Patrón comodín
_, que acepta cualquier valor examinado sin darle nombre; un caso comodín sin condición de guarda debe aparecer al final."Unknown command" cuando fallan los patrones anteriores de comandos fijos.Patrón de alternativas
| y tiene éxito cuando coincide cualquiera de ellos, compartiendo un solo cuerpo de caso.case "open" | "load": ejecuta el mismo cuerpo para cualquiera de las dos cadenas de comando.Patrón de captura
case STOP: sobrescribe STOP; escribir en mayúsculas no lo convierte en una consulta.Patrón de valor
math.pi compara con un valor existente de un módulo en lugar de asignar un nombre sin punto.Patrón literal
None; los literales numéricos y de cadena se comparan por igualdad.case 6: acepta el número 6, pero rechaza el texto "6" devuelto por la entrada.Precedencia de operadores
and se agrupa antes que or.A or B and C como A or (B and C), salvo que los paréntesis lo cambien.Prueba de valores límite
age >= 18.Pseudocódigo
Punto de código Unicode
"Z" es menor que el de "a", así que "Zebra" < "apple" es verdadero.R
Rama else
if correspondiente es falsa; la cabecera else: no tiene condición.if de número par, la rama else se ejecuta para -7, porque su resto no es cero.Rama inalcanzable
elif score >= 90: va después de la comprobación más amplia if score >= 60:.Rama para los casos restantes
else final en una sentencia condicional de varias alternativas."Unknown option" para entradas de menú distintas de "1" o "2".Reducción del anidamiento
and.Regla de la primera coincidencia
>= 60 si esa comprobación amplia aparece primero.S
Sangría
print("Done") dentro del cuerpo de un if hace que se ejecute después de toda la decisión.Sentencia if
if stock > 0: omite su cuerpo cuando stock es cero.Sentencia match
"stop" omite case "start": y ejecuta el cuerpo bajo case "stop":.Sentencia pass
if sin terminar sin producir salida.T
Tabla de seguimiento
Tabla de verdad
Tolerancia
1e-9 permite que abs(a - b) < 1e-9 acepte una pequeña diferencia entre números de coma flotante calculados.U
Umbral
score >= 90.V
Validación de datos de entrada
0 <= score <= 100 rechaza 150 antes de que se pueda asignar una calificación.Valor booleano
True y False, que Python usa para expresar el resultado de una comprobación de sí o no.is_ready = count >= 4 es True cuando count es igual a 4.Valor considerado falso
None, False, el texto vacío y las colecciones incorporadas vacías.quantity or 1 elija el valor predeterminado aunque se haya introducido cero intencionadamente.Valor considerado verdadero
"False", considerado verdadero, cumple if answer: porque sus caracteres hacen que la cadena no esté vacía.Valor de verdad en un contexto booleano
if name: rechace una respuesta vacía sin una comparación explícita con "".Valor examinado
match en la cabecera.match command:, el valor actual de command es el valor examinado que se usa en cada intento de coincidencia.Valor predeterminado
or."Guest" se selecciona en name or "Guest" cuando name es la cadena vacía.Sobre esta unidad
Crea tus propios Materiales de Estudio
Convierte tus notas, diapositivas y documentos en Guías de Estudio, Preguntas de Práctica, Flashcards y 6 herramientas más.