PROGRAMACIÓN EN PYTHON – CLASE 08

(Creado por el analista de sistemas y docente Leonel Iván Saafigueroa)


BUCLES FOR

Control de flujo, Slices de listas.


El bucle for es una herramienta fundamental en Python para recorrer secuencias de elementos como listas, cadenas, rangos u otros objetos iterables. Su sintaxis es concisa y fácil de entender: define una variable de iteración que toma el valor de cada elemento durante cada paso del ciclo (in), y la secuencia a recorrer. El bucle for ejecuta un bloque de código para cada elemento de la secuencia, lo que lo convierte en la opción ideal para tareas repetitivas o el procesamiento individual de elementos dentro de una colección.



Un ejemplo sencillo para ilustrar el uso del bucle for es imprimir cada elemento de una lista.

En este caso, la variable fruta toma el valor de cada elemento en la lista frutas. En cada iteración del bucle, se imprime el valor actual de la variable fruta.

Al ejecutar este código, se imprimirá cada fruta en una línea separada.

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
frutas = ["manzana", "banana", "pera"]
for fruta in frutas:
print(fruta)
frutas = ["manzana", "banana", "pera"] for fruta in frutas: print(fruta)
frutas = ["manzana", "banana", "pera"]
for fruta in frutas:
    print(fruta)
Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
manzana
banana
pera
manzana banana pera
manzana
banana
pera


Una tupla en Python es un conjunto ordenado e inmutable de elementos. Si bien comparte similitudes con las listas, la característica clave que las diferencia es que una vez creada, una tupla no puede ser modificada ni sus elementos cambiados. A pesar de esta inmutabilidad, podemos iterar sobre los elementos de una tupla utilizando el bucle for, similar a cómo lo hacemos con listas y cadenas.

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
frutas = ("manzana", "banana", "pera")
for fruta in frutas:
print(fruta)
frutas = ("manzana", "banana", "pera") for fruta in frutas: print(fruta)
frutas = ("manzana", "banana", "pera")
for fruta in frutas:
    print(fruta)
Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
manzana
banana
pera
manzana banana pera
manzana
banana
pera


En Python, una cadena de texto es esencialmente una secuencia ordenada de caracteres. Esta característica permite utilizar el bucle for para iterar a través de cada carácter individualmente.

Podemos acceder a cada letra, número o símbolo que compone la cadena y realizar operaciones específicas con cada uno.

Este código iterará sobre cada carácter del string mensaje e imprimirá cada uno en una línea separada, mostrando cómo podemos recorrer una cadena de texto carácter por carácter.

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
mensaje = "Hola mundo!"
for caracter in mensaje:
print(caracter)
mensaje = "Hola mundo!" for caracter in mensaje: print(caracter)
mensaje = "Hola mundo!"
for caracter in mensaje:
    print(caracter)
Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
H
o
l
a
m
u
n
d
o
!
H o l a m u n d o !
H
o
l
a

m
u
n
d
o
!


El método range() proporciona una forma conveniente de generar secuencias numéricas para usar en bucles for.

En lugar de trabajar directamente con listas, podemos especificar un inicio, un final (exclusivo) y un paso para definir la secuencia numérica que se generará. Esto permite iterar sobre rangos específicos de números sin tener que crear manualmente las listas.

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
for i in range(inicio, fin, paso):
# sentencia1
# sentencia2
# primer sentencia fuera del for
for i in range(inicio, fin, paso): # sentencia1 # sentencia2 # primer sentencia fuera del for
for i in range(inicio, fin, paso):
   # sentencia1
   # sentencia2

# primer sentencia fuera del for


Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
for num in range(5, 16, 2):
print(num, end=" ")
for num in range(5, 16, 2): print(num, end=" ")
for num in range(5, 16, 2):
    print(num, end=" ")
Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
5 7 9 11 13 15
5 7 9 11 13 15
5 7 9 11 13 15
Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
for num in range(3, 11):
print(num, end=" ")
for num in range(3, 11): print(num, end=" ")
for num in range(3, 11):
    print(num, end=" ")
Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
3 4 5 6 7 8 9 10
3 4 5 6 7 8 9 10
3 4 5 6 7 8 9 10
Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
for num in range(10):
print(num, end=" ")
for num in range(10): print(num, end=" ")
for num in range(10):
    print(num, end=" ")
Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
0 1 2 3 4 5 6 7 8 9
0 1 2 3 4 5 6 7 8 9
0 1 2 3 4 5 6 7 8 9

