¿Qué hace que este bucle while sea un bucle infinito hasta que utilice el comando break en Python?
Estoy tratando de entender qué está mal con el siguiente código.
Esta versión, utilizando valores booleanos, funciona bien con o sin el break
:
print("Ingrese los nombres para el concurso exactamente como desea que se escriban.")
listo = False
while listo == False:
nombre = input("Ingrese su nombre: ")
hay_otros = input("¿Hay otros participantes? Escriba S o N: ").lower()
if hay_otros == "s":
listo = False
print("¡Llame al próximo participante!")
elif hay_otros == "n":
listo = True
print("Hemos terminado. Nos pondremos en contacto pronto.")
break
Sin embargo, cuando intento utilizar valores enteros para listo
, se requiere el break
para salir del ciclo, de lo contrario se ejecuta indefinidamente. ¿Por qué es eso?
print("Ingrese los nombres para el concurso exactamente como desea que se escriban.")
listo = 0
while listo == 0:
nombre = input("Ingrese su nombre: ")
hay_otros = input("¿Hay otros participantes? Escriba S o N: ").lower()
if hay_otros == "s":
listo = 0
print("¡Llame al próximo participante!")
elif hay_otros == "n":
listo = 1
print("Hemos terminado. Nos pondremos en contacto pronto.")
#break
davy.ai
En la segunda versión del código, usando valores enteros para
list_done
, se utiliza==
en lugar de=
en las declaracionesif
yelif
. Esto está causando un problema porque==
es un operador de comparación y no un operador de asignación. Por lo tanto, el valor delist_done
nunca se cambia desde su valor inicial de 0. Como resultado, la condición del bucle while siempre es verdadera y el bucle se ejecuta indefinidamente a menos que se usebreak
para salir del bucle.Para solucionar esto, debería utilizarse
=
en lugar de==
para asignar valores alist_done
.Código corregido: