Bucles for

10/31

Lectura

Los bucles, en diversos lenguajes de programación pueden ser definidos o indefinidos. Los bucles definidos preestablecen las condiciones de la iteración por adelantado. Por su parte, los bucles indefinidos establecen la condición en la que una iteración terminará. En este último tipo de bucles existe el riesgo de que el bucle se vuelva infinito (cuando la condición de suspensión nunca se cumple).

...

Regístrate o inicia sesión para leer el resto del contenido.

Aportes 303

Preguntas 7

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

Para los curiosos…

Yo he estado manejando ya otros lenguajes de programación en el pasado. Y recuerdo que cuando se quería inicializar un variable en JS, se podía hacer algo como esto…

var teclas =
{
    LEFT: 37,
    UP: 38,    
    RIGHT: 39,
    DOWN: 40
}; 

Sin embargo si en Python se inicializa el diccionario de manera similar…

codigo_area_paises = 
{
    "Colombia": 57,
    "Mexico": 52,
    "Estados Unidos": 1,
    "India": 91,
    "Espana": 34,
    "Reino Unido": 44
}

Produce en error de sintaxis, entonces el corchete debe ponerse al lado del igual así…

codigo_area_paises = {
    "Colombia": 57,
    "Mexico": 52,
    "Estados Unidos": 1,
    "India": 91,
    "Espana": 34,
    "Reino Unido": 44
}

Es algo muy curioso, pero deja una buena lección y es que aveces surgirán errores de la nada que tu no entiendes, sin embargo hay que tener en cuenta que todos los lenguajes son distintos y es preciso ir poco a poco acostumbrándonos a estas diferencias.

Aca les dejo es aporte de las formas de usar el For.

# escribe en un rango de 2 a 6

for x in range(2, 6):
  print(x)


#Imprime la lista completa

fruits = ["apple", "banana", "cherry", "Parchita", "Mango"]
for y in fruits:
  print(y)  


#break cuando llega a banana
 
  fruits = ["apple", "banana", "cherry"]
for x in fruits:
  print(x) 
  if x == "banana": 
    break

# break cuando llega a banana e imprime el sig en la lista

fruits = ["apple", "banana", "cherry"]
for x in fruits:
  if x == "banana":
    continue
  print(x)


# crea una secuencia (ini,Fin, Secuencia)

for x in range(0, 31, 5):
  print(x)


# Loop dentro de una Loop

adj = ["red", "big", "tasty"]
fruits = ["apple", "banana", "cherry"]

for x in adj:
  for y in fruits:
    print(x, y)  

# for loops cannot be empty, but if you for some reason have a for 
# loop with no content, put in the pass statement to avoid getting an error.

for x in [0, 1, 2]:
  pass```
#Bucles for
#Los bucles son usados para repetir una expressión en una colección de objectos

#En python esto ve expresa como
'''
for <variable> in <iterable>: #Para cada variable en el conjunto iterable
    <expresión> #Ejecuta la expresión.
'''

frutas = ['manzana', 'pera', 'mango']

for fruta in frutas: #Para cada fruta en el conjunto de frutas
    print(f'La fruta es {fruta}.') #Printea la fruta 'x'. x --> Nombre de la fruta


### Usando bucle for en diccionarios

estudiantes = { #diccionario estudiantes porque tiene llave
'mexico': 10, #Mexico es la llave 0, y el numero 10 es su valor
'colombia': 15, #Colombia es la llave 1 y el numero 15 es su valor
'puerto_rico': 4 #Puerto_rico es la llave 2 y el numero 4 es su valor.
}

for pais in estudiantes: #Este iter repite la expresion con cada llave o en este caso pais.
    print(pais) #Esta expressión imprime cada pais.
for pais in estudiantes.keys():#Este iter hace totalmente lo mismo que el anterior.
    print(pais)
for numero_de_estudiantes in estudiantes.values(): #Extrae cada valor del diccionario, el de la derecha a la llave, y repite la expresion con cada valor.
    print(numero_de_estudiantes) #numero_de_estudiantes vendria siendo cada valor en el diccionario estudiantes. Entonces, estariamos imprimiendo cada valor.
for pais, numero_de_estudiantes in estudiantes.items(): #Crea un tuple, la llave y su valor. Los asigna a dos variables, pais y numero_de_estudiantes y los usa en la expresion. Y se repite con cada llave y valor.
    print(f'En {pais} hay {numero_de_estudiantes} estudiantes activos.') #Usar la llave y el valor en la forma lejible de imprimir.

#Reto Personal
#Persona, comida favorita
diccionario = {
    'Rubi' : 'los Chitos',
    'Ismael' : 'la Pizza',
    'Perla' : 'el Sancocho',
    'Migue' : 'el Arroz con Pollo',
    'Enrique' : 'el Arroz con Berenjena'
    }
#Imprimir una frase que incluya la llave y el valor
for nombre, comida in diccionario.items():
    if comida[-1] == 's':
        singular_o_plural = 'gustan'
    else:
        singular_o_plural = 'gusta'
    print(f'A {nombre} le {singular_o_plural} {comida}.')```

Creo que el nivel de este documento está algo alto para los que van iniciando en esto

Aqui mis notas

