Condicionales en Python#
if / elif / else#
En Python la indentación (los espacios) marca el bloque; no hay llaves. La condición
suele ser una comparación (a > b, x == y…). Las ramas
se comprueban en orden: la primera condición verdadera ejecuta su bloque y se salta
el resto; un elif sólo se mira cuando todos los anteriores fallaron.
if a > b:
print("a es mayor")
elif a < b: # sólo se comprueba si `a > b` fue falso
print("b es mayor")
else: # ni mayor ni menor => iguales
print("son iguales")
Combinar condiciones#
and, or, not. Se evalúan con cortocircuito: en A and B, si A es falso
B ni se mira; en A or B, si A es verdadero B tampoco. Sirve para proteger
comprobaciones peligrosas:
Además, Python permite encadenar comparaciones de forma natural, tal como en matemáticas:
Expresión condicional (ternario)#
Elige entre dos valores en una sola línea (no dos bloques):
Útil dentro de una expresión (una asignación, un print, un argumento). Para lógica
más larga, un if normal se lee mejor.
match — elegir según un patrón (Python 3.10+)#
Compara un valor contra varios patrones de arriba abajo y ejecuta el primero que
encaje. _ es el caso por defecto y | agrupa varios patrones:
match comando:
case "salir":
print("adiós")
case "hola" | "hey": # varios patrones en un mismo case
print("¡hola!")
case _: # cualquier otro valor
print("no entiendo")
Para dos o tres opciones simples, una cadena de if / elif es igual de clara.
Veracidad de un valor#
En una condición, muchos valores cuentan como falsos sin comparar nada:
0, 0.0, "", [], {}, set() y None. Cualquier otro valor es verdadero.
Así se comprueba "hay datos" de forma idiomática:
if datos: # verdadero si la lista NO está vacía
...
if not nombre: # verdadero si la cadena está vacía
...
Errores frecuentes#
=vs==.=asigna y==compara. Aquí Python te protege:if x = 5:es un error de sintaxis. Si de verdad quieres asignar dentro de la condición, usa el operador morsa:if (n := len(datos)) > 0:.isvs==.==compara valores;iscompara identidad (si son el mismo objeto). Usa==para comparar datos y reservaisparaNone:if x is None:.- Comparar
floatcon==. El redondeo hace que0.1 + 0.2 == 0.3sea falso. Usamath.isclose(a, b). - Indentación inconsistente. Mezclar tabuladores y espacios lanza un
TabError; usa siempre 4 espacios.
Ejemplo completo#
Muestra el mayor de dos números:
"""Conditionals demo — print the larger of two numbers.
Shows `if` / `else`: choosing what to do based on a condition.
Input: two integers a and b (separated by whitespace).
Output: the larger of the two (or either one when they are equal).
"""
import sys
def main() -> None:
# Read the whole input and split on any whitespace into tokens.
data: list[str] = sys.stdin.read().split()
a: int = int(data[0])
b: int = int(data[1])
# The branch that runs is decided at run time from the comparison.
# (`a >= b` would also be correct: on a tie we may print either one.)
if a > b:
print(a)
else:
print(b)
main()
| Entrada | Salida |
|---|---|
3 7 |
7 |
10 2 |
10 |