从第二个tim调用函数时获取TypeError

2024-04-24 15:11:03 发布

您现在位置:Python中文网/ 问答频道 /正文

我的问题是错误消息只发生在我第二次调用函数之后 numLen,phoneMask=numberLen(3) TypeError:“NoneType”对象不可iterable

这是我的密码。 如果我在第一次运行脚本时键入正确的扩展名,例如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

Tags: thetrue消息returnif错误maskelse
1条回答
网友
1楼 · 发布于 2024-04-24 15:11:03

numberLen()函数只返回用户第一次输入有效信息时调用方所期望的元组;否则,它递归地调用自身,并且不返回返回值,这使得函数在默认情况下返回None,当调用方试图将其解包为序列时,会导致异常

您应该更改以下两种情况:

numberLen(i-1)

收件人:

return numberLen(i-1)

相关问题 更多 >