¿Por qué no hay un bucle mientras que en Python
loops do-while (1)
¿Por qué Python no tiene un bucle ''hacer mientras'' como muchos otros lenguajes de programación, como C?
Ejemplo: En la C tenemos el bucle while mientras que abajo:
do {
statement(s);
} while( condition );
No hay un bucle do...while
while porque no hay una buena forma de definir uno que se ajuste a la statement: indented block
patrón de statement: indented block
utilizado por todas las demás declaraciones compuestas de Python. Como tales propuestas para agregar tal sintaxis nunca han llegado a un acuerdo.
Tampoco es realmente necesario tener tal construcción, no cuando simplemente puedes hacer:
while True:
# statement(s)
if not condition:
break
y tiene exactamente el mismo efecto que una C do { .. } while condition
bucle de do { .. } while condition
.
Ver python.org/dev/peps/pep-0315 :
Rechazado porque no surgió una sintaxis que pudiera competir con la siguiente forma:
while True: <setup code> if not <condition>: break <loop body>
Se encontró una alternativa de sintaxis a la propuesta en el PEP para un ciclo básico de "do-while" pero obtuvo poco apoyo porque la condición estaba en la parte superior:
do ... while <cond>: <loop body>
o, como lo dijo Guido van Rossum :
Por favor rechace el PEP. Más variaciones a lo largo de estas líneas no harán que el lenguaje sea más elegante o más fácil de aprender. Acababan de ahorrar a algunas personas apresuradas algo de escritura, mientras que otros que tienen que leer / mantener su código se preguntan qué significa.