range() puede tener uno, dos o tres parámetros:

● range(inicio, fin, paso)

● range(inicio, fin): Se asume que paso = 1.

● range(fin): Se asume que inicio = 0 y paso = 1.

La función range() no incluye el último valor en la secuencia. Por ejemplo, range(1, 6) generará los números del 1 al 5, pero no incluirá el 6 en la secuencia.



El uso de range() para recorrer una lista puede ser un poco confuso, ya que range() tradicionalmente genera secuencias numéricas, no listas.

En lugar de usar range() directamente con una lista, lo más común es utilizar range(len(lista)) dentro del bucle for.

Esto nos permite acceder a cada elemento de la lista utilizando un índice numérico.

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
mi_lista = ["manzana", "banana", "pera"]
# Iterar sobre la lista usando el índice
for i in range(len(mi_lista)):
print(f"Elemento en la posición {i}: {mi_lista[i]}")
mi_lista = ["manzana", "banana", "pera"] # Iterar sobre la lista usando el índice for i in range(len(mi_lista)): print(f"Elemento en la posición {i}: {mi_lista[i]}")
mi_lista = ["manzana", "banana", "pera"]

# Iterar sobre la lista usando el índice
for i in range(len(mi_lista)):
    print(f"Elemento en la posición {i}: {mi_lista[i]}")
Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
Elemento en la posición 0: manzana
Elemento en la posición 1: banana
Elemento en la posición 2: pera
Elemento en la posición 0: manzana Elemento en la posición 1: banana Elemento en la posición 2: pera
Elemento en la posición 0: manzana
Elemento en la posición 1: banana
Elemento en la posición 2: pera

Los “slices” son una forma poderosa para extraer subconjuntos de elementos de una lista, creando nuevas listas a partir de las existentes.

Se utilizan mediante el siguiente formato: lista[inicio:fin:paso].


Componentes:

paso: Indica cuántos elementos saltarse entre cada inclusión en la sublista. Si se omite, se asume 1 (incluir cada elemento).

inicio: El índice donde comienza la sublista (incluye este índice). Si se omite, se asume como 0 (el primer elemento).

fin: El índice donde termina la sublista (NO incluye este índice). Si se omite, se asume como la longitud de la lista.

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
mi_lista = ["manzana", "banana", "naranja", "pera", "uva"]
# Extraer los dos primeros elementos:
print(mi_lista[0:2])
mi_lista = ["manzana", "banana", "naranja", "pera", "uva"] # Extraer los dos primeros elementos: print(mi_lista[0:2])
mi_lista = ["manzana", "banana", "naranja", "pera", "uva"]

# Extraer los dos primeros elementos:
print(mi_lista[0:2])
Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
['manzana', 'banana']
['manzana', 'banana']
['manzana', 'banana']
Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
mi_lista = ["manzana", "banana", "naranja", "pera", "uva"]
# Extraer desde el tercer elemento hasta el final:
print(mi_lista[2:])
mi_lista = ["manzana", "banana", "naranja", "pera", "uva"] # Extraer desde el tercer elemento hasta el final: print(mi_lista[2:])
mi_lista = ["manzana", "banana", "naranja", "pera", "uva"]

# Extraer desde el tercer elemento hasta el final:
print(mi_lista[2:])
Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
['naranja', 'pera', 'uva']
['naranja', 'pera', 'uva']
['naranja', 'pera', 'uva']
Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
mi_lista = ["manzana", "banana", "naranja", "pera", "uva"]
# Invirtiendo la lista:
print(mi_lista[::-1])
mi_lista = ["manzana", "banana", "naranja", "pera", "uva"] # Invirtiendo la lista: print(mi_lista[::-1])
mi_lista = ["manzana", "banana", "naranja", "pera", "uva"]

# Invirtiendo la lista:
print(mi_lista[::-1])
Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
['uva', 'pera', 'naranja', 'banana', 'manzana']
['uva', 'pera', 'naranja', 'banana', 'manzana']
['uva', 'pera', 'naranja', 'banana', 'manzana']

Recomendaciones:

Pasos negativos: Utilizar un valor negativo para pasos invierte el orden de la sublista.

Índice cero: Recordá que Python utiliza el índice cero para comenzar el conteo de los elementos en una lista.

