Iteraciones
Clase 9 de 31 • Curso de Introducción al Pensamiento Computacional con Python
Contenido del curso
Clase 9 de 31 • Curso de Introducción al Pensamiento Computacional con Python
Contenido del curso
Carlos Mario Henao González
Gonzalo Ferrando
Cristian Antonio García González
Jhon Freddy Puentes Nuñez
Edgar A. Orozco
Cristian Antonio García González
Arturo Raziel Chavez Clavellina
John Freddy Barrantes Gama
Luis Manuel Maya Castrejón
Álvaro Fabian M
Manuel Alejandro Hermoso
William Armando Forero Bermeo
Liliana Londono Agudelo
Alejandro Cuello Maure
Edgar Ocampo
Alejandro Giraldo Londoño
Lorenzo Enrique Piñango Cerezo
Diaz Mauricio
Juan Pablo Neira Álvarez
Sergio Noriega
Lorenzo Enrique Piñango Cerezo
Henry Felipe Murillo González
Marcos Monteverde
Jesús Carlos Cárdenas Piñuelas
Miguel Rosario
Joseph Boscán
David Behar
Cristian Antonio García González
Rafael Vivenzio
Irvin Vallejo
Cesar Arturo Castanon Acuna
Miguel Andres Rendon Reyes
Walter Correa
Esteban Cerda Román
victorpendola@gmail.com Péndola
Edinson Requena
Erika Luna
Edinson Requena
Daniela Suárez
López Ary Dani
Horacio Abraham Picón Galván
johan Stever Rodriguez Molina
Andres Alvarez Becerra
Kevin J. Zea Alvarado
Leonardo Gomez
César Molina
Juan David Suarez
Cristian Antonio García González
Osvaldo Damián Ruiz
Lo que le pasó a la memoria eliminando el contador interno:
jajajajjaajja Excelente! Tal Cual!
XD muy buen meme.
El único loop infinito que debes hacer es:
!Nunca Parar de Aprender!
while vida < muerte print("Nunca pares de aprender")``` 🤭🤭🤭🤭🤭
Muy bien dicho compañero. también pondría otro loop infinito que diga "Creo en mi mismo"
Excelente explicación con diagrama ! La única observación que veo es que el contador de las horas debe ser 12h o 24h
Muy útil, gracias por compartir
Vengo de Java, no puedo quitarme la manía de ponerle punto y coma a todo;
me pasa lo mismo.
x 3 :v
Cuando se quita el contador interno se queda en un ciclo infinito. Me divertí haciendo este ensayo con estos ciclos:
ajajajaj ahora para formar un diamante
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
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.
Gracias
Tks
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!!')
jajaja increible XD
Que bien :)
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.
Excelente explicacion, gracias!!
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
Genial, probé tu código y funciona de maravilla !!!!!
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)
reloj.py
horas = 0 minutos = 0 while horas<24: while minutos<60: print(horas,':',minutos) minutos += 1 horas += 1 minutos = 0
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.
Faltan los segundos.
cls comando para borrar la terminal
También funciona: . CTRL + L (en el teclado, la L es minus) o escribir clear
EN windows claro
Mientras la secuencia de acciones o instrucciones no genere un valor falso, el ciclo va seguir indefinidamente.
Con el gráfico de flujo, ayuda a comprenderlo.
while True: print("cree en ti")
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
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
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!
Un reloj es una muy buena manera de explicar las iteraciones 😀👍🏻
😀👍🏻
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.
un caso similar a usar += y bastante útil es /= que se usa para decir a = a/numero es a/=num
Alguien me puede hace el favor de explicarme porque al contador_interno se le vuelve asignar el valor de 0 en el while externo?
¡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.
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
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)
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
Muy interesante compañero aunque creo que seria mas como un cronometro que un reloj.
que geniaaaal