close

[Solved] Python NameError, variable ‘not defined’

Hello Guys, How are you all? Hope You all Are Fine. Today I get the following error Python NameError, variable ‘not defined’ in python. So Here I am Explain to you all the possible solutions here.

Without wasting your time, Let’s start This Article to Solve This Error.

How Python NameError, variable ‘not defined’ Error Occurs?

Today I get the following error Python NameError, variable ‘not defined’ in python.

How To Solve Python NameError, variable ‘not defined’ Error ?

  1. How To Solve Python NameError, variable 'not defined' Error ?

    To Solve Python NameError, variable 'not defined' Error You didn't declare lives to be global inside main(), so it is local to that function.

  2. Python NameError, variable 'not defined'

    To Solve Python NameError, variable 'not defined' Error You didn't declare lives to be global inside main(), so it is local to that function.

Solution 1

You need to define the variable “lives” outside of the function main, then any function where you want to reference that global variable you say “global lives.” When you are in a function and assign a value to a variable, it assumes it is in the local scope. using “global lives” tells that function to look to the global scope as the reference of lives.

import random
import time

lives = 10
win = False
guess = 0
rand_num = 45

def main():
    global guess, rand_num, lives, win
    win = False
    rand_num = 45
    lives = 10
    while lives > 0 and win == False:
        guess = int(input("Guess a number!"))
        compare()
    print("Well done!")
    time.sleep(3)

def compare():
    global guess, rand_num, lives, win
    if guess == rand_num:
        print("You guessed correct!")
        win = True
    elif guess > rand_num:
        print ("Guess lower!")
        lives = lives - 1
    else:
        print ("Guess higher!")
        lives = lives - 1

def repeat():
    replay = input("would you like to play again? Y/N")
    if replay == "Y":
        print("enjoy!")
        main()
    elif replay == "N":
        "Goodbye then, hope you enjoyed!"
        time.sleep(3)
        os._exit
    else:
        print("please enter Y or N")
        repeat()

main()
repeat()

Solution 2

You didn’t declare lives to be global inside main(), so it is local to that function.

def main():
    global guess, rand_num, lives
    ...

Summery

It’s all About this issue. Hope all solution helped you a lot. Comment below Your thoughts and your queries. Also, Comment below which solution worked for you? Thank You.

Also, Read