问题描述
我收到一条错误消息,说未定义变量。是因为它被认为是局部变量,因此无法使用。任何见解表示赞赏。谢谢
这是错误。 添加的数字= pNum + fNum + sNum NameError:名称“ pNum”未定义
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()
解决方法
在checkPrint()
函数中运行printDept()
时,在printDept()
中定义的变量(pNum
,fNum
和sNum
)没有传递,因此在checkPrint()
本地的命名空间中找不到。
要使用变量checkPrint()
,pNum
和fNum
运行sNum
,需要将changePrint()
函数更改为需要三个参数,然后传递printDept()
运行期间输入这些参数:
def checkPrint(pNum,fNum,sNum):
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,sNum)
pNum = pNum + 1
while fNum < 8:
checkPrint(pNum,sNum)
fNum = fNum + 1
while sNum < 8:
checkPrint(pNum,sNum)
sNum = sNum + 1
printDept()