python_for...else

巨坑的python机制:for...else

一般来说,for里面嵌套if的话,如果走完了if语句就不会走else语句,但是在python里面是会的!!!

举个例子:编写一个方法,找到所有为“天龙”的书籍,如果按照如下写法(book为列表,里面嵌套字典,字典的key分别为ID、name及address)

def find_book(name):
    for i in book:
        if name == i['name']:
            print(i)
        else:
            print('没有此图书')

那么控制台输出的是:

可以看到他走完了if之后还会走else

百度了一下for...else的文章,对应内容如下:

但是如果break的话,其他方法如果调用此方法,则只能找到一条数据,因为找完第一条数据就break退出掉了,找了很多方法,最终解决方案如下:

思路如下:

1.定义一个新的列表,遍历原本存放书籍信息的列表,找到对应的图书则添加到新列表里面去

2.判断如果新列表长度大于0的话,则通过for循环遍历输出对应的图书信息

3.这样避免了其他方法调用的时候会break掉无法继续的情况,当然如果只是本身内部方法自己使用的话可以直接break掉

 

 

借鉴导师关于for..else的理解思路代码:

for i in range(0,10):
    if i>10:
        print('我是第一个for...else')
        break
else:
    print('晴天你好啊')

for i in range(0,10):
    if i>5:
        print('我是第二个for...else')
        break
else:
    print('晴天你好啊')

for i in range(10):
    if i == 7:
        print('我是第三个for...else')
        pass
else:
    print('not found')

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值