cadena      = 'cadena'
lista       = ['uno', 'dos', 'tres']
tupla       = ('uno', 'dos', 'tres')
conjunto    = {'uno', 'dos', 'tres'}
diccionario = {'uno': 1, 'dos': 2, 'tres': 3}


print('cadena:.........', cadena,      type(cadena))
print('lista:..........', lista,       type(lista))
print('tupla:..........', lista,       type(tupla))
print('conjunto:.......', conjunto,    type(conjunto))
print('diccionario:....', diccionario, type(diccionario))
print(' ')

iterador_cadena = iter(cadena)
print('next iterador en cadena: ')
print(next(iterador_cadena))
print(next(iterador_cadena))
print(next(iterador_cadena))
print(next(iterador_cadena))
print(next(iterador_cadena))
print(next(iterador_cadena))
print('')

iterador_lista = iter(lista)
print('next iterador en lista: ')
print(next(iterador_lista))
print(next(iterador_lista))
print(next(iterador_lista))
print('')

iterador_tupla = iter(tupla)
print('next iterador en tupla: ')
print(next(iterador_tupla))
print(next(iterador_tupla))
print(next(iterador_tupla))
print('')

iterador_conjunto = iter(conjunto)
print('next iterador en conjunto: ')
print(next(iterador_conjunto))
print(next(iterador_conjunto))
print(next(iterador_conjunto))
print('')

iterador_diccionario = iter(diccionario)
print('next iterador en diccionario: ')
print(next(iterador_diccionario))
print(next(iterador_diccionario))
print(next(iterador_diccionario))
print('')


print('for en cadena')
for letra in cadena:
    print(letra)
print(' ')

print('for en lista')
for item_lista in lista:
    print(item_lista)
print(' ')     

print('for en tupla')
for item_tupla in tupla:
    print(item_tupla)
print(' ')    

print('for en conjunto')
for item_conjunto in conjunto:
    print(item_conjunto)
print(' ')    

print('for en diccionario')
for item_diccionario in diccionario:
    print(item_diccionario)
print(' ')

print('for en diccionario.items()')
for item_diccionario_item in diccionario.items():
    print(item_diccionario_item)
print(' ')

print('for en diccionario.keys()')
for item_diccionario_key in diccionario.keys():
    print(item_diccionario_key)
print(' ')

print('for en diccionario.values()')
for item_diccionario_value in diccionario.values():
    print(item_diccionario_value)
print(' ')

Les dejo mis notas tomadas de forma digital =)
.

Cuando leí esta clase tuve ciertas dudas, las resolví yendo a los libros. Para no hacerla larga, estudien lo que son las tuplas, listas y diccionarios. Y desde luego lean relativo al for. Ya que le den una revisada se regresan acá y le entenderán. Les comparto: https://www.iaa.csic.es/python/curso-python-para-principiantes.pdf
Saludos.

Diccionario (╯°□°)╯︵ ┻━┻

estudiantes = {
    'mexico': 10,
    'colombia': 15,
    'puerto_rico': 4,
}

# Obtenemos solos nombres de la palabra clave
for pais in estudiantes:
    print(pais)
# Obtenemos lo mismo que el anterior
for keys in estudiantes.keys():
    print(keys)
# Obtenemos los valores de la palabra clave creada
for numero_de_estudiantes in estudiantes.values():
    print(numero_de_estudiantes)
# (╯°□°)╯︵ ┻━┻) obtenemos la palabra clave con su valor
for pais, numero_de_estudiantes in estudiantes.items():
    print(pais, numero_de_estudiantes)

# "break" termina el bucle y permite continuar con el resto del flujo de nuestro programa.

# "continue" termina la iteración en curso y continua con el siguiente ciclo de iteración.
# break EJ :
for pais, numero_de_estudiantes in estudiantes.items():
    print(pais, numero_de_estudiantes)
    if pais == 'mexico':
        break

for keys in estudiantes.keys():
    print('Continue: ', keys)
    for numero_de_estudiantes in estudiantes.values():
        if numero_de_estudiantes == 10:
            print(numero_de_estudiantes)
            continue

Hola amigos, no se si alguien ya lo haya comentado antes, pero encontré un detalle a tomar en cuenta para evitar posibles bugs o errores inepserados.

El detalle es el siguiente, si en tu programa defines a uno de tus objetos como un iterable entonces solo podrás iterar sobre el una sola vez, ya sea usando la función next o usando el bucle for, si deseas volver a iterar sobre el ya no sera posible, en el código 1 siguiente muestro lo que trato de decir:

Codigo 1:

it2 = iter("segunda")

for b in it2:
    print(b)
  
print("......")

for b in it2:
    print(b)

Output 1:

s
e
g
u
n
d
a
......

Como ven ya no volvió a iterar sobre el segundo loop for después de los puntos de separación. Sin embargo, si vemos el siguiente código con ligeras modificaciones:

Codigo 2

iterador2 = "segunda"

for b in iterador2:
    print(b)
  
print("......")

for b in iterador2:
    print(b)

Output 2

s
e
g
u
n
d
a
......
s
e
g
u
n
d
a

como se ve aquí, sí vuelve a iterar sin problema sobre el mismo objeto. La única diferencia es que en el código 1 definí como iterable a la cadena con la función iter y en el codigo 2 no lo hice, solo le asigne un nombre de variable a la cadena correspondiente. Eso es algo muy curioso.