Cuidado con los límites: El elemento final especificado por fin no se incluye en la sublista.



La instrucción break proporciona la posibilidad de salir de un bucle for (o while) inmediatamente al cumplirse una condición específica. Aunque ofrece control sobre la ejecución del ciclo, se recomienda evitar su uso ya que puede complicar la lectura y comprensión del código.

En lugar de utilizar break, es preferible considerar alternativas como el uso de bucles while, que ofrecen mayor flexibilidad para controlar la iteración según las condiciones.

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
suma = 0
for cont in range(15):
print(cont)
suma = suma + cont
if cont == 3:
break
print("La suma es:", suma)
suma = 0 for cont in range(15): print(cont) suma = suma + cont if cont == 3: break print("La suma es:", suma)
suma = 0

for cont in range(15):
    print(cont)
    suma = suma + cont
    if cont == 3:
        break

print("La suma es:", suma)
Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
0
1
2
3
La suma es: 6
0 1 2 3 La suma es: 6
0
1
2
3
La suma es: 6


El uso del bucle for en Python elimina la necesidad de implementar contadores explícitos, ya que la variable del ciclo asume esa función automáticamente. Esta característica simplifica significativamente la escritura de código, permitiendo expresar tareas iterativas con mayor concisión y legibilidad.

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
suma = 0
for cont in range(5):
num= int(input("Ingrese un número: "))
suma = suma + num
print('La suma es:',suma)
print('El promedio es:',suma/(cont+1))
suma = 0 for cont in range(5): num= int(input("Ingrese un número: ")) suma = suma + num print('La suma es:',suma) print('El promedio es:',suma/(cont+1))
suma = 0
for cont in range(5):
   num= int(input("Ingrese un número: "))
   suma = suma + num

print('La suma es:',suma)
print('El promedio es:',suma/(cont+1))  
Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
Ingrese un número: 3
Ingrese un número: 4
Ingrese un número: 12
Ingrese un número: 5
Ingrese un número: 6
La suma es: 30
El promedio es: 6.0
Ingrese un número: 3 Ingrese un número: 4 Ingrese un número: 12 Ingrese un número: 5 Ingrese un número: 6 La suma es: 30 El promedio es: 6.0
Ingrese un número: 3
Ingrese un número: 4
Ingrese un número: 12
Ingrese un número: 5
Ingrese un número: 6
La suma es: 30
El promedio es: 6.0


En Python, podemos simular procesos del mundo real, como la compra en un supermercado, utilizando estructuras de control iterativas. El bucle for nos permite repetir una acción varias veces, como registrar los importes de cada producto, para luego calcular el total final.

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
total = 0
for i in range(5):
importe = float(input("Ingrese el importe: "))
total = total + importe
print("El total de los importes ingresados es:" ,total)
total = 0 for i in range(5): importe = float(input("Ingrese el importe: ")) total = total + importe print("El total de los importes ingresados es:" ,total)
total = 0

for i in range(5):
    importe = float(input("Ingrese el importe: "))
    total = total + importe

print("El total de los importes ingresados es:" ,total)
Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
Ingrese el importe: 500
Ingrese el importe: 200
Ingrese el importe: 1200
Ingrese el importe: 3232
Ingrese el importe: 1000
El total de los importes ingresados es: 6132.0
Ingrese el importe: 500 Ingrese el importe: 200 Ingrese el importe: 1200 Ingrese el importe: 3232 Ingrese el importe: 1000 El total de los importes ingresados es: 6132.0
Ingrese el importe: 500
Ingrese el importe: 200
Ingrese el importe: 1200
Ingrese el importe: 3232
Ingrese el importe: 1000
El total de los importes ingresados es: 6132.0

TAREA PARA EL HOGAR

Suma de números naturales

Desarrolla una función en Python que calcule la suma de los números naturales desde 1 hasta un valor dado (n).

Este cálculo se conoce como la suma de los números naturales, y se define como la suma de todos los números enteros positivos desde 1 hasta n.

Por ejemplo, si n = 6, la función debe devolver 21 ya que 1 + 2 + 3 + 4 + 5 + 6 = 21.

La función deberá recibir como argumento un entero positivo n y devolver la suma de los números naturales hasta n.

TIPS:

Asegurar que la función solo acepte valores enteros positivos como entrada.

Utilizar range().