Skip to content

Condicionales en Python#

Volver a Condicionales

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")
Diagrama de flujo del if/elif/else que decide el mayor de dos números
El flujo baja por las ramas "no" hasta que una se cumple.

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:

if i < n and v[i] == x:    # no accede a v[i] si i está fuera de rango
    ...

Además, Python permite encadenar comparaciones de forma natural, tal como en matemáticas:

if 0 <= x < n:        # equivale a (0 <= x) and (x < n)
    ...

Expresión condicional (ternario)#

Elige entre dos valores en una sola línea (no dos bloques):

mayor = a if a > b else b   # si a>b vale a, si no vale b

Ú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:.
  • is vs ==. == compara valores; is compara identidad (si son el mismo objeto). Usa == para comparar datos y reserva is para None: if x is None:.
  • Comparar float con ==. El redondeo hace que 0.1 + 0.2 == 0.3 sea falso. Usa math.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