Home > Back-end >  Variable not defined in def ()
Variable not defined in def ()

Time:10-27

It says N is not defined. But why? It is in def szint() Someone know what is the problem?

Sorry for not English. I could translate it if you want.

import random

def szint():
    N = int(input('Hanyadik emelet színezését kéred? (1.-50. szint) '))
    if N > 50 or N < 1:
        print('Ez nincs a megadott tartományban, válassz egy másik szintet!')
        szint()

def szinezes():
    I = int(input('Hanyadik fajtát? (1.-1 000 000 000 000 000. színezés) '))
    if I > 1000000000000000 or I < 1:
        print('Ez nincs a megadott tartományban, válassz egy másik szintet!')
        szinezes()

szint()
szinezes()

def variansok(length):  
    alap_szinezés = 'FPZ'
    varians = ''.join((random.choice(alap_szinezés)) for x in range(length))    
variansok(N)

CodePudding user response:

N is not defined in your call to variansok. N is a local variable defined in szint. Once the call to szint returns, that variable is gone.

You could make szint define a global variable (and use a loop rather than recursion)

def szint():
    global N

    while True:
        N = int(input('Hanyadik emelet színezését kéred? (1.-50. szint) '))
        if 1 <= N <= 50:
            break
        print('Ez nincs a megadott tartományban, válassz egy másik szintet!')

but a better solution would be to return the value to define a variable that's in the same scope as the call to variansok.

def szint():    
    while True:
        N = int(input('Hanyadik emelet színezését kéred? (1.-50. szint) '))
        if 1 <= N <= 50:
            return N
        print('Ez nincs a megadott tartományban, válassz egy másik szintet!')

n = szint()

...

variansok(n)

CodePudding user response:

N is defined only inside szint() function. You can either make the variable global or just return the value from the function like below

import random

def szint():
    N = int(input('Hanyadik emelet színezését kéred? (1.-50. szint) '))
    if N > 50 or N < 1:
        print('Ez nincs a megadott tartományban, válassz egy másik szintet!')
        szint()
    return N

def szinezes():
    I = int(input('Hanyadik fajtát? (1.-1 000 000 000 000 000. színezés) '))
    if I > 1000000000000000 or I < 1:
        print('Ez nincs a megadott tartományban, válassz egy másik szintet!')
        szinezes()

N = szint()
szinezes()

def variansok(length):  
    alap_szinezés = 'FPZ'
    varians = ''.join((random.choice(alap_szinezés)) for x in range(length))    
variansok(N)
  • Related