Выход из программы, функция main() в Python

Рейтинг: 0Ответов: 1Опубликовано: 20.08.2023

Программа тренажер таблицы умножения. В ней необходимо:

  1. вывести свое название и версию;
  2. вывести меню, в котором пользователю будет предлагаться вывод таблицы умножения для повторения, запуск тренажера или выход из программы;
  3. после каждой попытки ответа пользователя программа должна выводить сообщение о правильности ответа и запрашивать подтверждение на продолжение работы программы либо выход из нее, а в случае неправильного ответа помимо сообщения об ошибке программа должна выводить еще и правильный ответ.

Вывод таблицы умножения и запуск тренажера оформить в виде функций, которые затем будут использоваться в теле основной функции программы.

Вопрос в следующем. Если запустить тренажер ('r'), произвести вычисления, после чего выбрать 'меню' ('m'), затем 'выход из программы' ('q'), выходить приходится дважды, т.е. два раза выбирать 'q' чтобы программа завершила работу. Хотелось бы понять как это можно исправить. Спасибо.

class Multiply:
    name = "Тренажер таблицы умножения"
    version = "1.0."
    def multiply_table(self):
        for i in range(1, 10):
            for j in range(1, 10):
                print("%4d" % (i * j), end=" ")
            print()

    def trainer(self):
        x = int(input("type first number < 10: "))
        y = int(input("type second number < 10: "))
        if x < 10 and y < 10:
            result = x * y
            myres = int(input(f'{x} * {y} = '))
            print()

            if myres == result:
                print("Correct answer")
            else:
                print(f"Wrong answer, correct is {result}. Try again")
            print()

            choice = input("Продолжить/Меню (y/m): ")
            print()

            if choice == 'y':
                Multiply.trainer(self)

            elif choice == 'm':
                main()

            else:
                print('Ошибка')

        else:
            print()
            print("Number is out of range")

def main():
    name = Multiply.name
    version = Multiply.version
    print(f'{name}, версия {version}')
    obj = Multiply()
    while True:
        print()
        menu = input("Вывести таблицу умножения: t\nЗапустить тренажер: r\nВыйти из программы: q\nВыбор: ")
        print()
        if menu == 't':
            obj.multiply_table()

        elif menu == 'r':
            obj.trainer()

        elif menu == 'q':
            break

        else:
            print('Error')

if __name__ == "__main__":
      main()

Ответы

▲ 1Принят

Нужно всего лишь заменить main() на return в методе Multiply.trainer()

elif choice == 'm':
    return