Питон не работает

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

При входе в Y / y программа просто сидит. Он не закрывается, но он также не перезапускается. Ввод ничего, кроме Y / y, и программа закроется.

Я уверен, что я пропустил что-то простое.

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

С отступом Python является ключевым

return внутри цикла сразу после ввода ввода, поэтому вы выходите из функции независимо от ввода.

Альтернативный подход:

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

Это упрощает конструкцию цикла несколькими способами:

  1. Нет никакого первоначального назначения переменной перед циклом.
  2. Вход преобразуется в нижний регистр, поэтому мы сравниваем только 'y' вместо версий с верхним и нижним регистром.
  3. Управление контуром упрощается, бесконечный цикл выйдет только в том случае, если пользователь вводит ничего, кроме 'Y' или 'y' .

return приводит к выходу из функции main. вытащите его из блока while или beter, но полностью избавитесь от него.