Trotero · Laboratorio Python

Practica el bucle for resolviendo nueve retos

Desde una cuenta atrás hasta una pirámide de asteriscos: recorre cadenas, genera números con range(), acumula, busca con break y else y, como adelanto, recorre tus primeras listas.

Python se cargará al ejecutar el primer ejercicio
Las ejecuciones prolongadas pueden detenerse. Python funciona dentro de tu navegador.
1

Cuenta atrás del lanzamiento

★☆☆☆ · range() hacia atrás

Escribe un programa que pregunte cuántos segundos faltan para el lanzamiento y muestre la cuenta atrás en una sola línea, hasta llegar a 0, con los números separados por comas. Al final debe mostrar ¡Despegue!.

Segundos para el despegue: 5
5, 4, 3, 2, 1, 0
¡Despegue!

Ojo: después del 0 no debe quedar ninguna coma. Prueba también con 0.

Pista 1

¿Qué range() va de N hasta 0, incluido, contando hacia atrás? Recuerda que el fin nunca se incluye.

Pista 2

Con print(..., end=", ") todo queda en la misma línea. ¿Cómo distingues el último número para no poner coma detrás?

Tu códigoPython
ConsolaPreparada
La salida aparecerá aquí.

Para incluir el 0, el fin tiene que ser -1. El último valor que recibe s es 0, y es el único que se imprime sin coma y con salto de línea.

2

Deletrear una palabra

★☆☆☆ · Recorrer una cadena · contador

Pide una palabra y muéstrala letra a letra, cada una con su posición. Al final, indica cuántas letras tiene.

Palabra: Sol
1: S
2: o
3: l
La palabra tiene 3 letras.
Pista

El for te entrega cada letra, pero no su posición. Necesitas un contador que empiece en 0 y aumente en cada vuelta.

Tu códigoPython
ConsolaPreparada
La salida aparecerá aquí.

Al terminar el bucle, el contador vale exactamente el número de vueltas: una por letra. Si escribes una frase, los espacios también cuentan.

sep= funciona como end: cambia el separador que print() pone entre los valores, que por defecto es un espacio.

3

La tabla de multiplicar

★☆☆☆ · range() con inicio y fin

Pide un número y muestra su tabla de multiplicar del 1 al 10.

Tabla del: 7
7 x 1 = 7
7 x 2 = 14
...
7 x 10 = 70
Pista

Para ir del 1 al 10, ¿qué fin necesita range()?

Tu códigoPython
ConsolaPreparada
La salida aparecerá aquí.

range(1, 11) llega hasta 10 porque el 11 no se incluye. Un error frecuente es escribir range(1, 10) y quedarse sin la última línea.

4

La suma de los pares

★★☆☆ · Acumulador · paso 2

Pide un número N y suma todos los números pares desde 2 hasta N, incluido si es par. Muestra los pares en una línea y, debajo, la suma.

Hasta: 10
Pares: 2 4 6 8 10
Suma: 30

Prueba con un N impar, como 9, y con 1.

Pista 1

Puedes recorrer solo los pares con un paso de 2. ¿Dónde empieza y dónde debe terminar el range() para incluir N?

Pista 2

El acumulador empieza en 0, el valor neutro de la suma.

Tu códigoPython
ConsolaPreparada
La salida aparecerá aquí.

El fin es n + 1 para que n entre en la serie cuando es par. Con N = 1 el bucle da cero vueltas y la suma se queda en 0.

5

Contar vocales en serio

★★☆☆ · Cadenas · in

En la lección contamos vocales, pero solo las minúsculas sin tilde. Mejora el programa para que cuente también las mayúsculas, las vocales con tilde y la ü.

Frase: Árbol de Navidad
Vocales: 6
Pista

No necesitas nada nuevo: basta con ampliar la cadena con la que comparas cada letra.

Tu códigoPython
ConsolaPreparada
La salida aparecerá aquí.

in comprueba si la letra aparece en la cadena de vocales. Más adelante verás funciones de texto que convierten todo a minúsculas y simplifican la comparación.

6

¿Es primo?

★★★☆ · for … else · break

Un número es primo si es mayor que 1 y solo es divisible por 1 y por sí mismo. Pide un número y di si es primo. Si no lo es, indica su primer divisor.

Número: 21
21 no es primo: es divisible por 3
Número: 13
13 es primo

