Ciclo FOR¶
El ciclo for recorre un conjunto de valores definido de antemano. A diferencia del while, se sabe de antemano cuántas veces se repetirá.
Estructura¶
flowchart TD
A([INICIO]) --> B{"quedan valores"}
B -->|Sí| C["var = valor actual"]
C --> D[instrucciones]
D --> B
B -->|No| E([continúa])
El funcionamiento es el siguiente:
- Se evalúa el conjunto de valores. Cada elemento tiene un índice (posición), que comienza en cero.
- Por cada elemento, la variable
vartoma el valor actual y se ejecutan las instrucciones del bloque. - Cuando no quedan valores, el ciclo termina.
Cada repetición se denomina iteración o ciclo.
La función range()¶
En Python, el conjunto de valores del for se define habitualmente con range():
| Sintaxis | Genera | Resultado |
|---|---|---|
range(10) |
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9] |
10 números desde 0 |
range(0, 10) |
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9] |
igual al anterior |
range(0, 10, 2) |
[0, 2, 4, 6, 8] |
de 2 en 2 |
range(9, -1, -1) |
[9, 8, 7, 6, 5, 4, 3, 2, 1, 0] |
descendente |
Sintaxis general
range(inicio, fin, paso) genera enteros desde inicio hasta justo antes de fin, avanzando en pasos de paso. Si paso es negativo, los valores van disminuyendo.
Ejemplos con range()¶
Ejemplo resuelto: Pago de remuneraciones¶
Una empresa quiere calcular el sueldo bruto y líquido de cada empleado. El valor por hora es $2.500 y el sueldo líquido corresponde al 80% del bruto.
Algoritmo:
- Ingresar y validar la cantidad de empleados.
- Por cada empleado:
- Ingresar y validar la cantidad de horas trabajadas.
- Calcular el sueldo bruto:
cant_horas * 2500 - Calcular el sueldo líquido:
sueldo_bruto * 0.8 - Mostrar ambos sueldos.
Ver solución
Diagrama de flujo:
flowchart TD
A([INICIO]) --> B[/Ingresar cant_empleados/]
B --> C{"cant_empleados\n> 0"}
C -->|No| B
C -->|Sí| D{"indice <\ncant_empleados"}
D -->|Sí| E[/Ingresar cant_horas/]
E --> F{"cant_horas\n> 0"}
F -->|No| E
F -->|Sí| G["sueldo_bruto = cant_horas * 2500"]
G --> H["sueldo_liquido = sueldo_bruto * 0.8"]
H --> I[\"Mostrar sueldo_bruto y sueldo_liquido"\]
I --> J["indice = indice + 1"]
J --> D
D -->|No| K([FIN])
Implementación en Python:
# 1) Ingresar y validar la cantidad de empleados
noValido = True
while noValido:
try:
cant_empleados = int(input("Ingrese la cantidad de empleados: "))
if cant_empleados > 0:
noValido = False
else:
print("Error: el número debe ser mayor a 0.")
except:
print("Error: dato incorrecto.")
# 2) Procesar cada empleado
for indice in range(cant_empleados):
# 2.1) Ingresar y validar las horas trabajadas
noValido = True
while noValido:
try:
cant_horas = float(input(f"Empleado {indice + 1} — Ingrese horas trabajadas: "))
if cant_horas > 0:
noValido = False
else:
print("Error: las horas deben ser mayores a 0.")
except:
print("Error: dato incorrecto.")
# 2.2 y 2.3) Calcular sueldos
sueldo_bruto = int(cant_horas * 2500)
sueldo_liquido = int(sueldo_bruto * 0.8)
# 2.4 y 2.5) Mostrar resultados
print(f" Sueldo bruto: ${sueldo_bruto:,}")
print(f" Sueldo líquido: ${sueldo_liquido:,}")
FOR dentro de WHILE
Es habitual combinar estructuras: el for recorre los empleados (cantidad conocida), y el while valida cada dato ingresado (cantidad desconocida de intentos).
Ejercicios¶
-
Escribe un programa que solicite un número entero positivo y muestre un triángulo de asteriscos de esa altura:
-
Escribe un programa que solicite un número entero positivo impar y muestre el siguiente triángulo (ejemplo para 9):
-
Escribe un programa que calcule la nota final de cada estudiante de un curso y el promedio general de la asignatura. Por cada estudiante se ingresan sus notas; al terminar, el programa pregunta si se desea ingresar otro estudiante. Al finalizar muestra el promedio general del curso.
-
Escribe un programa que solicite un número entero positivo N y calcule la sumatoria \(\displaystyle\sum_{i=1}^{N} i\). Valida que N sea mayor a 0.
-
Escribe un programa que muestre la tabla de multiplicar del número que ingrese el usuario (del 1 al 10).