我的问题是错误消息仅在我第二次调用该函数之后才会发生 numLen,phoneMask = numberLen(3) TypeError:“ NoneType”对象不可迭代
这是我的代码。 如果输入正确的扩展名,例如第一次运行脚本时输入71023,则没有问题。 如果我第一次键入错误的扩展名,而第二次键入正确的扩展名,它将返回typeerror消息,并且我可以看到numberlen(i)没有返回任何错误。
谢谢。
import sys
def numAssign(t):
maskList = ['02694406XX', '02693710XX']
extList = ['706XX', '710XX']
i = 0
while i < len(extList) :
if t != extList[i] :
i = i + 1
else :
return True, maskList[i]
print('''The extension you entered is not in the indial range.''')
return False, ' '
def numberLen(i):
t = input('Please enter the extnsion : ')
T = len(t)
isNum = t.isdecimal()
patternConvert = t[0:3] + 'XX'
if T == 5 and isNum == True :
valid, mask = numAssign(patternConvert)
print(mask)
print(i)
if valid == True:
print(numAssign(patternConvert))
return True, mask
else :
if i == 0 :
print('''The number you entered was not valid.
It has to be 5 digits.''')
else :
print('Please try again')
print(i)
numberLen(i-1)
else :
if i == 0 :
print('Your entering is invalid, we will terminiate the programe')
exit()
else :
numberLen(i-1)
if __name__ == '__main__':
numLen, phoneMask = numberLen(3)
print(phoneMask)enter code here
答案 0 :(得分:0)
您的numberLen()
函数仅在用户首次进行有效输入时返回调用者期望的元组;否则,它将以递归方式调用自身,并且不返回其返回值,这使该函数默认返回None
,从而在调用方尝试将其按顺序解压缩时引起异常。
您应该更改以下两种情况:
numberLen(i-1)
收件人:
return numberLen(i-1)