Прежде всего, вы должны начать использовать функции, чтобы минимизировать дублирование кода (копировать и вставлять). Простое, но не очень интерактивное решение - проверить время после ответа на вопрос. Заменить
if answer_a2.lower() == "a":
print("Correct")
else:
print("Incorrect")
с
if (time.time() - start_time) > max_time:
print("Sorry, you didn't answer in time")
stop_quiz = True
elif answer_1.lower() == "a":
print("Correct")
total_points += 1
else:
print("Incorrect")
Прежде чем задать следующий вопрос, проверьте, является ли stop_quiz
Истиной, и продолжайте, только если Ложь. Я надеюсь, вы поняли идею. Я также ввел переменную для подсчета правильных ответов.
ОБНОВЛЕНИЕ: переписать тест, используя класс для хранения очков и времени
import time
class Quiz:
def __init__(self):
self.total_points = 0
self.stop_quiz = False
self.start_time = time.time()
self.max_time = int(input('Enter the amount of seconds you want to run this: '))
def ask_question(self, question, options, correct_answer):
if self.stop_quiz:
return
print(question)
print(options)
answer = input(">")
if (time.time() - self.start_time) > self.max_time:
print("Sorry, you didn't answer in time. The quiz is over")
self.stop_quiz = True
elif answer.lower() == correct_answer:
print("Correct")
self.total_points += 1
else:
print("Incorrect")
def get_result(self):
print("You got {} Points!".format(self.total_points))
quiz = Quiz()
quiz.ask_question("Question 1?", "a. 54 \nb. 50 \nc. 47 \nd. 38", "a")
quiz.ask_question("Question 2?", "a. 54 \nb. 20 \nc. 47 \nd. 38", "b")
quiz.get_result()