Lección 06 · 02 Listas, bucles y funciones

Bucles: repetir sin copiar y pegar

Automatizar es, sobre todo, repetir la misma acción con muchos datos. El bucle for hace exactamente eso.

for: una vez por cada elemento

clientes = ["Ana", "Luis", "Eva"]
for cliente in clientes:
    print(f"Enviando recordatorio a {cliente}")
print("Fin")

Lo sangrado se repite; lo que está fuera de la sangría se ejecuta una sola vez, al terminar.

range y enumerate

for i in range(3):          # 0, 1, 2
    print("vuelta", i)

for numero, tarea in enumerate(["leer", "resumir"], start=1):
    print(numero, tarea)

Acumular

El patrón más común: una variable que empieza vacía y se va llenando dentro del bucle.

importes = [120, 80, 45, 300]
total = 0
grandes = []
for importe in importes:
    total += importe          # igual que total = total + importe
    if importe > 100:
        grandes.append(importe)
print(total, grandes)

while y break

while repite mientras se cumpla la condición. Asegúrate de que algo la haga falsa, o el bucle no acabará (aquí se corta a los 8 segundos).

intentos = 0
while intentos < 3:
    intentos += 1
    print("intento", intentos)
// reto 01

Cuenta los urgentes

Cuenta en urgentes cuántos asuntos contienen la palabra urgente (sin importar mayúsculas). Imprime el número.

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

Recorre con for asunto in asuntos: y suma 1 cuando "urgente" in asunto.lower().

$ python main.py
    // reto 02

    Transforma una lista

    Crea limpios, una lista nueva con cada nombre sin espacios sobrantes y con la primera letra en mayúscula (.strip().capitalize()). Imprímela.

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

    Dentro del bucle: limpios.append(nombre.strip().capitalize()).

    $ python main.py
      // reto 03

      Tabla de costes

      Para cada número de tokens de la lista, imprime una línea N tokens → X €, con el coste a 0.002 € por cada 1.000 tokens y X redondeado a 4 decimales. La primera línea debe ser 1000 tokens → 0.002 €.

      main.py
      Ctrl/⌘ + Enter
      ¿Atascado? Ver pista
      for tokens in lotes:
          coste = round(tokens / 1000 * precio_por_mil, 4)
          print(f"{tokens} tokens → {coste} €")
      $ python main.py