【Python】while循环语句和for循环语句使用else的区别是什么

While循环语句和for循环语句使用else的区别是什么

结论

  • else子句的执行条件:当循环没有被break语句中断而正常结束的时候,就会执行else块。
  • 简单的来说:循环的else是给正常完成任务的循环的一个奖励。而不是给被中途打断的循环。
  • 这个规则对于while和for循环是完全相同的。

详细对比与解释

  1. for循环中的else:在一个列表中查找元素,如果找到就退出;如果遍历完整个列表都还没有找到,就执行else中为找到的逻辑
numbers = [1, 2, 4, 5]
for i in numbers:
    if i == 3:
        print("找到了3")
        break
else:
    print("没有找到3")
1.for循环遍历numbers列表
2.检查每个元素,看它是否等于3
3.遍历结束,没有任何一个元素等于3,所以break从未被执行。
4.循环正常结束,因此执行else块,打印没有找到3  
  1. While循环中的else: 实现一个登录尝试,给用户3次机会,如果3次内密码正确就成功登录;如果3次机会都 用完还没成功,则执行else中的账户锁定机制
attempts = 0
max_attempts = 3

correct_password = "123456"
while attempts < max_attempts:
    password = input(f"请输入密码(还剩余{max_attempts - attempts}机会)")
    if password == correct_password:
        print("登录成功")
        break
    attempts += 1
else:
    print(f"密码错误已达到{max_attempts}次数,账户已被锁定")

1.while循环条件attempts < 3 为true,开始循环
2.用户连续输错3次密码,break从未被执行
3.当attempts增加到3的时候,while循环的条件3 < 3变为False
4.循环正常结束(因为条件不满足而结束),因此执行else,打印锁定信息

关键区别总结:

特性for循环+elsewhile循环+else
核心逻辑完全一致:循环正常结束(未遇到break)则执行else完全一致:循环正常结束(为遇到break)则执行else
’正常结束‘的含义迭代器耗尽,即遍历完序列中的所有元素条件表达式变为False
常见使用场景搜索场景:在集合中查找项,没有找到执行else尝试/充实场景:在条件允许范围内 ,失败后执行else
因条件不满足而结束不适用,for 循环的结束只与迭代去有关是出发else的主要方式。当条件从Ture变为False是,循环自然结束
因迭代完毕而结束是出发else的主要方式不适用。while循环的结束只与条件有关

一个重要的误区

很多人会错误的认为:

  • for … else 是”循完了就执行else
  • while … else是条件不满足就执行else
  • 这种说法不准确,因为他忽略了break的关键作用

正确的理解应该是

  • for…else:如果循环因为迭代完毕而结束(没有碰到break),就执行else
  • while…else:如果循环因为条件变为假而结束(没有碰到break)。就执行else
  • 在任何一个循环中,只要执行了break,就会跳过else
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值