TypeError:不支持的操作数类型+:'NoneType'和'int'在while循环中

时间:2017-05-26 15:18:19

标签: python python-2.7 while-loop nonetype

有一个函数可以将字符串与列表中的项匹配,如果匹配,则返回列表项的索引号。如下所示:

def get_int(get_wd, get_list):
   for i, j in enumerate(get_list):
       if j == get_wd:
         get_i = i
         return get_i

主函数中有一个while循环,用于从上面的函数中获取返回整数:

get_wd = []
x = 0
candi = []

while len(li_a) > 0:
    iter_a = iter(li_a)
    srh_time = len(li_a)
    while srh_time > 0:
        temp = next(iter_a)
        if temp in li_words:
            candi.append(temp)
        else:
            pass
        srh_time = srh_time - 1
    max_len = max(len(s) for s in candi)
    extr_wd = list(set(s for s in candi if len(s) == max_len))
    pos = get_int(extr_wd, li_a) ##Calling the function##
    get_wd.append(extr_wd)
    li_a = li_a[pos + 1:]

我收到此错误消息:

>> li_a = li_a[pos + 1:]
>> TypeError: unsupported operand type(s) for +: 'NoneType' and 'int'

对于我所缺少的任何建议?

1 个答案:

答案 0 :(得分:2)

我认为get_int期望strint作为第一个list作为第二个参数,但pos = get_int(extr_wd, li_a)这两个参数都是list,你应该解决这个问题。

您可以使用.index来查找索引

重构get_int方法:

def get_int(get_wd, get_list):
     try:
         return get_list.index(get_wd)
     except ValueError:
         return -1 # not found