Daniel G.
Daniel G.

Reputation: 11

Variable not Defined in Python 3.5.1

I am a new coder with Python and I was wondering how I can fix this bug. Every time i put in the correct input in the code that I have, it spits out an error message, like so.

The code

total = 12
print ("I will play a game, you will choose 1, 2, or 3, and I will do the same, and I should always win, do you want to play?")
yesnoA = input("Yes or No?")
if yesnoA == yes:
    print ("Yay, your turn!")
    turnAA = input('Your First Move')
    if turnAA == 1:
        print ("I choose 3")
        total = total - 4
        print ("Total = ",total)
    else:
        if turnAA == 2:
            print ("I choose 2")
            total = total - 4
            print ("Total = ",total)
        else:
            if turnAA == 3:
                print ("I choose 1")
                total = total - 4
                print ("Total = ",total)
            else:
                print ("Cheater, try again")
else:
    yesnoB = input("Ok, you sure?")
    if yesnoB == yes:
        print ("Yay, your turn")
        turnAA = input('Your First Move')
        if turnAA == 1:
            print ("I choose 3")
            total = total - 4
            print ("Total = ",total)
        else:
            if turnAA == 2:
                print ("I choose 2")
                total = total - 4
                print ("Total = ",total)
            else:
                if turnAA == 3:
                    print ("I choose 1")
                    total = total - 4
                    print ("Total = ",total)
                else:
                    print ("Cheater, try again")
    else:
        print ("Well, goodbye")

The Output

Yes or No?yes
Traceback (most recent call last):
  File "C:/Users/*user*/Desktop/Code/Python/Nim Game.py", line 5, in <module>
    if yesnoA == yes:
NameError: name 'yes' is not defined

This is in version 3.5.1

Upvotes: 1

Views: 1240

Answers (3)

Sнаđошƒаӽ
Sнаđошƒаӽ

Reputation: 17562

You need to either declare a variable yes with a value 'yes', or compare your variable yesnoA with a string 'yes'. Maybe something like this:

if yesnoA.lower() == 'yes': # using lower(), so that user's input is case insensitive
    # do the rest of your work

Your code afterwards has some more issues. I will give you a clue. input always returns the user's input as string. So if you need integer from user, you will have to convert the user input into integer using int(your_int_as_string) like so:

turnAA = int(input('Your First Move'))
# turnAA is now an integer, provided the user entered valid integer value

Your take from this question on SO:

  • Look at the Traceback. It says clearly which line the error is in, and also what the error is. In your case it is NameError
  • Take a look at docs for NameError
  • Study this tutorial. It will help you get used to with some basic errors commonly encountered.

Upvotes: 2

Mixone
Mixone

Reputation: 1336

You have not defined the variable yes. You should do something like:

yes = "Yes"

At the start of the code

Upvotes: 1

Mureinik
Mureinik

Reputation: 311188

You're attempting to compare yesnoA to a variable named yes, which, indeed was not defined, instead of the string literal 'yes' (note the quotes!). Add the quotes and you should be fine:

if yesnoA == 'yes':
    # Here --^---^

Upvotes: 0

Related Questions