Python Declaraciones condicionales: IF...Else, ELIF y Switch Case

โšก Resumen inteligente

Python Las sentencias condicionales dirigen el flujo del programa ejecutando bloques de cรณdigo especรญficos solo cuando las expresiones booleanas se evalรบan como verdaderas. Incluyen if, else, elif, if anidado, el operador ternario y la coincidencia de patrones estructurales para una lรณgica clara y orientada a la toma de decisiones.

  • Concepto principal: Una instrucciรณn if ejecuta su bloque indentado solo cuando la condiciรณn se evalรบa como verdadera, formando la base de la toma de decisiones en Python.
  • Alternativas de manejo: Agregue `else` para una ruta alternativa y `elif` para probar condiciones adicionales en secuencia sin anidamiento profundo.
  • Evite errores de lรณgica: Utilice una รบnica cadena if-elif-else en lugar de sentencias if independientes cuando deba aplicarse exactamente un resultado.
  • Escribe de forma concisa Code: Aplique la expresiรณn ternaria value_if_true if condition else value_if_false para asignar un valor en una lรญnea legible.
  • Ramificaciรณn moderna: Reemplazar largas cadenas elif con un mapa de diccionarioping o la instrucciรณn match-case introducida en Python 3.10 para una selecciรณn multidireccional mรกs limpia.

Python Declaraciones condicionales

ยฟQuรฉ son las declaraciones condicionales en Python?

Declaraciones condicionales en Python Realizan diferentes cรกlculos o acciones dependiendo de si una restricciรณn booleana especรญfica se evalรบa como verdadera o falsa. Permiten que un programa tome decisiones y siga diferentes caminos en lugar de ejecutar cada lรญnea en secuencia. Python, las declaraciones condicionales son manejadas por el if sentencia y sus complementos: else, elif y if anidado.

ยฟQuรฉ es Python ยฟSi declaraciรณn?

La Python si la declaraciรณn Se utiliza para operaciones de toma de decisiones. Contiene un cuerpo de cรณdigo que se ejecuta solo cuando la condiciรณn dada en la instrucciรณn if es verdadera. Si la condiciรณn es falsa, se ejecuta la instrucciรณn else opcional, que contiene el cรณdigo para la condiciรณn else. Cuando se desea actuar sobre una condiciรณn mientras otra no es verdadera, se utiliza la Python declaraciรณn si-si no.

Python si sintaxis de la declaraciรณn:

if expression:
    statement
else:
    statement

Python si... si no, diagrama de flujo

Python Diagrama de flujo ifโ€ฆelse que muestra las ramas verdadera y falsa.

El diagrama de flujo anterior muestra cรณmo fluye el control a travรฉs de una instrucciรณn if-else. Veamos un ejemplo de la Python Sentencia if-else en acciรณn:

Python Ejemplo de salida de la instrucciรณn if en el editor

# Example file for working with conditional statements
def main():
    x, y = 2, 8
    if(x < y):
        st = "x is less than y"
    print(st)

if __name__ == "__main__":
    main()
  • Code Lรญnea 3: Definimos dos variables x, y = 2, 8.
  • Code Lรญnea 4: La instrucciรณn if comprueba la condiciรณn x < y, que es Cierto en este caso.
  • Code Lรญnea 5: La variable st se establece en โ€œx es menor que yโ€.
  • Code Lรญnea 6: La lรญnea print(st) imprime el valor de st, que es โ€œx es menor que yโ€.

ยฟQuรฉ sucede cuando no se cumple la condiciรณn "si"?

Basรกndonos en el ejemplo anterior, veamos quรฉ sucede cuando la condiciรณn if en Python no se cumple. Cuando la condiciรณn es falsa y no existe ninguna rama else, el cรณdigo indentado se omite por completo.

Python error cuando no se cumple la condiciรณn if

# Example file for working with conditional statements
def main():
    x, y = 8, 4
    if(x < y):
        st = "x is less than y"
    print(st)

if __name__ == "__main__":
    main()
  • Code Lรญnea 3: Definimos dos variables x, y = 8, 4.
  • Code Lรญnea 4: La instrucciรณn if comprueba la condiciรณn x < y, que es Falso en este caso.
  • Code Lรญnea 5: La variable st es establecido en "x es menor que y".
  • Code Lรญnea 6: La lรญnea print(st) intenta imprimir una variable que nunca fue declarada, por lo que Python plantea un Error de nombre.
โš  Advertencia: Referenciar una variable que solo se asigna dentro de un bloque if es un error comรบn entre los principiantes. Es mejor usar una rama else o asignar un valor predeterminado a la variable antes de la instrucciรณn if.

Cรณmo usar la condiciรณn โ€œelseโ€

Para evitar el error anterior, puedes aรฑadir una condiciรณn `else`. Esta condiciรณn se utiliza cuando necesitas evaluar una instrucciรณn en funciรณn de otra. Si una condiciรณn es falsa, el bloque `else` proporciona una ruta alternativa para que el programa siga produciendo un resultado.

