首页 > 解决方案 > 如何修复值错误:“CB7”不在列表中?

问题描述

(为了清楚起见重新发布)当我将鼠标放在return lst:上时,此函数返回带有代码位置的列表[1, 4, 7](正如它应该做的那样)但是当我调用该函数时它给了我错误builtins.ValueError: 'CB7' is not in list

我意识到问题出在[i:].index(single_code) + i

如何在不使用enumerate()和列出理解的情况下修复它?

这是我的代码:

sp_codes = ['EB9', 'CB7', 'EB9', 'N4Y', 'CB7', '4B9', '9OP', 'CB7', '4B9']



    return lst
            
    
'''
testing code
'''            
single_code = input('Enter a code: ') #Enter 'CB7'

pos_list = find_indexes(sp_codes, single_code)
print(pos_list) # ---> Prints [1, 4, 7]

标签: pythonpython-3.x

解决方案


此解决方案应该有效:

sp_codes = ['EB9', 'CB7', 'EB9', 'N4Y', 'CB7', '4B9', '9OP', 'CB7', '4B9']


def find_indexes(sp_codes, single_code):
    lst = []
    for i in range(0, len(sp_codes)):
        if single_code in sp_codes[i:]:
            index = sp_codes[i:].index(single_code) + i
            if index not in lst:
                lst.append(index)
        else:
            break
    return lst


'''
testing code
'''
single_code = input('Enter a code: ')  # Enter 'CB7'

pos_list = find_indexes(sp_codes, single_code)
print(pos_list)  # ---> Prints [1, 4, 7]

此检查天气列表中是否有更多代码出现,如果没有,则跳出循环语句。这可以防止它检查没有指定代码的列表,因此不会导致错误。


推荐阅读