8. Condicionales - manuelmarinduque/Apuntes_Python_3 GitHub Wiki

Condicionales

Tomado de Condicionales I. Vídeo 10

Flujo de ejecución de un programa

Orden en que se ejecutan las instrucciones del programa. El orden normalmente es de arriba hacia abajo, pero a veces suele ser alterado por los condicionales y los bucles.

Sintaxis de un condicional

if condicion:
    # Instrucciones de la condición
else:
    # Instrucciones de la condición

Ingresar un valor por teclado desde la consola

Para ello, se utiliza la función input() que asigna el valor de la entrada a una variable. Esta función toma la entrada de tipo String, por lo que si se requiere trabajar con otro tipo, se debe hacer un cambio de tipo o casteo. Para hacer un casteo a entero o flotante se utiliza la función int() o float() antes de input(). La función puede recibir un String como parámetro en el que se especifica un mensaje a mostrar por consola.

Ejemplo

nota_alumno = int(input("Ingrese nota"))


def evaluacion(nota):
    valoracion = "aprobado"
    if nota < 5:
        valoracion = "suspendido"
    return valoracion


print(evaluacion(nota_alumno))

Nota: Las variables son accesibles dentro de su ámbito, es decir, dentro de donde ha sido declarada.

La instrucción else

Tomado de Condicionales II. Vídeo 11

La instrucción else debe estar acompañada de su correspondiente if. En el caso que haya varios if la instrucción else acompaña al más cercano:

edad_usuario = 15

if edad_usuario < 18:
    print("No puede pasar")
if edad_usuario > 100:
    print("Edad incorrecta")
else:
    print("Puede pasar") 

# Imprime: "No puede pasar" y también "Puede pasar". Produciéndose un error.

Nota: En el código anterior la instrucción else sólo se aplica al if mas cercano, por lo que los dos_if_ no estarían conectados, siendo dos bloques de código diferentes.

Para resolver la situación anterior, en la cual haya que evaluar varias condiciones o condiciones encadenadas, se utiliza la instrucción elif. En este caso else acompaña a toda la estructura condicional, formando un único bloque de código:

edad_usuario = 15

if edad_usuario < 18:
    print("No puede pasar")
elif edad_usuario > 100:
    print("Edad incorrecta")
else:
    print("Puede pasar") 

# Imprime: "No puede pasar"

Condiciones encadenadas

Tomado de Condicionales III. Vídeo 12

El condicional switch (útil al evaluar condiciones encadenadas o posibilidades), común en otros lenguajes de programación, no existe en Python porque esta instrucción hace lo mismo que el condicional elif. En otros lenguajes de programación el uso de una o de la otra depende del escenario.

Alternativas para evaluar condiciones encadenadas

  • Emplear diccionarios.

  • Concatenar operadores de comparación al construir un condicional.

  • Emplear los operadores lógicos and y or, y el operador especial in.

Concatenación de operadores de comparación

Es el uso de varios operadores de comparación en una condición evaluándose como si fuese varias conexiones de parejas del operador lógico and, por lo que la condición se cumple si todos sus valores son true:

edad_usuario = 145

if 0 < edad_usuario < 100: # Se evalúa como: 0 < edad_usuario and edad_usuario < 100.
    print("Edad correcta")
else:
    print("Edad incorrecta") 

# Imprime: "Edad incorrecta"

Ejemplo

salario_presidente = int(input("Introduce salario presidente"))
print("Salario presidente: " + str(salario_presidente))

salario_director = int(input("Introduce salario director"))
print("Salario presidente: " + str(salario_director))

salario_jefe = int(input("Introduce salario jefe"))
print("Salario presidente: " + str(salario_jefe))

salario_administrativo = int(input("Introduce salario administrativo"))
print("Salario presidente: " + str(salario_administrativo))

if salario_administrativo < salario_jefe < salario_director < salario_presidente:
    print("Todo funciona correctamente.")
else:
    print("Algo falla con los salarios.")

Nota: Python al ser fuertemente tipado no permite la concatenación entre String e int, por eso se hace un casteo a String con la función str() y se pueda visualizar el mensaje de la instrucción print().

Uso del operador lógico in

Su uso es similar a SQL. El valor de salida es True si el valor ingresado está dentro de la estructura de datos definida:

asignatura = input("Ingrese nombre de la asignatura")

if asignatura in ("Informatica", "Bases de datos", "Sistemas de informacion"):
    print("Asignatura elegida: " + asignatura) # Concatenación de dos Strings.
else:
    print("La asignatura no está en la lista")

Python es case sentive, por lo que distingue entre mayúsculas y minúsculas. En el ejemplo anterior si se ingresa "bases de datos", imprime "La asignatura no está en la lista". Para esto, lo mejor es que las opciones a elegir estén en minúsculas y que el valor del String de entrada luego sea convertido a minúsculas usando la función lower() (Para convertir a mayúsculas se usa la función upper()):

opcion = input("Ingrese nombre de la asignatura")
asignatura = opcion.lower()

if asignatura in ("informatica", "bases de datos", "sistemas de informacion"):
    print("Asignatura elegida: " + asignatura) # Concatenación de dos Strings.
else:
    print("La asignatura no está en la lista")

Nota: Si se ingresa: BaSeS De DaTos, cada letra es convertida a minúscula e imprime "Asignatura elegida".

⚠️ **GitHub.com Fallback** ⚠️