Y me surge una pregunta: ¿Hay manera de reinicializar el contador de una iterable en caso de llegar a ser necesario? es decir, que no pase lo que me pasa en el código 1. Y en caso de que si fuera posible, ¿esto se considera una buena o mala practica?

Saludos comunidad.

¿Qué es un Diccionario de datos?
Un Diccionario es una estructura de datos y un tipo de dato en Python con características especiales que nos permite almacenar cualquier tipo de valor como enteros, cadenas, listas e incluso otras funciones. Estos diccionarios nos permiten además identificar cada elemento por una clave (Key).
.

  • Para definir un diccionario, se encierra el listado de valores entre llaves. Las parejas de clave y valor se separan con comas, y la clave y el valor se separan con dos puntos.
diccionario = {'nombre' : 'Carlos', 'edad' : 22, 'cursos': ['Python','Django','JavaScript'] }
  • Podemos acceder al elemento de un Diccionario mediante la clave de este elemento, como veremos a continuación:
print(diccionario['nombre'])//-->Carlos
print(diccionario['edad'])// -->22
print(diccionario['cursos'])// -->['Python','Django','JavaScript']
print(diccionario['cursos'][0])// -->Python
print(diccionario['cursos'][1])// -->Django

Referencias y más:
https://devcode.la/tutoriales/diccionarios-en-python/

no entendi absolutamente nada

Esta clase deberia estar grabada

🐱‍🚀

# Iteracion con objetos

frutas = ['Naranja', 'Pera', 'Manzana', 'Frutilla', 'Piña', 'Limon', 'Cereza', 'Melon', 'Chirimolla', 'Durazno']
frutasVacias = []
# For nombre in objeto:
#   /*code*/

# Hipotesis
# Cuando ponemos un else en el ciclo definido del for esto nos indica que cuando termine o no encuentre nada por recorrer este se ejecutara ^_^

# Ejemplo cuando no tiene nada
for fruta in frutasVacias:
    print(fruta)
else:
    print('Tengo vida cuando termina el recorrido completo o cuando no tiene nada\n')
# Ejemplo cuando termina con el recorrido de los datos que pueda poseer
for fruta in frutas :
    print(fruta)
else:
    print('Tengo vida cuando termina el recorrido completo o cuando no tiene nada\n')

# Iteracion cuando desconocemos el tipo de recorrido por el cual va
# creamos un iterador para ese tipo de datos con iter(dato)
# Cada vez que queramos ver el siguiente dato usaremos el next(iterador) el cual nos dara el valor siguiente

# 1 Forma
iterador = iter(frutas)
cantidadDeDatos = len(frutas)

# for i in range(0, cantidadDeDatos):
#     print(next(iterador))

# 2 Forma
# Si intercambiamos el iter(frutas) por el iterador que creamos anteriormente luego no podremos ver los datos que contiene este ya que este lo transforma para obtener la cantidad de datos que contiene 🤯!!
# por esto debemos nosotros crear nuevamente el iterador a quien queremos crear para que de esa forma transforme ello y no afecte el dato por el cual nosotros vamos a imprimir los datos o usarlos
cantidadDeDatosDelIterador = sum(1 for _ in iter(frutas))

for i in range(0, cantidadDeDatosDelIterador):
    print(next(iterador))

# NT: Cuando recorremos un iterador no podemos volver a recorrerlo por ello solo puedas hacerlo con la forma que tu desees```

(Opinión personal)
Estas lecturas son lo peor de Platzi, nunca las leo, no me gusta leer y por eso busco cursos en formato vídeo. Si quisiera leer me voy a la documentación de tal o cual tecnología y no pago la suscripción. No sé si a alguien más le pasa, pero para mi el valor de Platzi es que me entreguen todo el conocimiento en bandeja y no es de flojo, es un tema de tiempo y de gustos, ya hice mi carrera profesional, ya curse mi posgrado, ya sé cómo investigar, ¡ya leí más que suficiente! y aun así lo debo seguir haciendo día a día.

Ahora, cuando quiero aprender cosas nuevas idealmente busco que sea de forma presencial con un profesor (para mi es la mejor manera de aprender, incomparable a otra, puedo preguntar lo que necesito y si entiendo algo rápidamente, podemos avanzar) o que sea en vídeo, de no ser posible, uso el audio, pero la lectura esta en la última de mis prioridades. Y no, no es que no lea, de hecho leo bastante. Es sólo que no me gusta y lo evito siempre que puedo.

¿Alguien que me entienda o comparta mi opinión?

Puse lo mejor de mi para entender el documento, y aunque me quedo claro, quise reforzar un poco y encontré este video, que literal, se entiende a la perfección:
https://www.youtube.com/watch?v=mRI8C2ZhDkg&ab_channel=ProgramaciónATS

Definitivamente debería encontrarse la explicación en vídeo, fue necesario recurrir a recursos externos para poder interpretar el contenido.

Aqui mi contribucion usando metodos basicos que se aplican a strings para darles unppoco de formato.

#!/usr/bin/env python3

contador = 0

while contador <= 10:
    print(contador, end=' ')
    contador += 1

print('\n\n')

contador_externo = 0
contador_interno = 0

