Выход из программы, функция main() в Python
Программа тренажер таблицы умножения. В ней необходимо:
- вывести свое название и версию;
- вывести меню, в котором пользователю будет предлагаться вывод таблицы умножения для повторения, запуск тренажера или выход из программы;
- после каждой попытки ответа пользователя программа должна выводить сообщение о правильности ответа и запрашивать подтверждение на продолжение работы программы либо выход из нее, а в случае неправильного ответа помимо сообщения об ошибке программа должна выводить еще и правильный ответ.
Вывод таблицы умножения и запуск тренажера оформить в виде функций, которые затем будут использоваться в теле основной функции программы.
Вопрос в следующем. Если запустить тренажер ('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()
Источник: Stack Overflow на русском