Как остановить код после достижения заданного времени - PullRequest
0 голосов
/ 28 мая 2019

Я задавал этот вопрос ранее, но не получил действительных ответов.Я хотел бы, чтобы игроки завершили мою викторину, но у них есть только определенное время для ее выполнения, и как только она достигает установленного времени, она заканчивает игру и перестает задавать все вопросы.

Я пробовал несколько разных кодов, но отображалниже последний, который я пытаюсь.

import time

max_time = int(input('Enter the amount of seconds you want to run this: '))
start_time = time.time()  
while (time.time() - start_time) > max_time:
    sys.exit()

question_1 = ("Question?")
option_1 =(" a. 54 \n b. 50 \n c. 47 \n d. 38")
print(question_1)
print(option_1)    
answer_1 = input(">")        
if answer_1.lower() == "a":
    print("Correct")  
else:
    print("Incorrect") 

question_a2 = ("Question 2?")
option_a2 = (" a. 4 \n b. 6 \n c. 8 \n d. 10")
print(question_a2)
print(option_a2)            
answer_a2 = input(">")
if answer_a2.lower() == "a":
    print("Correct")
else:
    print("Incorrect")
end_time = time.time()

Этот код просто продолжает проходить вопросы, как обычно, и ничего не происходит.Я довольно новый, и любая помощь будет оценена.

1 Ответ

1 голос
/ 28 мая 2019

Прежде всего, вы должны начать использовать функции, чтобы минимизировать дублирование кода (копировать и вставлять). Простое, но не очень интерактивное решение - проверить время после ответа на вопрос. Заменить

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()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...