Welcome to the Treehouse Community

Want to collaborate on code errors? Have bugs you need feedback on? Looking for an extra set of eyes on your latest project? Get support with fellow developers, designers, and programmers of all backgrounds and skill levels here with the Treehouse Community! While you're at it, check out some resources Treehouse students have shared here.

Looking to learn something new?

Treehouse offers a seven day free trial for new students. Get access to thousands of hours of content and join thousands of Treehouse students and alumni in the community today.

Start your free trial

Python Python Basics (2015) Number Game App Number Game Refinement

Jeremiah Tammilton
Jeremiah Tammilton
1,355 Points

Is the code of the video wrong?

When downloading the project zip, there is a mistake when trying to play again, got:Traceback (most recent call last): File "number_game.py", line 33, in <module> game() File "number_game.py", line 27, in game play_again = input("Do you want to play again? Y/n ") File "<string>", line 1, in <module> NameError: name 'n' is not defined

Also, when entering something that isn't a number, got: Traceback (most recent call last): File "number_game.py", line 33, in <module> game() File "number_game.py", line 12, in game guess = int(input("Guess a number between 1 and 10: ")) File "<string>", line 1, in <module> NameError: name 'd' is not defined

What is wrong?

2 Answers

Anibal Marquina
Anibal Marquina
9,523 Points

Hi Jeremai Apparently, the except statement in the try block is failing. Specifically the format() method. Try removing it as in the code below....

import random


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

    while len(guesses) < 5:
        try:
            guess = int(input("Guess a number between 1 and 10: "))
        except ValueError:
             print("That isn't a number,  you must guess a number!") #------>Change the print argument 
            #print("{} that isn't a number!".format(guess)) ------> Coment this out 

        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 than {}".format(guess))
            guesses.append(guess)
    else:
        print("You didn't get it! My 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!")


game()

I got the same error. I did the correction you suggests but it still doesn't work.

Traceback (most recent call last): File "number_game.py", line 34, in <module> game() File "number_game.py", line 28, in game play_again = input("Do you want to play again? Y/n") File "<string>", line 1, in <module> NameError: name 'n' is not defined