# ─────────────────────────────────────────────
# BLOQUE 1: Recorrer un rango y mostrar cada número
# ─────────────────────────────────────────────
# for con rangos ← título original del programa
# range(1, 11) genera la secuencia: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10
# REGLA IMPORTANTE: el primer número SÍ se incluye, el segundo NO.
# Por eso para llegar al 10 hay que escribir 11 como límite.
# En cada vuelta del bucle, la variable numero toma el valor siguiente de la secuencia.
for numero in range(1,11):
print(numero)
# Resultado: imprime los números del 1 al 10, cada uno en su línea.
#
# Variaciones de range() que conviene conocer:
# range(5) → 0, 1, 2, 3, 4 (un solo argumento: empieza en 0)
# range(0, 10, 2) → 0, 2, 4, 6, 8 (tercer argumento: el salto entre números)
# range(10, 0, -1) → 10, 9, 8, 7... 1 (salto negativo: cuenta hacia atrás)
# range(0, 100, 5) → 0, 5, 10, 15... 95 (de 5 en 5)
# ─────────────────────────────────────────────
# BLOQUE 2: Sumar todos los números del 1 al 10
# ─────────────────────────────────────────────
# El acumulador es una variable que empieza en 0 ANTES del bucle
# y va sumando valores en cada vuelta.
# Si lo inicializáramos dentro del bucle, se reiniciaría a 0 en cada vuelta
# y nunca acumularía nada. Por eso SIEMPRE se declara fuera.
suma=0
for numero in range(1,11):
suma+=numero # es exactamente lo mismo que escribir: suma = suma + numero
# Traza paso a paso de cómo crece suma:
# Vuelta 1: suma = 0 + 1 = 1
# Vuelta 2: suma = 1 + 2 = 3
# Vuelta 3: suma = 3 + 3 = 6
# Vuelta 4: suma = 6 + 4 = 10
# Vuelta 5: suma = 10 + 5 = 15
# Vuelta 6: suma = 15 + 6 = 21
# Vuelta 7: suma = 21 + 7 = 28
# Vuelta 8: suma = 28 + 8 = 36
# Vuelta 9: suma = 36 + 9 = 45
# Vuelta 10: suma = 45 + 10 = 55
# El print está FUERA del bucle (sin sangría).
# Si estuviera dentro con sangría, imprimiría el subtotal en cada vuelta.
# Al estar fuera, solo imprime el resultado final cuando el bucle ha terminado.
print(suma)
# Resultado: 55
#
# Curiosidad matemática: la fórmula de Gauss da el mismo resultado sin bucle:
# n * (n+1) / 2 → 10 * 11 / 2 = 55
# Pero construir el bucle a mano es la mejor forma de entender el patrón acumulador.
# ─────────────────────────────────────────────
# BLOQUE 3: Mostrar solo los números pares del 1 al 10
# ─────────────────────────────────────────────
# Este bloque combina un for con un if dentro.
# El for genera todos los números del 1 al 10.
# El if filtra: solo deja pasar los que cumplen la condición.
for numero in range(1,11):
# El operador % (módulo) devuelve el resto de una división.
# Si numero % 2 == 0, el resto al dividir entre 2 es cero → el número es par.
# Ejemplos: 4 % 2 = 0 → par 5 % 2 = 1 → impar
# 6 % 2 = 0 → par 7 % 2 = 1 → impar
if numero % 2 == 0:
print(numero)
# Resultado: 2 4 6 8 10 (cada uno en su línea)
#
# Para imprimir los IMPARES en su lugar, solo habría que cambiar == 0 por != 0:
# if numero % 2 != 0:
# print(numero)
# Resultado: 1 3 5 7 9
#
# Alternativa con range de salto 2 (sin necesidad de if):
# for numero in range(2, 11, 2): → genera directamente 2, 4, 6, 8, 10
# print(numero)
# ─────────────────────────────────────────────
# BLOQUE 4: Dibujar un triángulo de asteriscos
# ─────────────────────────────────────────────
# Este bloque usa una propiedad de Python muy útil:
# multiplicar una cadena de texto por un número la repite ese número de veces.
# Ejemplos:
# "*" * 1 → *
# "*" * 3 → ***
# "*" * 5 → *****
# "ab" * 3 → ababab
for numero in range(1,11):
print("*"*numero) # en cada vuelta, numero vale 1, 2, 3... 10
# así que se imprimen 1, 2, 3... 10 asteriscos seguidos
# Resultado visual (un triángulo que crece):
# *
# **
# ***
# ****
# *****
# ******
# *******
# ********
# *********
# **********
#
# Para un triángulo invertido (que decrece) bastaría con invertir el range:
# for numero in range(10, 0, -1):
# print("*" * numero)
# Resultado: empieza con 10 asteriscos y va bajando hasta 1.
# ─────────────────────────────────────────────
# BLOQUE 5: Tabla de multiplicar de un número
# ─────────────────────────────────────────────
# Tabla de multiplicar ← comentario original
# El factor es el número del que queremos calcular la tabla.
# Cambiando este valor obtenemos cualquier tabla de multiplicar.
factor=7
# El range va del 1 al 10 (el 11 no se incluye).
# En cada vuelta, numero toma los valores 1, 2, 3... 10.
for numero in range(1,11):
# La f-string permite construir el texto con las variables directamente.
# {numero} → el multiplicador (1, 2, 3... 10)
# {factor} → siempre 7
# {numero*factor}→ el resultado
print(f"{numero} X {factor} = {numero*factor}")