while contador_externo < 5:
    while contador_interno < 6:
        print(contador_externo, contador_interno)
        contador_interno += 1
        if contador_interno >= 3:
            break
    
    contador_externo += 1
    contador_interno = 0 # resetear este 


frutas = ['manzana', 'pera', 'mango']

iterator = iter(frutas)
print(next(iterator))
print(next(iterator))
print(next(iterator))

print("Usando For loop".center(25,'-'))
for fruta in frutas:
    print(f"\t-{fruta}")

estudaintes = {
    'mexico': 10,
    'colombia': 15,
    'puerto rico': 4
}

print("Estudiantes".center(15, '-'))
for pais in estudaintes:
    print(pais.title())

print('\n')

for pais in estudaintes.keys():
    print(pais.title())

print("\n\n")
for numero_de_estudiantes in estudaintes.values():
    print(numero_de_estudiantes)

print("\n\n")
print("pais".title().rjust(11), "estudiantes".title().rjust(13))
for pais, numero_de_estudiantes in estudaintes.items():
    print(f"{pais.title().rjust(11)} : {numero_de_estudiantes}")```

Después de un rato de estar experimentando con el código (yo desconocía totalmente los iterators) me surgió la duda si se podría sumar los values y después de varios minutos llegué a esto.

for numero_de_estudiantes in estudiantes.values():
print (numero_de_estudiantes)
total_estu = numero_de_estudiantes + total_estu
print ('el numero total de estudiantes en los paises es de: ', total_estu)

No sé si mi aportación sirva de algo, pero me motiva que lo aprendí yo solito jaja

“Un Diccionario es una estructura de datos y un tipo de dato en Python con características especiales que nos permite almacenar cualquier tipo de valor como enteros, cadenas, listas e incluso otras funciones. Estos diccionarios nos permiten además identificar cada elemento por una clave (Key)”.
https://devcode.la/tutoriales/diccionarios-en-python/

me hubiera gustado ver un ejemplo en vídeo, a veces con lectura me pierdo, esta es una de esas veces, pero excelente información

Excelente clase, pero al ser el remate de los bucles, debió ser una clase grabada

Anexo el producto de una larga lectura y un arduo entendimiento. Creo que no soy el único cuando pienso que esta lección fue difícil completarla sin el contenido audiovisual. sin embargo, para colaborar con los similares a mí les doy el tip que tomen en cuenta lo que se muestra al utilizar “.keys():”, “.values():” y “.items():” cada uno de éstas, toma y muestra algo distinto de los datos insertados al principio.

algo de práctica en cuanto a los bucles con FOR

<>>> estudiantes = {
...     'mexico' : 10,
...     'Bolivia' : 15,
...     'Chile' : 4,
... }
>>> for pais in estudiantes: print (pais)
...
mexico
Bolivia
Chile

>>> for numero_de_estudiantes in estudiantes.values(): print(numero_de_estudiantes)
...
10
15
4
>>>
>>> for pais, numero_de_estudiantes in estudiantes.items(): print (numero_de_estudiantes, pais)
...
10 mexico
15 Bolivia
4 Chile>

Creo que nunca antes había leído a alguien que explicara de forma tan clara el ciclo.
Gracias!

Me quería saltar este apartado pero decidí darle una pequeña leída y aprendí sobre iterator, no sabía que existía algo así en python.

Esta clase fue difícil sin el contenido visual.

Muy bueno el articulo pero esto tendría que ser un video

Un pequeño resumen de lo que se vio aquí

me costo mucho mas entenderlo, pero practicando un poco pude captarlo, este es el codigo que use para interiorizarlo:

<
cadena = 'hola platzi, esto es una cadena'
lista = ['hola', 'platzi', 'esto', 'es', 'una', 'lista']
tupla = (1,2,3,4,5,6,7,8)
conjunto = {'hola platzi','esto es ','un','conjunto'}
diccionario = ({'hola': 1, 'platzi': 2, 'esto': 3, 'es': 4, 'un': 5, 'diccionario': 6})

print(type(diccionario))
for object1 in diccionario:
    print(object1)
print(type(lista))
for object1 in lista:
    print(object1
)>

Muy interesante esta construcción del Bucle For
Para alguien que recién empieza en Python y en general en la programación es un poco complejo estos conceptos.
Espero que con la practica y el tiempo esto mejore y pueda entender exactamente.

Logre hacer las tablas de multiplicar agregando solo 2 líneas de código.

ext_count = 1
int_count = 1

while ext_count < 13:
    while int_count < 13:
        result = ext_count * int_count
        print(ext_count, int_count, result)
        int_count += 1
          
    ext_count += 1
    int_count = 0



Gracias por la explication del del ciclo definido for, ahora se como hacerlo. Solo falta aprender para que situations es util aunque se me ocuren algunas ciertamente deben de haber muchas formas de darle uso

No conocía el método iter, es muy interesante y puede ayudar bastante

MI RESUMEN SOBRE FOR:

Usaré este código de ejemplo:

def run():
    set = ["1", "2", "3", "4", "5"]   # Nuestro objeto iterable
    for storage in set:
        print(f'number {storage}')


if __name__ == '__main__':
    run()

Esto es lo que sucede al querer ejecutar un ciclio for:

  1. Una función interna del ciclo llamada iter() se encargará de verificar si nuestro objeto realmente es iterable.

    Si NO es iterable saltará un error llamado TypeError y ahí de tendrá el proceso
    Si SI es iterable…

  2. Se ejecutará una segunda función interna del ciclo for llamada next() (la cual es el iterador)
    OJO: Lo que hará next() será ejecutarse sobre cada uno de los elementos que están dentro del objeto iterable (que en este caso son números) y cada una de estas ejecuciones representan una vuelta del ciclo for.

  3. Cada ejecución de next() produce un output (la salida de cada número) que será almacenado directamente en la variable que itera (variable storage).

<code>
```proyectos_construidos = {
    'Vivieda': 1,
    'Edificio': 4,
    'Condominio': 2
}
print('descubre cuantos y que proyectos has contruido este año')
nombre = input('¿Cual es tu nombre?:')
interes = int(input('sobre que quieres saber selecciona  1. es tipo de proyecto 2. es cantidad de proyectos y 3. es tipo y cantidad :'))

