尝试调用函数时出现UnboundLocalError

时间:2015-11-23 04:57:19

标签: python

我正在做一个带号的赋值,并告诉用户它是否是有效的SIN号。由于这个原因,我无法让我的程序运行:

  

UnboundLocalError:赋值前引用的局部变量'isdigit'。

我该如何解决这个问题?

from sinmodule import is_valid

def main():
    print "SIN Validator"
    print "============="


   isdigit()

def isdigit():

    int_str = str(sinnumber)
    length = (len(int_str))        

    number = raw_input("Please Enter SIN (Q to quit):")

    while length != 8:
        print "You did not enter 'Q' or a number."
        sinnumber = raw_input("Please Enter SIN (Q to quit):")

    if length == 8:
        if status == True:
            print "The number",number," IS a valid SIN."
        else:
            print "The number",number,"is NOT a valid SIN."

    if number == "Q":
        print "Good-bye!"

main()

1 个答案:

答案 0 :(得分:0)

您的代码中UnboundLocalError上的isdigit不应该出现任何问题。它在一个地方定义,并在第二个函数内部作为函数调用。范围规则适用。

然而您在使用它时尚未定义变量sinnumber

def isdigit():

    int_str = str(sinnumber)  # <--- here this is unbound
    length = (len(int_str))

    number = raw_input("Please Enter SIN (Q to quit):")

    while length != 8:
        print "You did not enter 'Q' or a number."
        sinnumber = raw_input("Please Enter SIN (Q to quit):") #<-defined here
    ...

您需要在使用之前将定义(在while循环中)移动。另外,请检查您的“成长”sinnumber以及更新length的位置