En estos comienzos de mi camino aprendiendo Python uno de los conceptos que mas me ha costado comprender fueron los loops o ciclos while y for. Para poder entenderlos mejor me propuse crear un ejemplo practico del uso de cada uno.
Ciclos: forma de ejecutar un código repetitivamente hasta que una condicional se cumpla o le demos una instrucción para que pare.
<h1>
1. while</h1>
Partí por entender en que ocasiones se utiliza while. Con mis apuntes y el código de ejemplo de las clases logré entender que:
- while se utiliza para ejecutar un ciclo mientras se cumplan ciertas reglas que definirán el número de iteraciones. Usualmente no tenemos muy claro el número de iteraciones.
- Dentro de while se puede utilizar continue para continuar directamente al siguiente ciclo y break para terminar el ciclo, además de if, elif y else.
- Ejemplo básico: Primero se define el contador en cero y se define que se va ejecutar el while hasta que el contador llegue a 20, dentro del while se agrega un +1 en cada ciclo al contador. Luego el if con un continue dentro (OJO con las identaciones) actúa como un “continuar al siguiente ciclo obviando todo lo que esté abajo”, por lo tanto si (if) el contador es menor a 15 se continuará al comienzo del ciclo, cuando no lo sea se procederá con el print.
counter = 0while counter < 20:
counter += 1if counter < 15:
continueprint(counter)
Luego pensé las posibles aplicaciones de esta situación de repetir la función hasta que suceda algo. Llegué a la idea de hacer una pregunta para confirmar si se desea continuar ejecutando alguna función o aplicación.
- Comencé por pensar en la situación y con que respuestas se debería continuar ejecutando algo. Al comienzo del código hice la pregunta o input de si desea continuar y se brindan las opciones de respuesta. Luego con el while se pide que se siga ejecutando en caso de que la respuesta no esté dentro de las opciones o en caso de que si se siga ejecutando. Agregué un mensaje en los casos “si” que se ejecuta y “no” donde también se acaba el ciclo con break.
- Ejemplo aplicado:
whileTrue:
respuesta = input("Desea continuar? (s/n) ->")
if respuesta == "s":
print("Vamo a ejecuta...")
continueelif respuesta == "n":
print("Bueno chau...")
breakelse:
print('Escriba una opción correcta (s/n)')
print("Fin del programa")
<h1>
2. for</h1>
Utilicé el mismo proceso que para el ciclo while pero además repasé la clase y los comentarios de compañeros, logré entender que:
- for se utiliza para iterar o repetir el ciclo bajo un conjunto de datos definido
- La variable elemento suele nombrarse en referencia a los datos que se esta recorriendo. También dentro del ciclo se pueden usar if, elif y else.
- Ejemplo básico: Para recorrer datos del tipo diccionario se debe considerar que sus elementos están compuestos de keys y value de cada una. En el #1 se puede ver que se accede al value utilizando las key. En el #2 con la función .items se genera un array en tuplas con key y value de forma separada.
product = {
'name': 'Camisa',
'price': 100,
'stock': 89
}
#1forkey in product:
print(key, '->', product[key])
#2forkey, valuein product.items():
print(key, '->', value)
- Ejemplo aplicado: Pensé en como podría hacer algo con un archivo del tipo lista de diccionarios. Se me ocurrió recorrer una lista de candidatos a un empleo que necesitamos seleccionar solo aquellos que dentro de sus lenguajes manejen Python. Para esto comencé creando una lista con los datos de cada persona, luego la recorrí utilizando for para que analizara si (if) el elemento ‘Python’ se encontraba dentro de la key ‘lang’ de cada candidato. Luego se imprime el nombre y lenguajes de las personas que saben Python.
people = [
{
'name': 'nico',
'age': 34,
'langs': ['Javascript','R', 'Python']
},
{
'name': 'zule',
'age': 29,
'langs': ['R', 'Javascript']
},
{
'name': 'santi',
'age': 28,
'langs': ['Python', 'Javascript']
},
{
'name': 'pablo',
'age': 23,
'langs': ['R','Python']
}
]
for person in people:
if 'Python' in person['langs']:
print(person['name'], '->', person['langs'])
Hasta pronto, toca seguir aprendiendo para que no nos pase como a zule.