我正在做一个带号的赋值,并告诉用户它是否是有效的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()
答案 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
的位置