if interes == 1:
    for proyecto in proyectos_construidos.keys():
        print(proyecto)

elif interes == 2:
    for proyecto in proyectos_construidos.values():
        print(proyecto)

elif interes == 3:
    for proyecto in proyectos_construidos.items():
        print(proyecto)

else:
    print('error 404')

print(f'muchas gracias por confiar en este programa', (nombre))

les quería compartir parte de la solución de un código que realice para un reto de una pagina llamada codewars, en donde cuenta el numero de de veces que se repite una palabra. me pareció pertinente compartirlo ya que tiene un ejemplo de un bucle for.

from collections import Counter

def duplicate_conunt(entry_text):
    text = entry_text
    text = text.lower()# se cambian las letras todas a minusculas
    text_list = list(text)
    count = Counter()
    list_of_count = list()
    for letter in text_list:
        count[letter] +=1 # suma uno cuando encuentra un repetido
    
    print(count)

def run():
    entry_text = input('escriba el texto que desea revisar: ')
    result = duplicate_conunt(entry_text)
    print(result)


if __name__ == '__main__':
    run()```

Conceptos clave:
iterar: llevar a cabo una accion de manera repetitiva.
Iterable: una secuencia, serie o conjunto de objetos.
Iterador: un objeto que regresa de manera iterativa y continua los elementos del iterable.

Cuando usamos un bucle for el interprete de Python crea un iterador a partir de un iterable y llama la funcion next en cada iteracion.

Traté de hacer un resumen de los loop for con diccionarios que espero y les sirva.
Por favor, lean todas las instrucciones en los #
.
Aquí una foto de como se ve, los invito a correr el código.
.

.

# Los diccionariones funcionan con formato ➡ "KEY":VALUE
# El diccionario se llama 'students'
# Los nombres de los paises estan del lado izquierdo, entonces son KEY
# El numero de estudiantes por pais está del lado derecho, entonces son VALUE

students = {
  "Rumania" : "15",
  "Canada" : "1",
  "Singapur" : "29",
  "Mexico" : "4",
  }

# OJO! 🔺  Mucha atencion en   students.items():
#   .items   me está dando libertad de usar tanto la KEY como el VALUE 
# que existen en el diccionario 'students' 
# Si no lo pongo, no jalaria todo el show de a continuacion

# Ahora si, vamos a leerlo juntos...
# PARA la variable key (tu ponle el nombre que quieras realmente. Por ejemplo: pais)
# y para la variable value (igual, la variable se puede llamar numeroDeEstudiantes o otra cosa)
# Que se encuentran en el rango del 0 al 3. Porque hay 4 valores dentro del diccionario students
# O tambien se lee, 'Que se encuentran en el rango de students'
# Con el atributo  .items():   para que lea las 2 variables que pusimos en el 'for'

# Corre lo siguiente 🛴

for key, value in students.items():
    if value == "1": # Si el valor, osea el numero es Igualito a 1. Significa que es singular
        is_or_are = 'is'
        s = ""
    else: # Si el valor es otra cosa de uno, entonces el plural el rollo.
        is_or_are = 'are'
        s = "s"

    print(f'In {key} there {is_or_are} {value} student{s}.')
    #Imprime texto ordenado, para eso la  f
    #En la variable {key} estan los paises
    #En la variable {is_or_are} estan si hay 1 o mas alumnos, por eso el IS o el espacio vacio
    # Si hay mas de 1 estudiante entonces se le agrega ARE y la S al final de studentS.

    #Recuerda que el PRINT va dentro del FOR pero fuera del else.
  

.
¿Mejor, peor?

Bueno a manera de apreciacion personal recominedo usar la plataforma W3School.
Tiene muchos ejercicios y se comprende fácilmente, además de tener muchos temas variados, me sirvio mucho cuando aprendí 😄

Es complicado entender la función (qué es lo que hacen) de los elementos del diccionario: “.keys”, “.values” y “.items”

Podría haber leido un libro que me explique lo mismo sin embargo estoy en platzi donde las clases son grabadas.

Este contenido debería ser grabado, porque habemos personas que no somos programadores, estamos empezando y nos cuesta muchisimo absorver este contenido con una lectura.

estudiantes = {'mexico':10,
                'colombia':15,
                    'puerto_rico':4}

for pais in estudiantes:
    print(pais)

for pais in estudiantes.keys():
    print(pais)

for n_de_estudiantes in estudiantes.values():
    print(n_de_estudiantes)

for pais, n_de_estudiantes in estudiantes.items():
    print(pais,n_de_estudiantes)


for pais, n_de_estudiantes in estudiantes.items():
    if pais=='mexico' and n_de_estudiantes==10:
        continue
    print(pais,n_de_estudiantes)

creo que esta clase debe que estar explicado en un video

Un pequeño resumen 🤪
Bucles for

  • Los bucles pueden ser indefinidos, con el keyword while **o definidos, con el keyword for. **
  • En Python 🐍 podemos iterar sobre una colección de objetos.
  • Un ejemplo de un iterable es una lista, y la variable que se toma en cada iteración seria un elemento de la lista.
  • Todos los objetos iterables al ponerlos como argumentos de la función iter() regresan como un iterator.
  • Un iterator regresa en orden los valores asociados al iterable, con la función next(). Cuando ya no quedan mas, se tiene el error StopIteration.
  • Puedes modificar el comportamiento del for:
    • break para terminar el bucle.
    • continue para terminar la iteración actual.
#Forma general de un for
for <variable> in <iterable>:
	<expresión>

#Iterables
lista = ['manzana', 'pera', 'mango']
iterador = iter(lista)
print(f'Primer elemento {next(iterador)}')

#Ejemplo 
for fruta in lista:
	print(fruta)
  • Para iterar en un diccionario:
estudiantes = {'mexico': 10, 'colombia': 15, 'puerto_rico': 4}

for pais in estudiantes: #Iterar sobre las llaves
    ...
for pais in estudiantes.keys(): #Iterar sobre las llaves explicitamente (xD)
    ...
for numero_de_estudiantes in estudiantes.values(): #Iterar sobre los valores
    ...
for pais, numero_de_estudiantes in estudiantes.items(): #Iterar sobre las tuplas (llave, valor)
    ...
<h3>For en código</h3>
rangos = {
    'Noob': 1,
    'Decent': 5,
    'Semi-Senior': 10,
    'Senior': 30,
    'Admin': 100
}

#.keys(): Ver el nombre de las llaves
for rango in rangos.keys():
    print(rango)

#.values(): Ver el valor de las llaves
for nivel in rangos.values():
    print(nivel)

#.items(): Ver el nombre y el valor de las llaves
for rango, nivel in rangos.items():
    print(rango + ": " + str(nivel))

esperaba que esta clase sea explicado mediante un video! xD

Efectivamente la función iter te arroja qué tipo de iterador estás usando

>>> iter('cadena')
<str_iterator object at 0x0000000929BB2F70>
>>> iter(['a','b','c','d'])
<list_iterator object at 0x0000000929BF0760>
>>> iter(('a','b','c','d'))
<tuple_iterator object at 0x0000000929BCA280>
>>> iter({'a','b','c','d'})
<set_iterator object at 0x0000000929D73900>
>>>iter({'a' : 1,'b': 2,'c' : 3,'d': 4})
<dict_keyiterator object at 0x0000000929D724F0>

Cuando usas otro tipo de información te arroja el TypeError, que supongo que indica que es un error por el tipo de iterador que estás intentando usar

>>> iter(3232)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'int' object is not iterable
>>> iter(3.23)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'float' object is not iterable
>>> iter(True)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'bool' object is not iterable```
    for keys in dictionary.keys():
        print(keys)

    for values in dictionary.values():
        print(values)

    for keys, values in dictionary.items():
        print(keys, values)

