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)