Repaso if con funciones

# IF: si se cumple una condición hacemos algo y si no, otra cosa

edad=20  # Declaramos una variable entera. También podríamos pedirla al usuario: edad = int(input("¿Cuántos años tienes? "))

if edad>=18:               # Comprobamos si edad es mayor O IGUAL a 18
    print("Mayor de edad") # Si la condición es True, ejecutamos este bloque (está indentado con 4 espacios)
else:                      # Si la condición es False, ejecutamos el bloque alternativo
    print("Menor de edad") # Solo se ejecuta UNO de los dos bloques, nunca los dos

# -----------------------------------------------------------------------

# elif: si no se cumple una condición hacemos otra comprobación todas las veces que queramos
# Ideal para rangos

temperatura=25  # Prueba a cambiar este valor para ver cómo cambia el resultado

if temperatura<=0:          # Primera comprobación. Si es True, entra aquí y SALTA todos los demás
    print("Me congelo")
elif temperatura<=15:       # Solo se comprueba si la anterior fue False
    print("Hace frío")      # Aquí ya sabemos implícitamente que temperatura > 0
elif temperatura<=25:       # Solo se comprueba si todas las anteriores fueron False
    print("¡Que buen tiempo")
elif temperatura<=35:       # Podríamos añadir tantos elif como rangos necesitemos
    print("El caloret")
else:                       # Captura cualquier caso que no haya entrado en ningún if/elif anterior
    print("Me asfixio")     # Con temperatura=25, entrará en el tercer elif (<=25)

# -----------------------------------------------------------------------
# ALTERNATIVA con ifs independientes (sin elif):
# Diferencia clave: aquí se evalúan TODAS las condiciones siempre,
# aunque ya hayamos encontrado una verdadera. Es menos eficiente.
# Por eso cuando los casos son excluyentes, es mejor usar elif.

if temperatura<=0:
    print("Me congelo")
if temperatura>0 and temperatura<=15:   # Necesitamos indicar el límite inferior porque no hay elif
    print("Hace frío")                  # "and" significa que las DOS condiciones deben ser True
if temperatura>15 and temperatura<=25:  # Equivalente más compacto: if 15 < temperatura <= 25
    print("Que buen tiempo")
if temperatura>25 and temperatura<=35:
    print("El caloret")
if temperatura>35:
    print("Me asfixio")

# -----------------------------------------------------------------------

# función mayor a la que le pasamos dos números y nos devuelve el mayor
# mayor(1,2)->2  mayor(8,3)->8
# PASOS
# Defino la función y los parámetros
# Utilizo una variable para el resultado
# Hago el proceso de la función
# Devuelvo el resultado

def mayor(num1,num2):  # "def" define la función. num1 y num2 son parámetros (valores de entrada)
    resultado=0        # Inicializamos la variable de resultado. Buena práctica antes de usarla.
    if num1>num2:      # Comparamos los dos parámetros
        resultado=num1 # Si num1 es mayor, guardamos num1
    else:
        resultado=num2 # Si no, guardamos num2 (incluye el caso en que sean iguales)
    return resultado   # "return" devuelve el valor al lugar donde se llamó la función
                       # ALTERNATIVA más corta: return num1 if num1 > num2 else num2
                       # ALTERNATIVA con max(): return max(num1, num2)

print(mayor(1,2))  # Llamamos a la función con 1 y 2 → devuelve 2
print(mayor(8,3))  # Llamamos con 8 y 3 → devuelve 8
print(mayor(6,9))  # Llamamos con 6 y 9 → devuelve 9

# -----------------------------------------------------------------------

a=int(input("Ingrese el primer número (0 para salir) "))  # int() convierte el texto del input a número entero
b=int(input("Ingrese el segundo número "))                # Si el usuario escribe letras, dará error (pruébalo)

while a!=0:  # Bucle que se repite MIENTRAS a sea distinto de 0. Si el usuario escribe 0, el bucle termina.
    print(f"El mayor de {a} y {b} es {mayor(a,b)}")   # f-string: las variables entre {} se sustituyen por su valor
    a = int(input("Ingrese el primer número (0 para salir)")) # Pedimos de nuevo para poder volver a comprobar el while
    b = int(input("Ingrese el segundo número"))               # Importante: si no actualizamos a, el bucle sería infinito

# -----------------------------------------------------------------------

# Vamos a crear una función cadena_mas_corta a la que le pasamos dos cadenas
# y nos devuelve la más corta
# cadena_mas_corta("Eva","María")->"Eva"

def cadena_mas_corta(cadena1,cadena2):
    resultado=cadena1       # Asumimos que la primera cadena es la más corta (valor por defecto)

    if len(cadena1)>len(cadena2):  # len() devuelve el número de caracteres de una cadena
        resultado=cadena2          # Si cadena1 es MÁS LARGA, entonces cadena2 es la más corta
    # Ojo: si tienen la misma longitud, devuelve cadena1 (la asignada por defecto al inicio)
    # ALTERNATIVA más corta: return cadena1 if len(cadena1) <= len(cadena2) else cadena2
    # ALTERNATIVA con min(): return min(cadena1, cadena2, key=len)

    return resultado  # Devolvemos la cadena más corta

print(cadena_mas_corta("Eva","María"))                           # "Eva" tiene 3 letras, "María" tiene 5 → devuelve "Eva"
print(cadena_mas_corta("otorrinolaringólogo","patata"))          # "patata" es más corta → devuelve "patata"
print(cadena_mas_corta("alubias","supercalifragilísticoespialidoso")) # "alubias" es más corta → devuelve "alubias"

Publicado por

Juan Pablo Fuentes

Formador de programación y bases de datos