Lección 07 · 02 Listas, bucles y funciones

Funciones: empaqueta tu lógica

Una función es un trozo de código con nombre que puedes reutilizar. Escríbelo una vez, úsalo mil.

def y return

def con_iva(precio, tipo=0.21):
    return precio * (1 + tipo)

print(con_iva(100))          # usa el 21 % por defecto
print(con_iva(100, 0.10))    # tipo reducido
  • def define la función; lo sangrado es su cuerpo.
  • Los parámetros son los huecos que rellenas al llamarla.
  • return devuelve el resultado para que lo guardes o lo sigas usando. Sin return, la función devuelve None.

print no es return

def mal(a, b):
    print(a + b)

def bien(a, b):
    return a + b

x = mal(2, 3)    # imprime 5, pero x es None
y = bien(2, 3)   # no imprime nada; y vale 5
print(x, y)

Funciones pequeñas que se combinan

def limpiar(texto):
    return texto.strip().lower()

def es_urgente(texto):
    return "urgente" in limpiar(texto)

print(es_urgente("  URGENTE: revisar  "))
// reto 01

Una función que devuelve

Define saludar(nombre) que devuelva (no imprima) el texto Hola, <nombre>. Por ejemplo, saludar("Ana") devuelve "Hola, Ana".

main.py
Ctrl/⌘ + Enter
¿Atascado? Ver pista

return f"Hola, {nombre}".

$ python main.py
    // reto 02

    Recorta un texto largo

    Define recortar(texto, maximo=20) que devuelva el texto igual si tiene maximo caracteres o menos, y si es más largo, los primeros maximo caracteres seguidos de ....

    main.py
    Ctrl/⌘ + Enter
    ¿Atascado? Ver pista
    if len(texto) <= maximo:
        return texto
    return texto[:maximo] + "..."
    $ python main.py
      // reto 03

      Calculadora de coste

      Define coste(tokens, precio_por_mil=0.002) que devuelva el coste en euros redondeado a 4 decimales.

      main.py
      Ctrl/⌘ + Enter
      ¿Atascado? Ver pista

      return round(tokens / 1000 * precio_por_mil, 4).

      $ python main.py