Python 我试图得到一个序列号字符串,但得到一个错误,表示变量未定义

Python 我试图得到一个序列号字符串,但得到一个错误,表示变量未定义,python,indentation,Python,Indentation,我得到一个错误,说变量没有定义。是因为它被视为局部变量,因此不能使用。任何见解都值得赞赏。谢谢 这就是错误。。 addedNum=pNum+fNum+sNum 名称错误:未定义名称“pNum” def Print(): 打印(‘警察’+str(pNum)+‘火灾’+str(fNum)+‘卫生’+str(sNum)) def checkPrint(): addedNum=pNum+fNum+sNum 如果pNum%2==0: 如果addedNum==12: 打印() def printDept(

我得到一个错误,说变量没有定义。是因为它被视为局部变量,因此不能使用。任何见解都值得赞赏。谢谢

这就是错误。。 addedNum=pNum+fNum+sNum 名称错误:未定义名称“pNum”

def Print():
打印(‘警察’+str(pNum)+‘火灾’+str(fNum)+‘卫生’+str(sNum))
def checkPrint():
addedNum=pNum+fNum+sNum
如果pNum%2==0:
如果addedNum==12:
打印()
def printDept():
pNum=0
fNum=0
sNum=0
pNum<8时:
支票打印()
pNum=pNum+1
当fNum<8时:
支票打印()
fNum=fNum+1
当sNum<8时:
支票打印()
sNum=sNum+1
印刷部()

当您在
printDept()
函数中运行
checkPrint()
时,在
printDept()
中定义的变量(
pNum
fNum
sNum
)不会被传递,因此在
checkPrint()
的本地命名空间中找不到

要使用变量
pNum
fNum
sNum
运行
checkPrint()
,您需要将
changePrint()
函数更改为需要三个参数,然后在运行
printDept()
时传入这些参数:

def检查打印(pNum、fNum、sNum):
addedNum=pNum+fNum+sNum
如果pNum%2==0:
如果addedNum==12:
打印()
def printDept():
pNum=0
fNum=0
sNum=0
pNum<8时:
支票打印(pNum、fNum、sNum)
pNum=pNum+1
当fNum<8时:
支票打印(pNum、fNum、sNum)
fNum=fNum+1
当sNum<8时:
支票打印(pNum、fNum、sNum)
sNum=sNum+1
印刷部()

title显示“缩进错误”,但您的消息显示“变量未定义”。那么它是哪一个呢?变量有一个函数作用域
pNum
是在
printDept()
函数中声明的,但您正试图在
checkPrint()
中使用它,而该函数未声明。这就是为什么你会出错。最佳情况下,必须将其作为参数传递到函数内部。定义函数时,必须在函数定义中添加要处理的变量<代码>def检查打印(pNum、fNum、sNum):
def Print():
    print('Police ' + str(pNum) + 'Fire ' + str(fNum) + 'Sanitation ' + str(sNum)) 



def checkPrint():
    addedNum = pNum + fNum + sNum
    if pNum%2 == 0:
        if  addedNum == 12:
            print()
    
def printDept():
    pNum = 0
    fNum = 0
    sNum = 0
    while pNum < 8:
        checkPrint()
        pNum = pNum + 1
        while fNum < 8:
            checkPrint()
            fNum = fNum + 1
            while sNum < 8:
                checkPrint()
                sNum = sNum + 1


printDept()