Carlos Mario Henao González
Lo que le pasó a la memoria eliminando el contador interno:
Gonzalo Ferrando
jajajajjaajja Excelente! Tal Cual!
Cristian Antonio García González
XD muy buen meme.
¿Qué son los bucles en la programación y por qué son importantes?
Los bucles, o iteraciones, son diáfanos en la programación, permitiéndonos ejecutar una tarea repetidamente sin reescribir el código una y otra vez. Este concepto es fundamental ya que optimiza procesos, evita tedios innecesarios y permite que los programas operen de forma eficiente. Imagínate tener que imprimir los números del 1 al 10 manualmente; sin bucles, escribir cada línea sería agotador y poco práctico. Los bucles nos ofrecen una solución elegante y eficaz.
¿Cómo funcionan las iteraciones anidadas?
Las iteraciones anidadas funcionan como relojes dentro de relojes. Imagina esto: un pequeño reloj que mide los segundos dentro de uno que mide los minutos. Así funcionan las iteraciones anidadas. Esto se usa comúnmente cuando se necesita realizar tareas repetitivas dentro de otras tareas repetitivas, permitiendo un alto grado de control y precisión.
¿Qué son los bucles infinitos y cómo evitarlos?
Los bucles infinitos son bucles que nunca terminan de ejecutarse, lo que puede provocar que el programa se cuelgue o no opere correctamente. Son uno de los mayores temores en el desarrollo de software, ya que pueden ser difíciles de detectar y corregir. Para evitarlos, es crucial asegurarse de que siempre haya una condición de terminación adecuada y de que las variables de control cambien dentro del bucle.
Explorando el bucle while en Python
¿Cómo crear un bucle while básico?
El bucle while en Python requiere una condición que debe ser verdadera para que el bucle continúe ejecutándose. Aquí tienes un ejemplo simple:
contador = 0 while contador < 10: print(contador) contador += 1
En este caso, el bucle imprimirá los números del 0 al 9. Si la condición no cambia (por ejemplo, si te olvidas de incrementar el contador), puedes caer en un bucle infinito.
¿Cómo utilizar bucles anidados?
Para anidar bucles, basta con incluir un bucle dentro de otro. Veamos un ejemplo:
contador_externo = 0 contador_interno = 0 while contador_externo < 5: while contador_interno < 6: print(contador_externo, contador_interno) contador_interno += 1 contador_externo += 1 contador_interno = 0
El código anterior muestra cómo puedes manejar dos contadores, uno externo y otro interno, para realizar acciones más específicas.
Utilizando la sentencia break en bucles
¿Qué es y cómo se utiliza la sentencia break?
La sentencia break se utiliza para salir anticipadamente de un bucle cuando se cumple cierta condición. Esta es particularmente útil para prevenir bucles infinitos. Veamos cómo aplicarlo:
while True: if contador_interno >= 3: break contador_interno += 1
En el ejemplo anterior, si contador_interno alcanza los 3, el bucle se interrumpe gracias al break.
Consejos prácticos para programadores principiantes
for.¡Sigue explorando los bucles y descubre cómo elevar tus habilidades de programación a nuevos niveles!
Carlos Mario Henao González
Lo que le pasó a la memoria eliminando el contador interno:
Gonzalo Ferrando
jajajajjaajja Excelente! Tal Cual!
Cristian Antonio García González
XD muy buen meme.
Jhon Freddy Puentes Nuñez
El único loop infinito que debes hacer es:
!Nunca Parar de Aprender!
Edgar A. Orozco
while vida < muerte print("Nunca pares de aprender")``` 🤭🤭🤭🤭🤭
Cristian Antonio García González
Muy bien dicho compañero. también pondría otro loop infinito que diga "Creo en mi mismo"
Arturo Raziel Chavez Clavellina
John Freddy Barrantes Gama
Excelente explicación con diagrama ! La única observación que veo es que el contador de las horas debe ser 12h o 24h
Luis Manuel Maya Castrejón
Muy útil, gracias por compartir
Álvaro Fabian M
Vengo de Java, no puedo quitarme la manía de ponerle punto y coma a todo;
Manuel Alejandro Hermoso
me pasa lo mismo.
William Armando Forero Bermeo
x 3 :v
Liliana Londono Agudelo
Cuando se quita el contador interno se queda en un ciclo infinito. Me divertí haciendo este ensayo con estos ciclos:
Alejandro Cuello Maure
ajajajaj ahora para formar un diamante
Edgar Ocampo
RESUMEN
En esta clase vimos que los iteradores son estructuras de control que me permiten llevar un flujo siempre que una condición se cumpla. Si esta condición se cumple eternamente, y no le decimos al programa que se detenga se generará un infinit loop.
Adjunto el código de esta clase donde vemos un ciclo While anidado dentro de otro.
contador_externo=0 contador_interno=0 while contador_externo <5: while contador_interno <6: print(contador_externo,contador_interno) contador_interno+=1 # contador_interno += 1 --> Si eliminamos esto, habrá un bucle infinito de ceros porque el contador nunca avanza, # y es el contador interno el que define el externo. if contador_interno >=3: break # Esto es un break statement qu eme dice que cuando mi contador interno sea 3, pare. # Solo debe parar el contador interno, pues el externo tiene un contador por si mismo y seguirá la ejecución contador_externo+=1 # contador_externo += 1 --> Si elimino esto, al ser el contador externo siempre 0, le estoy diciendo que vaya hasta infinito, y el código interno # se seguirá ejecutando de 0 a 5 indefinidamente contador_interno=0 # contador_interno=0 --->Eliminar este implica que contador_interno solo tendrá la oportunidad de ejecutarse de 0 a 5. # El código en general tiene dos mecanismos uno interior que hace ciclos cortos, y uno exterior que envuelve los ciclos. # Son estructuras de control anidadas.
Juan Pablo Neira Álvarez
Sergio Noriega
jajaja increible XD
Lorenzo Enrique Piñango Cerezo
Que bien :)
Henry Felipe Murillo González
Al eliminar el contador interno, ambos contadores entraron en un infinite loop de ceros. Como el contador interno nunca pudo aumentar de uno en uno, jamás llegó a 6, por lo que el contador externo tampoco pudo empezar a aumentar de uno en uno. Dos filas de ceros hasta el infinito.
Marcos Monteverde
Excelente explicacion, gracias!!
Jesús Carlos Cárdenas Piñuelas
Miguel Rosario
Genial, probé tu código y funciona de maravilla !!!!!
Joseph Boscán
Era más sencillo hacerlo de esta manera:
from datetime import datetime import time while True: now = datetime.now() print(f'{now.hour}:{now.minute}:{now.second}') time.sleep(1)
David Behar
reloj.py
horas = 0 minutos = 0 while horas<24: while minutos<60: print(horas,':',minutos) minutos += 1 horas += 1 minutos = 0
Cristian Antonio García González
Fantástico compañero, aunque creo que se asemeja mas a un cronometro que a un reloj, bueno eso según en mi punto de vista.
Rafael Vivenzio
Faltan los segundos.
Irvin Vallejo
cls comando para borrar la terminal
Cesar Arturo Castanon Acuna
También funciona: . CTRL + L (en el teclado, la L es minus) o escribir clear
Miguel Andres Rendon Reyes
EN windows claro
Walter Correa
Mientras la secuencia de acciones o instrucciones no genere un valor falso, el ciclo va seguir indefinidamente.
Esteban Cerda Román
Con el gráfico de flujo, ayuda a comprenderlo.
victorpendola@gmail.com Péndola
while True: print("cree en ti")
Edinson Requena
Acá esta el código de la creación de un relog de 24 horas.
hora, minu, seg = 0, 0, 0 while hora < 24: while minu < 60: while seg < 60: print(hora, minu, seg) seg += 1 minu += 1 seg = 0 hora += 1 minu = 0
Si quieren ver el algoritmo de como hacerlo paso a paso en cualquier lenguaje de programación pueden encontrarlo acá: https://github.com/EdinsonRequena/articicial-inteligence-and-data-science/blob/master/introduccion-al-computo-con-python/modulo_I/iteraciones02.py
Erika Luna
ProfesorEdinson Requena
Que genial que te haya funcionado erika! Y si, la verdad el nombre que le puse a las variables igual y es un poco confuso jaja!
Daniela Suárez
Un reloj es una muy buena manera de explicar las iteraciones 😀👍🏻
López Ary Dani
😀👍🏻
Horacio Abraham Picón Galván
Si eliminas el incremento del contador interno, creas un ciclo infinito porque nunca pasaría de 0, por esta razón nunca saldría del while interno ya que 0 siempre sería menor que 6.
johan Stever Rodriguez Molina
un caso similar a usar += y bastante útil es /= que se usa para decir a = a/numero es a/=num
Andres Alvarez Becerra
Alguien me puede hace el favor de explicarme porque al contador_interno se le vuelve asignar el valor de 0 en el while externo?
Kevin J. Zea Alvarado
¡Claro!
Lo que pasa es que, una vez que entra al while contador_interno < 6:, se le suma 1 por cada ciclo en ese while. Una vez que sale del ciclo, contador_interno será igual a 6.
Si no se declara contador_interno = 0 antes de que empiece el segundo ciclo del while contador_externo < 5:, contador_interno seguirá siendo igual a 6. Por ende, no entraría al segundo ciclo y no se haría el print(contador_externo, contador_interno).
Si sigues teniendo dudas, ten la confianza de decirlo por aquí mismo. La idea es comprender bien cómo funciona el código.
Leonardo Gomez
Hola!
Puedes verlo como un reloj: Imagina que son las 12:00 y para llegar a las 13:00 el reloj tiene que cumplir 60 minutos más. Un minuto se compone de segundos (ciclo interno) es decir que cada 60 segundos el ciclo superior (minutos) avanzara en 1 y el ciclo interno (segundos) volvera a su Posición en 0
César Molina
Si eliminamos: contador_interno += 1 se genera un infinite loop, ya que siempre sería verdad (al inicio dicho contador se le asignó cero)
Si eliminamos: contador_externo += 1 también se genera un infinite loop, como al inicio se asigno el valor de cero, siempre será verdad.
Si eliminamos: contador_interno = 0 ocurre solo una iteracion, pues como queda asigando el valor de 6 al contador_interno el segundo while va ser falso siempre. (no hay un infinite loop)
Juan David Suarez
Cristian Antonio García González
Muy interesante compañero aunque creo que seria mas como un cronometro que un reloj.
Osvaldo Damián Ruiz
que geniaaaal
Mi diamante con corte
contador = 10 espacio = 0 flag = False while contador > 0: print("*" * contador + " " * espacio * 2 + "*" * contador) contador -= 1 espacio += 1 if contador == 1: flag = True while flag: print("*" * contador + " " * espacio * 2 + "*" * contador) contador += 1 espacio -= 1 if contador == 11: break if contador == 11: break
Yo finalmente tras haber visto el vídeo un par de días atrás les comparto mi pequeño programa que hice para practicar lo visto. De manera chistosa, todo empezó con una idea boba que me dio mi papá y luego la comencé a hacer, pero me encontré con ciertos defectos y la fui corrigiendo linea por linea hasta finalmente hoy nació este programa no perfecto pero funcional :)
#Inicio numero_usuarios_original = int(input('Favor de indicar el número de usuarios: ')) numero_usuarios = numero_usuarios_original while numero_usuarios >= 1: if numero_usuarios == 0: break #Bienvenida usuario = input('Bienvenido estimado usuario, favor de ingresar su nombre: ') #Solicitando edad actual y calculando edad después del cumpleaños. edad_usuario = int(input('Favor de proporcionar su edad actual: ')) edad_usuario += 1 print('Gracias, ahora...') #Fecha actual y próximo cumpleaños from datetime import datetime fecha_actual = datetime.now() dia_actual = datetime.strftime(fecha_actual, '%d') dia_actual = datetime.strptime(dia_actual, '%d') mes_actual = datetime.strftime(fecha_actual, '%b') mes_actual = datetime.strptime(mes_actual, '%b') print('Favor de proporcionar la fecha de su próximo cumpleaños conforme se le vaya solicitando') dia_proximo = (input('Día: ')) mes_proximo = (input('Mes: ')) año_proximo = (input('Año: ')) print('') fecha_proximo = (f'{dia_proximo}/{mes_proximo}/{año_proximo}') fecha_proximo = datetime.strptime(fecha_proximo, '%d/%m/%Y') #Cálculo de días restantes tiempo_restante = fecha_actual - fecha_proximo tiempo_restante = tiempo_restante.days tiempo_restante = tiempo_restante * -1 #Cambio de formato a la fecha del cumpleaños fecha_proximo = datetime.strftime(fecha_proximo, '%d %b %Y') #Resultado print('Listo!') print(f'Dentro de {tiempo_restante} días, el {fecha_proximo} cumplirás {edad_usuario} años!') print('') numero_usuarios -= 1 while numero_usuarios >= 1: print(f'Gracias por tu tiempo {usuario}, proseguimos con el siguiente usuario...') break #Despedida del programa if numero_usuarios_original == 1: print('Gracias por tu tiempo y atención, ten un lindo día...') print('Y felicidades anticipadas por tu próximo cumpleaños!!') elif numero_usuarios_original == 2: print('Gracias a ambos por su atención, tengan un lindo día...') print('Y felicidades anticipadas a ambos!!') else: print('Gracias a todos por su atención, espero tengan un lindo día...') print('Y felicidades anticipadas a los cumpleañeros!!')
from datetime import datetime import time import sys now = datetime.now() hrs = now.hour min = now.minute sec = now.second while hrs<24: while min<60: while sec<60: current = str(hrs).zfill(2) + " : " + str(min).zfill(2) + " : " + str(sec).zfill(2) + "\r" sys.stdout.write(current) sec += 1 time.sleep(1) min += 1 sec = 0 hrs += 1 min = 0
lo intenté y funciona perfecto. Solo le cambié el nombre a las variables para no confundirme tanto.
hora = 0 minuto = 0 segundo = 0 while hora < 24: while minuto < 60: while segundo < 60: print(hora, minuto, segundo) segundo += 1 minuto += 1 segundo = 0 hora += 1 minuto = 0
horas = 0 minutos = 0 segundos = 0 while horas < 24: while minutos < 60: while segundos < 60: print(f'{horas}:{minutos}:{segundos}') segundos += 1 minutos += 1 segundos = 0 horas += 1 minutos = 0
Un reloj <3