2015-12-14 2 views
-1

Я создаю викторину для проекта в школе, и я должен использовать проверку ввода с использованием строковых функций. Однако цикл while внутри цикла while не работает, почему?Ошибка синтаксиса. Почему мой код не так?

#QUESTIONS + SCORE 

def Quiz(): 
    QuestionNumber = 0 
    score = 0 
    validAnswer = False 
    while QuestionNumber < 10: 
     num1 = random.randint(1,20) 
     num2 = random.randint(1,20) 
     operator = random.choice(list(Operators.keys())) #chooses random operator from list of operators 
     QuestionNumber += 1 
     print QuestionNumber, ")", "What is", num1,operator,num2, "?" 
     ans = Operators.get(operator)(num1,num2) 
     UserAns = float(raw_input()    

     while validAnswer == False: 
      try: 
       UserAns = float 
       if UserAns == int: 
        validAnswer = True 
       else: 
        UserAns = float(raw_input() 
      except ValueError: 
       UserAns = float(raw_input() 
     return UserAns 

     if UserAns == ans: #compares answer of user to correct answer 
      score = score + 1 #adds one to the current score of user 
      print "Correct!" 

     else: 
      print "Incorrect!" 
    print ""   
    print "Your Score is", score,"! Well done!" #presents score to user 
    return(score) 
+2

было бы полезно, если бы вы сказали, что язык это ... –

+0

Извините, его Python. –

+0

Ошибки синтаксиса только копируют/вставляют ошибки? – quamrana

ответ

0

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

UserAns = float(raw_input()**)** 
+1

Это лучше подходит как комментарий. – Reti43

+0

Отмечено, и спасибо @ Reti43. Я здесь несколько новичок и все еще участвую в том, как внести свой вклад. – gtalarico

1

Сначала я бы изменить:

validAnswer = False 
while QuestionNumber < 10: 

в

while QuestionNumber < 10: 
    validAnswer = False 

Как после 1-го цикла validAnswer может иметь True в качестве значения (и это пропустит второй цикл)

Также вы должны удалить:

return UserAns 

как это будет вернуться к точке, называемой функции Quiz, пропуская следующий код (и так, как вы просили, цикл не работает)

Смежные вопросы