Ejemplo:

Python Ejemplo de condiciรณn if-else

# Example file for working with conditional statements
def main():
    x, y = 8, 4
    if(x < y):
        st = "x is less than y"
    else:
        st = "x is greater than y"
    print(st)

if __name__ == "__main__":
    main()
  • Code Lรญnea 3: Definimos dos variables x, y = 8, 4.
  • Code Lรญnea 4: La instrucciรณn if comprueba la condiciรณn x < y, que es Falso en este caso.
  • Code Lรญnea 6: El flujo de control del programa pasa a la condiciรณn else.
  • Code Lรญnea 7: La variable st se establece en โ€œx es mayor que tรบโ€.
  • Code Lรญnea 8: La lรญnea print(st) imprime el valor de st, que es โ€œx es mayor que yโ€.

Cuando la condiciรณn โ€œelseโ€ no funciona

La condiciรณn `else` no siempre darรก el resultado deseado. Puede imprimir una salida incorrecta si hay un fallo en la lรณgica del programa. Esto suele ocurrir cuando se deben justificar mรกs de dos instrucciones o condiciones en un programa. Un ejemplo le ayudarรก a comprender este concepto.

Aquรญ ambas variables son iguales (8, 8), sin embargo, la salida del programa es โ€œx es mayor que yโ€, cual es MALEsto sucede porque el programa verifica la primera condiciรณn (la condiciรณn if) y, si falla, imprime la segunda condiciรณn (la condiciรณn else) como valor predeterminado. En el siguiente paso, veremos cรณmo corregir este error.

Python la condiciรณn else produce un resultado incorrecto

# Example file for working with conditional statements
def main():
    x, y = 8, 8
    if(x < y):
        st = "x is less than y"
    else:
        st = "x is greater than y"
    print(st)

if __name__ == "__main__":
    main()

Cรณmo usar la condiciรณn โ€œelifโ€

Para corregir el error anterior cometido por la condiciรณn else, podemos usar el elif Enunciado. Al usar la condiciรณn `elif`, le indicas al programa que compruebe una tercera posibilidad cuando la primera condiciรณn sea falsa. Puedes encadenar varias condiciones `elif` para comprobar una cuarta, quinta y otras posibilidades en tu cรณdigo.

Ejemplo:

Python Ejemplo de condiciรณn elif

# Example file for working with conditional statements
def main():
    x, y = 8, 8
    if(x < y):
        st = "x is less than y"
    elif(x == y):
        st = "x is same as y"
    else:
        st = "x is greater than y"
    print(st)

if __name__ == "__main__":
    main()
  • Code Lรญnea 3: Definimos dos variables x, y = 8, 8.
  • Code Lรญnea 4: La instrucciรณn if comprueba la condiciรณn x < y, que es Falso en este caso.
  • Code Lรญnea 6: El flujo de control del programa pasa a la condiciรณn elif. Esta comprueba si x == y, lo cual es verdadero.
  • Code Lรญnea 7: La variable st se establece en โ€œx es mismo como y ".
  • Code Lรญnea 10: El programa de control sale de la instrucciรณn if (no llegarรก a la instrucciรณn else) e imprime st. La salida es โ€œx es igual que yโ€, lo cual es correcto.

Cรณmo ejecutar una instrucciรณn condicional con un mรญnimo de cรณdigo Code

Ahora que puedes escribir bloques if-elif-else completos, Python te permite condensar una condiciรณn simple en una sola lรญnea. En lugar de escribir cรณdigo separado para cada rama, puedes usar una expresiรณn ternaria (condicional).

Sintaxis:

value_if_true if condition else value_if_false

Ejemplo:

Python Ejemplo de una sentencia condicional ternaria de una sola lรญnea

def main():
    x, y = 10, 8
    st = "x is less than y" if (x < y) else "x is greater than or equal to y"
    print(st)

if __name__ == "__main__":
    main()
  • Code Lรญnea 2: Definimos dos variables x, y = 10, 8.
  • Code Lรญnea 3: La variable st se establece en โ€œx es menor que yโ€ si x < y; de lo contrario, se convierte en โ€œx es mayor o igual que yโ€. Como aquรญ x > y, st se convierte en el segundo valor.
  • Code Lรญnea 4: Imprime el valor de st y proporciona la salida correcta.

Python Declaraciรณn if anidada

Una instrucciรณn if anidada coloca una instrucciรณn if dentro de otra, lo cual es รบtil cuando una decisiรณn depende de una segunda condiciรณn. El siguiente ejemplo demuestra una instrucciรณn if anidada en Python que calcula el barcoping El precio se basa en el paรญs y el total del pedido.

total = 100
# country = "US"
country = "AU"

if country == "US":
    if total <= 50:
        print("Shipping Cost is $50")
    elif total <= 100:
        print("Shipping Cost is $25")
    elif total <= 150:
        print("Shipping Cost is $5")
    else:
        print("FREE")

