简体   繁体   中英

TypeError: unsupported operand type(s) for +: 'NoneType' and 'int' in while loop

There is a function to match a string with the items in a list, which returns the index number of an list item if there is a match. Like below:

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

And there is a while-loop in the main function to obtain the return integer from above function:

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:]

I'm getting this error message:

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

Any advice for what I'm missing?

I think get_int is expecting str or int as the first list as the second argument, but pos = get_int(extr_wd, li_a) here both arguments are list , you should fix this.

you can use .index for finding the index

refactored get_int method:

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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM