Dus eigenlijk heb ik geen idee wat er mis is met dit kleine stukje code, en het lijkt erop dat ik geen manier kan vinden om het te laten werken.
points = 0
def test():
addpoint = raw_input ("type ""add"" to add a point")
if addpoint == "add":
points = points + 1
else:
print "asd"
return;
test()
De fout die ik krijg is:
UnboundLocalError: local variable 'points' referenced before assignment
OPMERKING: Ik kan de “Points = 0” in de functie niet plaatsen, omdat ik het vele malen zal herhalen, dus het zou altijd de punten instellen op 0 eerst.
Ik ben volkomen vast, elke hulp zou op prijs worden gesteld!
Antwoord 1, Autoriteit 100%
U kunt ook punten doorgeven aan de functie:
Klein voorbeeld:
def test(points):
addpoint = raw_input ("type ""add"" to add a point")
if addpoint == "add":
points = points + 1
else:
print "asd"
return points;
if __name__ == '__main__':
points = 0
for i in range(10):
points = test(points)
print points
Antwoord 2, Autoriteit 386%
points
staat niet binnen de reikwijdte van de functie. U kunt een verwijzing naar de variabele pakken met behulp van nonlocal :
points = 0
def test():
nonlocal points
points += 1
Indien points
Binnen test()
moet verwijzen naar de buitenste (module) scope, gebruik Global :
points = 0
def test():
global points
points += 1
Antwoord 3
Verplaatsen naar test:
def test():
points = 0
addpoint = raw_input ("type ""add"" to add a point")
...
of gebruik globale verklaring , maar het is slechte praktijk.
Maar betere manier waarop het wijst naar parameters:
def test(points=0):
addpoint = raw_input ("type ""add"" to add a point")
...