请教一个python的循环问题?有大大帮个忙吗

img
一个简单的循环代码,但是有一个bug;第24行代码是用来判断,输入的num是否在shelf列表中的循环判断,我在后面加了一个else,想做到如果判断num不在shelf列表中的输出一句报错,但是结果却每个num值都会跳出这个else,求教是什么问题呢?

img

先if不在shelf列表中,打印你的报错,然后再else在shelf列表中的

你确定输入的num在shelf中吗?

我试了一下,好像没有问题,只是不建议使用find直接用等号就好

shelf=[]
for i in range(0,5):
    goods=input('请输入需要入库的商品,每次仅可输入一件: \n ')
    shelf . append(goods)
for item in shelf:
    print (item )
Lst=[]
while True:
    num=input( '请输入需要购买的商品')
    for item in shelf:
        if item == num:
            Lst . append(item)
            break
        else:
            print( '无效参数,请重新输入' )
            break
    if num=='退出' :
        break
请输入需要入库的商品,每次仅可输入一件:
sp1
请输入需要入库的商品,每次仅可输入一件:
sp2
请输入需要入库的商品,每次仅可输入一件:
、sp3
请输入需要入库的商品,每次仅可输入一件:
sp4
请输入需要入库的商品,每次仅可输入一件:
sp5
sp1
sp2
sp3
sp4
pp5
请输入需要购买的商品sp1
请输人需要购买的商品退出
PS D:\>
if item.find(num) == -1:
    print('无效参数,请重新输入')
    break
else:
    lst.append(item)
    break

我试出问题了,可能是python机制问题,试下下面的代码:

shelf=[]
for i in range(0,5):
    goods=input('请输入需要入库的商品,每次仅可输入一件: \n ')
    shelf . append(goods)
for item in shelf:
    print (item )
Lst=[]
while True:
    num=input( '请输入需要购买的商品')
    flag=False
    for item in shelf:
        if flag:
            continue;
        if item == num:
            Lst . append(item)
            flag=True
            continue
        else:
            continue
    if flag==False:
        print('无效参数,请重新输入')
    if num=='退出':
        break