+1 toevoegen aan een variabele in een functie

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%

pointsstaat 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 pointsBinnen 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")
    ...

Other episodes