if country == "AU":
    if total <= 50:
        print("Shipping Cost is $100")
    else:
        print("FREE")

Descomenta la lรญnea 2 del cรณdigo anterior, comenta la lรญnea 3 y vuelve a ejecutar el cรณdigo para ver cรณmo cambia el resultado para un paรญs diferente.

Declaraciรณn de caso de cambio en Python

ยฟQuรฉ es una instrucciรณn switch?

Una instrucciรณn switch es una instrucciรณn de bifurcaciรณn mรบltiple que compara el valor de una variable con los valores especificados en las instrucciones case. Durante muchos aรฑos, la Python El lenguaje no tenรญa una instrucciรณn switch, por lo que los desarrolladores implementaron el mismo comportamiento con Python diccionario mapaping.

Ejemplo usando un mapa de diccionarioping:

def switch_example(argument):
    switcher = {
        0: "This is Case Zero",
        1: "This is Case One",
        2: "This is Case Two",
    }
    return switcher.get(argument, "nothing")

if __name__ == "__main__":
    argument = 1
    print(switch_example(argument))

Cambiar caso con coincidencia (Python 3.10 y Later)

Desde Python 3.10 (lanzado en octubre de 2021), Python proporciona un nativo caja de cerillas Esta instrucciรณn, conocida como coincidencia de patrones estructurales, ofrece una alternativa clara y legible a las largas cadenas de elif y al enfoque de diccionario que se muestra arriba.

def switch_example(argument):
    match argument:
        case 0:
            return "This is Case Zero"
        case 1:
            return "This is Case One"
        case 2:
            return "This is Case Two"
        case _:
            return "nothing"

if __name__ == "__main__":
    print(switch_example(1))

El guion bajo (_) actรบa como el caso predeterminado, coincidiendo con cualquier valor no manejado por los casos anteriores, al igual que el valor predeterminado en una instrucciรณn switch tradicional.

โœ… Consejo: Utilice match-case si estรก en Python 3.10 o posterior. Para versiones anteriores, consulte el mapa del diccionario.ping Sigue siendo la forma estรกndar de emular una instrucciรณn switch.

if vs elif vs else: Comparaciรณn rรกpida

Utilice esta comparaciรณn para decidir quรฉ estructura condicional se ajusta mejor a su lรณgica de toma de decisiones.

ComunicadoPropรณsitoCuรกndo usar
ifSe ejecuta un bloque cuando se cumple una condiciรณn.Una รบnica decisiรณn de sรญ o no
siโ€ฆde lo contrarioProporciona una alternativa cuando la condiciรณn es falsa.Dos resultados mutuamente excluyentes
elifPrueba condiciones adicionales en secuenciaTres o mรกs posibilidades
Anidado siColoca un if dentro de otro if.Una decisiรณn que depende de una segunda condiciรณn.
TernarioCondensa la estructura if-else en una sola lรญnea.Asignaciรณn de valor simple
caja de cerillasCompara un valor con muchos patrones.Ramificaciรณn de mรบltiples vรญas (Python 3.10 +)
โš  Nota: Python 2 llegaron al final de su vida รบtil el 1 de enero de 2020, y todos los ejemplos en este artรญculo utilizan Python 3 sintaxis. En Python 2, print era una instrucciรณn (por ejemplo, print st) en lugar de una funciรณn, por lo que el cรณdigo anterior no se ejecutarรก sin cambios en Python 2.

Preguntas Frecuentes

Una sentencia if inicia una decisiรณn y siempre se evalรบa. Una sentencia elif (else-if) se comprueba solo cuando las condiciones if o elif anteriores son falsas, lo que permite probar varias posibilidades en una misma cadena mientras se ejecuta exactamente un bloque.

Si. Desde Python 3.10, la instrucciรณn match-case proporciona ramificaciรณn nativa al estilo switch mediante la coincidencia de patrones estructurales. En versiones anteriores, los desarrolladores emulan un switch utilizando un mapa de diccionario.ping con el mรฉtodo get() para proporcionar un valor predeterminado.

Utilice una expresiรณn ternaria: valor_si_es_verdadero si condiciรณn sino valor_si_es_falso. Por ejemplo, st = โ€œbajoโ€ si x < 10 sino โ€œaltoโ€ asigna un valor en una sola lรญnea legible sin un bloque if-else completo.

Sรญ. Los asistentes de programaciรณn con IA pueden generar, explicar y depurar lรณgica condicional (if-elif-else) a partir de instrucciones en lenguaje natural. Son รบtiles para aprender, pero aun asรญ conviene revisar el resultado para confirmar que las condiciones y la indentaciรณn coinciden con la lรณgica prevista.

Sรญ. La lรณgica condicional es fundamental para la IA. Los รกrboles de decisiรณn, los sistemas basados โ€‹โ€‹en reglas y los procesos de preprocesamiento de datos se basan en la estructura condicional (if-else) para elegir acciones, filtrar datos y controlar cรณmo un modelo maneja diferentes entradas.

Resumir este post con: