简体   繁体   English

UnboundLocalError:赋值前引用了局部变量“n”

[英]UnboundLocalError: local variable 'n' referenced before assignment

I'm getting this error after adding the if statements on the bottom of my code:在我的代码底部添加if语句后,我收到此错误:

UnboundLocalError: local variable 'n' referenced before assignment UnboundLocalError:赋值前引用了局部变量“n”

Any ideas what is wrong?任何想法有什么问题?

import random

n=input('Write number of spaces you want to be playing on: ')
if n < 3:    
    print "Gotta be more than 3 mate"
    a = input('Would you like to end the program and try again?')
    exit()
else:    
    print"You're playing on %d lines" % n

def DieGame(dieSize,numberDie):   # dieSize (6 sides = 6),number of die (in this case,it'll be one
    result = 0
    value = 0
    rounds = 1

    while n > 1:
        print "Round number " ,rounds

        for i in range(0,numberDie):         # starting at 0 , number of die
            result = random.randint(1,dieSize)  #random number, 1 - size of dice(6 in this case)
            print("On %d dice/die,you've rolled %d." % (i+1,result))  
            value += result

        print("Value of the roll/s %d of the dice/die is: %d" % (numberDie,value))

        if (n - value) > 1:     #if I'll get anything else than 1,its okay
            print "New position: " ,n-value
        if n == 1:
            print "You've reached 1 space right before the finish,return back by 1."
            n += 1                   
        if (n-value) == 0:

            a = input('Congratulations, you made it to the end! Press Enter to close the game.')
            exit()

        rounds += 1
    else:
        print "End"
    DieGame(6,1)
#-------------------------------------------------------
#Gotta break the loop once I get to 0,or If I was to cross 0 to -1 and less.Can't cross 0.

#If I'll be like 4 spaces from finish and I'll roll 6,I wont be able to move,gotta reach the last space.

#Gotta make it reroll if I roll 1,add rolls to sum and then move forward by that number
#if rolled for example 1+1+1(rerolling) + 3,add the sum together and move by 6.   

#if you step on the last space before the finish ,get one space back

Your problem is that n is assigned outside the function.你的问题是n是在函数之外分配的。 This will cause a problem:这会导致一个问题:

>>> n = 3
>>> def x():
...     while n > 1:
...         print("Iterating. n={}".format(n))
...         n = n - 1
... 
>>> x()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "<stdin>", line 2, in x
UnboundLocalError: local variable 'n' referenced before assignment

Whereas:然而:

>>> def y():
...     n = 3
...     while n > 1:
...         print("Iterating. n={}".format(n))
...         n = n - 1
... 
>>> y()
Iterating. n=3
Iterating. n=2

Variables that are used within a particular lexical scope need to be defined there.在特定词法范围内使用的变量需要在那里定义。 If the closure doesn't include n , then attempting to reference it causes a problem.如果闭包不包含n ,则尝试引用它会导致问题。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 UnboundLocalError:在函数赋值之前引用了局部变量“n” - UnboundLocalError: local variable 'n' referenced before assignment in function UnboundLocalError:分配前已引用局部变量“ truebomb” - UnboundLocalError: local variable 'truebomb' referenced before assignment UnboundLocalError:分配前已引用局部变量“ cur” - UnboundLocalError: local variable 'cur' referenced before assignment UnboundLocalError:分配前已引用局部变量“ Counter” - UnboundLocalError: local variable 'Counter' referenced before assignment UnBoundLocalError:赋值之前引用的局部变量(Python) - UnBoundLocalError: local variable referenced before assignment (Python) UnboundLocalError:分配前已引用局部变量“ strdate” - UnboundLocalError: local variable 'strdate' referenced before assignment UnboundLocalError:赋值之前引用了局部变量“ key” - UnboundLocalError: local variable 'key' referenced before assignment unboundLocalError:赋值前引用了局部变量“loopback” - unboundLocalError: local variable 'loopback' referenced before assignment UnboundLocalError:分配前已引用局部变量“ endProgram” - UnboundLocalError: local variable 'endProgram' referenced before assignment UnboundLocalError:赋值前引用了局部变量“Score” - UnboundLocalError: local variable 'Score' referenced before assignment
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM