2016-07-26 2 views
-3

Я хочу, чтобы код, который я в настоящее время должен бесконечно переходить в список вопросов, или пока кто-то не ответит неправильно. В настоящее время я используюНепрерывные случайные вопросы?

random.shuffle(questions) 

for question in questions: 
    question.ask() 

задать любой вопрос в списке один раз.

Как заставить его постоянно запрашивать, пока пользователь не введет неправильный ответ? Вот мой текущий код:

class Question(object): 
    def __init__(self, question, answer): 
     self.question = question 
     self.answer = answer 

    def ask(self): 

     response = input(self.question) 
     if response == self.answer: 
      print "CORRECT" 
     else: 
      print "wrong" 

questions = [ 
    Question("0", 0), 
    Question("π/6", 30), 
    Question("π/3", 60), 
    Question("π/4", 45), 
    Question("π/2", 90), 
    Question("2π/3", 120), 
    Question("3π/4", 135), 
    Question("5π/6", 150), 
    Question("π", 180), 
    Question("7π/6", 210), 
    Question("4π/3", 240), 
    Question("5π/4", 225), 
    Question("3π/2", 270), 
    Question("5π/3", 300), 
    Question("7π/4", 315), 
    Question("11π/6", 330), 
    Question("2π",360), 
] 

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

+0

Действительно ли это ваш отступ? – Li357

+2

Возможный дубликат [Циклы в Python 3.4.3] (http://stackoverflow.com/questions/31445050/loops-in-python-3-4-3) или любое количество вопросов «продолжайте спрашивать пользователя до ___» [1] (http://stackoverflow.com/questions/20337489/python-how-to-keep-repeating-a-program-until-a-specific-input-is-obaseded), [2] (http://stackoverflow.com/questions/23294658/asking-the-user-for-input-until-they-give-a-valid-response), [3] (http://stackoverflow.com/questions/8114355/loop- до-конкретного-пользовательского ввода), [4] (http://stackoverflow.com/questions/12556907/continually-prompting-user-for-input-in-python) и т. д. – TessellatingHeckler

+0

О, мой плохой, он, кажется, перепутался, когда я скопировал, я исправлю – Warstolrem

ответ

0

Может быть, стоит попробовать дать спросить() возвращает значение. Истинно, если ответ был правильным и False, если ответ был неправильным. Это может выглядеть следующим образом:

def ask(self): 
    response = input(self.question) 
    if response == self.answer: 
     print "CORRECT" 
     return True 
    else: 
     print "wrong" 
     return False 

Тогда вы могли бы перебирать такие вопросы:
(! Вы бы, во-первых нужно создать переменную счет)

for q in questions: 
    if q.ask() is True: 
     score += 1 
    else: 
     break #Breaks out of the while loop 

Eitherway, вы должны сделать ваши ответы строки слишком, чтобы не сравнить строки в целое число (которое никогда не будет таким же), так что вопросы должны выглядеть следующим образом:

questions = [ 
    Question("0", "0"), 
    Question("π/6", "30"), 
    Question("π/3", "60"), 
    Question("π/4", "45"), 
    ... 

Надеюсь, я мог бы вам помочь!

0

можно перебрать список с чем-то в то время как петли, как это возможно,

score = 0 
currIndex = 0 

#ask a question to start off 
q1 = questions[currIndex] 
#get the answer 
answer = q1.ask() 
while(answer == q1.answer): 
    #ask the question at this index 
    score+=1 
    q1=questions[currIndex] 
    answer = q1.ask() 

    currIndex+=1 
    #reset the loop? 
    if currIndex == len(questions)-1: 
     currIndex = 0 

не проверял еще, но это должно работать? Это будет продолжаться, пока они не получат ответ неправильно иначе бесконечно. редактировать: упс не читал, что полностью, я бы спросить вернуться правильно или неправильно, а затем изменить цикл для

while (answer == "CORRECT"): 
Смежные вопросы