Python mientras el bucle no funciona

def main(): again = "y" while again == "y" or again == "Y": module() again = raw_input("Do it again Y/y? ") return 

Al entrar en Y / y el progtwig simplemente se sienta. No se cierra, pero tampoco se reinicia. Al ingresar cualquier otra cosa que no sea Y / y, el progtwig se cerrará.

Estoy seguro de que me estoy perdiendo algo simple.

 def main(): again = "y" while again == "y" or again == "Y": module() again = raw_input("Do it again Y/y? ") return 

Con Python la sangría es clave

Hay un return dentro del bucle justo después de obtener la entrada, por lo que saldrá de la función independientemente de la entrada.

Enfoque alternativo:

 def main(): while True: module() again = raw_input("Do it again Y/y? ") if again.lower() != 'y:' return 

Esto simplifica la construcción del bucle de varias maneras:

  1. No es necesaria una asignación inicial a la variable antes de que sea necesario el bucle.
  2. La entrada se convierte a minúsculas, por lo que solo comparamos con 'y' lugar de versiones tanto mayúsculas como minúsculas.
  3. El control de bucle se simplifica, el bucle infinito se cerrará solo si el usuario ingresa algo que no sea 'Y' o 'y' .

retorno hace que salgas de la función principal. muévalo fuera del bloque while o beter y deshágase de él por completo.