2016-09-04 16 views
-2
import random 

def game(n): 
     while counter < n: 
     n1 = random.randrange(1,10) 
     n2 = random.randrange(1,10) 
     counter = 0  
     print (str(n1) + " + " + str(n1)) 
     answer = input("Enter answer: ") 
if answer == n1+n2: 
    print("Correct.") 
else: 
    print("Incorrect.") 
    counter += 1 
    pass 

Ошибка в этой строке ниже говорит о том, что n1 не определен.Переменная не определена в функции

print (str(n1) + " + " + str(n1)) 
+0

Пожалуйста, проверьте отступ. Строки под 'while' не имеют отступов. – timrau

+1

В соответствии с кодом, который вы указали, у вас есть проблемы с отступом, и 'counter' также не определяется. Я удивлен, что первая ошибка, которую вы получаете на вашей стороне, - это заявление печати. – idjaw

+0

Вам нужно работать над вашим отступом. Убедитесь, что он совпадает с кодом, который вы используете. Это звучит как проблема с областью, и если отступы кода, который вы публикуете, не соответствуют вашему фактическому коду, это сложно сделать, потому что отступы определяют область действия в Python. Также обратите внимание, что в вашем коде также есть логические ошибки. –

ответ

0

Вот что вам нужно исправить:

  1. Ваш отступы повсюду.
  2. Вы пытались использовать counter как часть своего состояния в своем цикле, прежде чем вы даже дали ему значение.
  3. Потому что вы создали n1 и n2 внутри тела вашего цикла while, после каждой догадки n1 и n2 будут созданы снова и будут присвоены разные значения. Я не уверен, если вы хотите, чтобы это произошло, но если вы это сделали, вы можете просто переместить эти 2 строки обратно в цикл.
  4. Вы не смогли вырваться из своего цикла, если пользователь догадался о правильном ответе. Вот почему я добавил break. Это закончит цикл успешным ответом. Кроме того, если ответ неверен, вам не нужно pass. Цикл будет продолжаться до тех пор, пока он не получит правильный ответ или не достигнет значения counter.

В любом случае, это фиксированная/рабочая версия вашего кода.

import random 

def game(n): 
    counter = 0 
    n1 = random.randrange(1,10) 
    n2 = random.randrange(1,10) 
    while counter < n: 
     # move creation of n1, n2 here if you want #'s to change after every guess 
     print ('{} + {}'.format(n1, n2)) 
     answer = input("Enter answer: ") 
     if answer == int(n1 + n2): 
      print("Correct.") 
      break 
     else: 
      print("Incorrect.") 
      counter += 1 

Вы должны действительно прочитать о некоторых основных темах Python, такие как отступы, while петель и переменных.

Надеюсь, это поможет!

И, наконец, вот 2 испытания. Один из них я успешно угадываю правильный ответ, а другой догадываюсь, пока счетчик не достигнут.

4 + 9 
Enter answer: 3 
Incorrect. 
4 + 9 
Enter answer: 2 
Incorrect. 
4 + 9 
Enter answer: 1 
Incorrect. 


9 + 8 
Enter answer: 17 
Correct. 

В обоих этих примерах я назвал функцию с помощью game(3).