Output:

item1
item2
item3
item4
1
2
3
4
item1 1
item2 2
item3 3
item4 4

Pienso que este tema hubiera quedado mejor explicado a manera de video, igual así me esforcé para entenderle y ya lo tengo más claro.

Muy bien explicado todo

Excelente explicación, me parece importante entender el porque de las cosas, en esta caso el bucle for, y como este funciona por dentro.

Para los diccionarios en python es posible distribuir el conjunto de una lista ya sea de strings, enteros etc… entre ciertos valores específicos (entre keys). Aquí les traigo este código para explicarlo mejor:

variable = dict(zip('key',['valor1', 'valor2', 'valor3]))

for diccionario in variable:
	print(variable)

Debe imprimir lo siguiente:

{'k': 'valor1', 'e': 'valor2', 'y': 'valor3'}

Es de importante que el valor que le des al key posea la misma cantidad de caracteres/numeros como de values.

no conocia el comando iter() y el comando next()
ademas de todos los accesos en los diccionarios, y no recordaba la funcionalidad de continue

que bien

Python es genial!

Muy buena informacion, estoy tomando el CURSO DE PYTHON pero decidi pararlo para comenzar este que te explica mas a fondo ciertas cosas que el otro curso no te explica, y sirve como estudio.

Debo admitir que me costó un poco comprender este tema, pero gracias a los aportes de la comunidad lo he logrado, me esta encantando este curso hasta ahora y me alegra que todos comenten y ayuden.

Al finalizar este modulo, lo que me queda es lo siguiente:
Cada vez que esté aprendiendo un lenguaje nuevo debo identificar las siguientes cosas:

  • Nivel (Alto o Bajo), Dominio, Compilado o Interpretado.
    Ademas, todos los lenguajes tiene elementos sintácticos, como son:
  • objetos: variables, etc
  • operadores: aritméticos, de comparación, otros
  • statements o enunciados: se forman bajo una combinación específica de operadores y objetos, regresan valores
  • ramificaciones: Están compuestos por al menos un condicional y una expresión de comparación
  • bucles: compuesto por iterables y expresiones

intente hacer lo siguiente:
Los_Simpson={
'Homero ’ : 47,
'Marge ’ : 42 ,
'Lisa ’ : 9,
'Bart ’ : 7,
‘Maggie’ : 2,
}
y quiero imprimir el personaje y su edad
hice esto:

for personajes, edades in Los_Simpson.items():
print(personajes, Los_Simpson.values())
la salida es:
Homero dict_values([47,42,9,7,2])
Marge dict_values([47,42,9,7,2])
Lisa dict_values([47,42,9,7,2])
Bart dict_values([47,42,9,7,2])
Maggie dict_values([47,42,9,7,2])

Alguien sabe cómo podría hacerlo de modo que solo me de la edad de cada uno de los personajes. Alguna Luz?. Gracias

Me falta mucho por aprender, es mucho tema.
Me hubiera gustado mas si hubiera hecho una clase. 😃

Al menos de mi parte y creo la mayoría esta aquí por el contenido audiovisual, y bueno si, no todo es eso, pero para eso esta el apartado del platzi blog. Así me parece súper pésimo que pongan estas lecturas, digo, para eso esta wikipedia y es gratis.

lista_precios = {
‘Arroz’: 5000,
‘Frijol’: 2000,
‘Carne’: 5000,
‘Pescado’: 6000,
‘Azucar’: 4500,
‘Pastas’: 3600,
}
for alimentos in lista_precios.values():
if alimentos > 4000:
print(alimentos)

#bucle for

print('Ingrese 3 juegos de los mas vendidos de este año \n')

video_juegos = {
    'The last of us': int(input('Ingrese la cantidad de ventas de the last of us: ')),
    'God of War': int(input('Ingrese la cantidad de ventas de God of War: ')),
    'Sekiro': int(input('Ingrese la cantidad de ventas de Sekiro: '))
}

for juego, cantidad in video_juegos.items() :
    print(juego, cantidad)

Diferencia entre break y continue:

El break corta el ciclo y NO continua:

for pais, numero_de_estudiantes in estudiantes.items():
    print(f'- En {pais} hay {numero_de_estudiantes} estudiantes.')
    if numero_de_estudiantes == 15:
        break
    print('despues del if')

Output:

# primer ciclo
- En mexico hay 10 estudiantes.
despues del if

# segundo ciclo
- En colombia hay 15 estudiantes.
# corte (break)

El continue termina la iteración en curso y continua con el siguiente ciclo

for pais, numero_de_estudiantes in estudiantes.items():
    print(f'- En {pais} hay {numero_de_estudiantes} estudiantes.')
    if numero_de_estudiantes == 15:
        continue
    print('despues del if')

Output:

# primer ciclo
- En mexico hay 10 estudiantes.
despues del if

# segundo ciclo
- En colombia hay 15 estudiantes.

# continua al tercer ciclo sin pasar por el ultimo print()
- En puerto_rico hay 4 estudiantes.

# luego termina y pasa por el ultimo print finalizando el bucle
despues del if```

porque esta clase no esta grabada?

hola = {1:87, 2:54, 3:98}

for i in hola:
    print(i)

print()

for i in hola.keys():
    print(i)

print()

for i in hola.values():
    print(i)

print()

for i in hola.items():
    print (i)

#####################
####output_console#####
#####################

1
2
3

1
2
3

87
54
98

(1, 87)
(2, 54)
(3, 98)

Tambien se puede utilizar el bucle for para generar listas o tuplas de la siguiente manera:

este codigo generaria la siguiente lista :

[0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20]

Creo que la clave esta en que “Los bucles definidos preestablecen las condiciones de la iteración por adelantado.”

Mi opinión en el debate sobre que esta clase debería (o no) ser un vídeo, al final se debe poner la misma atención para entender los conceptos. Aunque sí extrañe ver la consola de David, las aportaciones de los compañeros ayudaron mucho.

Creo que la dificultad de la lectura es más un efecto psicológico. Mi primera idea al verla fue dejar el curso por completo. Pero sin duda es algo mental. Sería increíble saber la postura de Platzi ¿Cuál es su criterio para elegir que lección es un vídeo y que lección es una lectura?

Yo tengo conocimientos en programación y no fue muy sencillo entender esta clase. Pienso que tal vez un GIF hubiese ayudado o un pequeño video.

en forma practica se entiende mejor

Ya llevó años programando en python y no conocía la función Iterators, muy padre el curso.

Diccionarios y matriz en el ejemplo.

estudiantes = {
    'mexico': 10,
    'colombia': 15,
    'puerto_rico': 4,
}

for pais in estudiantes:
    print(pais)

for pais in estudiantes.keys():
    print(pais)

for numero_de_estudiantes in estudiantes.values():
    print(numero_de_estudiantes)

for pais, numero_de_estudiantes in estudiantes.items():
    print(pais,numero_de_estudiantes)

matriz=[[1,2,3],[4,5,6],[7,8,9]]
for fila in matriz:
    for elemento in fila:
        print(elemento)

Excelente explicación, ¡Muchas gracias!

![](

Se puede abordar el bucle for de la misma manera que el bucle while. Como probablemente hubiera esperado, el componente “for” en “bucle for” se refiere a algo que hace un cierto número de veces.

Si tiene todo lo anterior en mente, puede definir fácilmente el bucle for de la siguiente manera:

Un bucle for es un concepto de programación que, cuando se implementa, ejecuta un fragmento de código una y otra vez “por” un cierto número de veces, según una secuencia.

En contraste con el ciclo while, no hay ninguna condición involucrada de forma activa, simplemente ejecuta un fragmento de código repetidamente varias veces. En otras palabras, mientras el bucle while sigue ejecutando el bloque de código contenido en él solo hasta que se cumple la condición True, el bucle for ejecuta el código contenido en él solo por un número específico de veces. Este “número de veces” está determinado por una secuencia o una lista ordenada de cosas.

uso For

Recomiendo mucho repasar de nuevo la clase de for en el curso basico de python.

Sabiendo un poco del tema de programar, este curso puede sustituir el curso básico de Python jeje

Algo curioso que encontré indagando en los snippets de Python para VSCode es que existe un for/else, no sé exactamente que hace, pero intuyo que en caso de que no se cumpla ningún ciclo del for procederá a ejecutar el esle 🤔

for target_list in expression_list:
        pass
else:
        pass

AHORA TRABAJAREMOS CON DICCIONARIOS!
mexico
colombia
puerto_rico

mexico
colombia
puerto_rico

10
15
4

(‘mexico’, 10)
(‘colombia’, 15)
(‘puerto_rico’, 4)

print('AHORA TRABAJAREMOS CON DICCIONARIOS!')
estudiantes = {'mexico':10,'colombia':15,'puerto_rico':4}#El diccionario es un iterable o RECORRIBLE
#Por lo tanto vamos a recorrerlo con un for a continuación
for pais in estudiantes:
    print(pais)
print('\n')

for pais in estudiantes.keys():#Entiendo, según los apuntes de Platzi, esto hace lo mismo anterior
                               #porque recorre las llaves del diccionario (KEYS!)
    print(pais)
print('\n')

for pais in estudiantes.values():#Aquí ya cambia, recorre es los valores del diccionario
    print(pais)
print('\n')

for pais in estudiantes.items():#Aquí recorre LOS ÍTEMS DEL DICCIONARIO, o sea TODA SU INFORMACIÓN
    print(pais)
print('\n')```

wow que manera de explicar algo que consideraba complejo!! buen trabajo 😄

De manera muy personal, que gran manera de explicar Daniel, has llevado mi capacidad de entender y pensamiento computacional a otro plano, y pensar que toda la información que tu explicas, nos das a entender que debemos reforzar el estudio y trabajo independiente, hasta el momento tus clases son de 15 minutos pero la dedicación personal es de 1 hora o alguito menos por clase, especialmente en todo el modulo 2.

Gracias!

Excelente artículo. Llevaba un tiempo programando en Python y nunca había tenido esta explicación de su funcionamiento interno! 😃

muy buen material, se entiende que pasa detras

Buena información no estaba enterado de los detalles tras los ciclos

Excelente, entonces los iter explica basicamente como funciona internamente el bucle for 😅😵🥴

Muy buena información, es interesante como funciona por dentro los ciclos.

¿Cuál es la diferencia entre usar “for pais in estudiantes: print(pais)” ó usar “for pais in estudiantes.keys(): print(pais)”?
Es que ambos responden con la misma lista de países y no entiendo cuál es la diferencia entre usar el uno o el otro.
¡Gracias!

Excelente Explicación, deja claro el trasfondo de la lógica del bucle for. Para quienes inician, como vayan practicando y lo vayan entendiendo mejor, vuelvan a leer el texto, todo empezará a tener mucho más sentido.

  1. BUCLES DEFINIDOS preestablecen las condicinales de iteración al inicio. eg.FOR
  2. BUCLES INDEFINIDOS Establecen la condición en la que la iteración terminara (aqui se forman los bucles). eg WHILE
  3. I++ =(PYTHON) i+=1
  4. <iterable> colección de objetos, obj que se usa en un BUCLE DEFINIDO
  5. <variable> elemento que se expone en cada iteración
  6. FOR= iter+next+‘stopiteration’

Gracias por la información, me quedo claro algunos conceptos que tenía en duda.

Excelente, entendiendo como funciona Python internamente.

Realmente esta clase si que fue una explicacion neta del for, nunca lo habia visto de esta manera

recuerdo que gracias a los ciclos for hice un traductor de codigo morse a texto y viceversa, fue de mis primeros programas 😃

python si que lo reduce todo, en comparaciòn a java y otros lenguajes de programaciòn

Buen día.
Probé un simple código con NEXT, pero no funciona.
¿Alguno puede encontrar el error? Gracias:

frutas=[‘manzana’,‘pera’,‘mango’]
iterador=iter(frutas)
next(iterador)

Muy Buena intro al for