为啥使用检索函数index需要用到try-except才能成功

这是一个检索,从列表b1中找到num1的位置,检索结果放进列表b2
我的问题是为啥需要try except才能成功,没有try except就不成功
下面这个是运行不成功的代码

b1=[5,10,5]
num1=5
start=0
b2=[]
while 1:
    x=b1.index(num1,start)
    b2.append(x)
    start=x+1
print(b2)

下面这个是运行成功代码:

b1=[5,10,5]
num1=5
start=0
b2=[]
while 1:
    try:
        x=b1.index(num1,start)
        b2.append(x)
        start=x+1
    except:
        break
print(b2)


下面这个是运行不成功的报错:

img

这个问题的核心是index函数,
不用index也可以做。直接用for循环和if条件语句就可以。下面是代码段。


b1=[5,10,5]
num1=5
start=0
b2=[]
for i in range(3):
    if b1[i]==num1:
        b2.append(i)
print(b2)

# 因为b1.index(num1,start) # 如果num1不在b1[start:]中,就会触发ValueError
# 而加了try catch 就是捕获了这个异常