2016-02-08 1 views
-1

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

import random 

def game(): 

    guesses = [] 
    secret_num = random.randint(1, 10) 

while len(guesses) < 5: 
    try: 
    guess = int(input("Guess a number between 1 and 10 ")) 
    except ValueError: 
    print("{} isn't a number!".format(guess)) 
    else: 
     if guess == secret_num: 
      print("You got it! My number was {}".format(secret_num)) 
      break 
     elif guess < secret_num: 
      print("My number is higher than {}".format(guess)) 

     else: 
      print("My number is lower tha {}".format(guess)) 
     guesses.append(guess) 
else: 
    print("You didn't get it my secret number was {}".format(secret_num)) 
play_again = input("Do you want to play again? Y/N") 
if play_again.lower() != 'n': 
    game() 
else: 
    print("Bye thanks for playing!") 
+5

indention my friend – tinySandy

+2

Все, что находится внутри функциональной игры(), должно быть постоянно отступом под этой функцией. Ваш цикл while существует вне этой функции, и угадывает только область видимости внутри функции. –

ответ

1

Это не вызывает ошибок на моем компьютере. Обратите внимание, что вам нужно будет вызвать функцию игры(), если вы хотите фактически запустить код.

import random 

def game(): 

    guesses = [] 
    secret_num = random.randint(1, 10) 

    while len(guesses) < 5: 
     try: 
     guess = int(input("Guess a number between 1 and 10 ")) 
     except ValueError: 
     print("{} isn't a number!".format(guess)) 
     else: 
      if guess == secret_num: 
       print("You got it! My number was {}".format(secret_num)) 
       break 
      elif guess < secret_num: 
       print("My number is higher than {}".format(guess)) 

      else: 
       print("My number is lower tha {}".format(guess)) 
      guesses.append(guess) 
    else: 
     print("You didn't get it my secret number was {}".format(secret_num)) 
    play_again = input("Do you want to play again? Y/N") 
    if play_again.lower() != 'n': 
     game() 
    else: 
     print("Bye thanks for playing!") 

game() # to run the code