Estructuras Repetitivas

5. Ciclo "for"

5.3. Ejemplos del uso de la sentencia "for"

Consigna 1:

Crear un código en Python que obtenga la suma de todos los números positivos divisibles por tres hasta el mil.

suma = 0
for numero in range(1, 1000):  # Desde 1 hasta 999
    if numero % 3 == 0:
        suma += numero
print("La suma de los números positivos divisibles por 3 hasta 1000 es:", suma)

Explicación:
  • range(1, 1000): genera números del 1 al 999.

  • if numero % 3 == 0: verifica si el número es divisible por 3.

  • suma += numero: si lo es, se suma al acumulador.

Resultado:

Este código imprime el total de esa suma. Si quisieras incluir el 1000 (aunque no es divisible por 3), solo habría que cambiar el rango a range(1, 1001).

Pregunta:
¿De qué otra forma se le ocurre que se puede obtener el mismo resultado?.

Consigna 2:

Realizar un programa en Python que pida al usuario que ingrese un número y calcular su factorial.

numero = int(input("Ingrese un número entero positivo: "))#Por que int??
factorial = 1 #Por que inicilizamos en 1??
if numero < 0:
    print("El factorial no está definido para números negativos.")
else:
    for i in range(1, numero + 1):
        factorial *= i
    print(f"El factorial de {numero} es: {factorial}")
Explicación
  • input(...): pide al usuario que ingrese un número.

  • int(...): convierte el texto ingresado en un número entero.

  • if numero < 0: valida que el número sea positivo.

  • for i in range(1, numero + 1): recorre desde 1 hasta el número ingresado.

  • factorial *= i: multiplica el acumulador por cada valor del rango.

  • Al final, muestra el resultado.

Pregunta:
Observe la función range( ). ¿Por qué se inicia en 1 y se termina en "numero + 1"?. Modifique el programa para que en caso de ingresar un número negativo pida el reingreso.


Consigna 3:

Realizar un programa en Python que cuente la cantidad de vocales y consonantes que tiene una frase ingresada por teclado.

frase = input("Ingrese una frase: ").lower()
vocales = "aeiou"
contador_vocales = 0
contador_consonantes = 0

for caracter in frase:
es_vocal = False
for vocal in vocales:
if caracter == vocal:
es_vocal = True

if es_vocal:
contador_vocales += 1
elif caracter.isalpha():
contador_consonantes += 1

print("La frase tiene {} vocales y {} consonantes".format(contador_vocales, contador_consonantes))
)

Explicación línea por línea:
  1. frase = input("Ingrese una frase: ").lower()

    • Se pide al usuario que escriba una frase.

    • .lower() convierte toda la frase a minúsculas, para que no haya diferencias entre 'A' y 'a', por ejemplo.

  2. vocales = "aeiou"

    • Se define un string con las vocales que se van a buscar.

  3. contador_vocales = 0

    • Inicializa el contador de vocales.

  4. contador_consonantes = 0

    • Inicializa el contador de consonante.

¿Qué hace caracter.isalpha())?

Evalúa si el carácter actual (caracter) es una letra del alfabeto, es decir, si es una letra y no un número, espacio, signo de puntuación, etc.

Por ejemplo:

    "a".isalpha() → True

    "Z".isalpha() → True

    "ñ".isalpha() → True

    "á".isalpha() → True (aunque acentuada, sigue siendo letra)

    "3".isalpha() → False

    "!".isalpha() → False

    " ".isalpha()→False`


Vemos otra versión que hace lo mismo pero sin  range.

frase = input("Ingrese una frase: ").lower()#para evitar que a sea distinta de A
vocales = "aeiou"
contador_vocales = 0
contador_consonantes = 0

for i in frase: #vemos que aqui i toma cada valor del string frase
    es_vocal=False
    for j in vocales:#vemos que aqui j toma cada valor del string vocales
        if i == j:
            es_vocal = True          
    if es_vocal:
        contador_vocales+=1
    elif i.isalpha():
        contador_consonantes+=1
        
print("La frase tiene {} vocales, y {} consonantes".format(contador_vocales,contador_consonantes))    

¿Qué hace  i.isalpha()?

Evalúa si el carácter actual i que toma como valor cada caracter de frace , y verifica que letra del alfabeto, es decir, si es una letra y no un número, espacio, signo de puntuación, etc.

Preguntas:

      • Según su uso, ¿Qué tipo de variable es "es_vocal"?.
      • ¿Qué es "isalpha( )"?.
      • ¿Existe una función de "isalpha( )" en el código?.