Prueba también con 1 y con 2.

Pista 1

Prueba todos los posibles divisores entre 2 y el número anterior. Si alguno divide exactamente, ya sabes la respuesta: sal con break.

Pista 2

¿Dónde colocas el mensaje «es primo» para que solo aparezca si el bucle termina sin break?

Pista 3

El 0 y el 1 no son primos: trátalos antes del bucle.

Tu códigoPython
ConsolaPreparada
La salida aparecerá aquí.

El else está alineado con el for: se ejecuta solo si ningún divisor ha provocado un break. Con 2, range(2, 2) está vacío, no hay vueltas y el else lo declara primo.

7

La lista de invitados

★★☆☆ · Adelanto: listas · break y else

Adelanto: listas. Las listas tendrán su propia lección. Aquí basta con saber que se recorren igual que una cadena: una vuelta por elemento.

El código de partida ya trae la lista de invitados. Pide un nombre y búscalo. Si está, da la bienvenida e indica su posición en la lista. Si no está, avísalo.

Nombre: Marta
Te damos la bienvenida, Marta: estás en la posición 3.
Nombre: Pedro
Lo siento, Pedro no está en la lista.
Pista 1

Recorre la lista con un contador de posición. Cuando encuentres el nombre, ya no hace falta seguir: break.

Pista 2

El aviso «no está en la lista» va en el else del for.

Tu códigoPython
ConsolaPreparada
La salida aparecerá aquí.

Es el mismo esquema que la búsqueda de la llave en la lección, pero recorriendo una lista. Python distingue mayúsculas: marta no coincide con Marta.

8

Pirámide de asteriscos

★★★☆ · Bucles anidados

Pide una altura y dibuja una pirámide de asteriscos centrada. Cada fila tiene dos asteriscos más que la anterior.

Altura: 4
   *
  ***
 *****
*******
Pista 1

El bucle exterior recorre las filas. Dentro de cada fila, un bucle escribe los espacios y otro los asteriscos, todo con end="".

Pista 2

En la fila f (empezando en 1) hay altura - f espacios y 2 * f - 1 asteriscos. No olvides el print() vacío al final de cada fila.

Tu códigoPython
ConsolaPreparada
La salida aparecerá aquí.

Por cada vuelta del bucle exterior, los dos bucles interiores completan todas las suyas. El print() vacío pertenece solo al exterior y cierra cada fila.

9

Los meses del año

★★★☆ · Adelanto: listas · contador

Adelanto: listas. Como en el reto 7, la lista ya está en el código de partida.

Recorre la lista de los meses y muestra cada uno con su número y el trimestre al que pertenece. Al final, indica cuántos meses llevan la letra «r».

1 enero · trimestre 1
2 febrero · trimestre 1
3 marzo · trimestre 1
4 abril · trimestre 2
...
12 diciembre · trimestre 4
Meses con «r»: 8
Pista 1

Un contador te da el número del mes. El trimestre se puede calcular con la división entera: ¿qué da (numero - 1) // 3 para los meses 1, 2 y 3? ¿Y para el 4?

Pista 2

Para la «r» basta con if "r" in mes: y otro contador.

Tu códigoPython
ConsolaPreparada
La salida aparecerá aquí.

(numero - 1) // 3 vale 0 para los meses 1 a 3, 1 para los meses 4 a 6, y así sucesivamente; sumando 1 se obtiene el trimestre. Los meses sin «r» van de mayo a agosto.

Reto extra · ¿Tenía razón Gauss?

Cuenta la leyenda que el pequeño Gauss sumó del 1 al 100 en segundos usando la fórmula N · (N + 1) / 2. Comprueba con bucles que la suma uno a uno coincide con la fórmula para todos los valores de N del 1 al 100. Hace falta un for dentro de otro for, y un for … else te dirá si todo ha ido bien.

Mostrar solución del reto extra
for n in range(1, 101):
    total = 0
    for k in range(1, n + 1):
        total += k
    if total != n * (n + 1) // 2:
        print("No coincide para N =", n)
        break
else:
    print("La fórmula coincide para todos los N del 1 al 100.")
    print("Para N = 100, la suma es", total)

Resultado: coincide en los 100 casos; para N = 100 la suma es 5050.

Trotero · Conocimiento · PythonMotor Python en navegador · Trabajo local, sin enviar tu código al servidor