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

鈥淯n 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,
鈥楳aggie鈥 : 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 = {
鈥楢rroz鈥: 5000,
鈥楩rijol鈥: 2000,
鈥楥arne鈥: 5000,
鈥楶escado鈥: 6000,
鈥楢zucar鈥: 4500,
鈥楶astas鈥: 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 鈥淟os 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 鈥渇or鈥 en 鈥渂ucle 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 鈥減or鈥 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 鈥渘煤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

(鈥榤exico鈥, 10)
(鈥榗olombia鈥, 15)
(鈥榩uerto_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 鈥渇or pais in estudiantes: print(pais)鈥 贸 usar 鈥渇or 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+鈥榮topiteration鈥

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=[鈥榤anzana鈥,鈥榩era鈥,鈥榤ango鈥橾
iterador=iter(frutas)
next(iterador)

Muy Buena intro al for