python的循环中else子句的必要的应用场景是什么?
黄舟
黄舟 2017-04-17 11:28:46
[Python讨论组]

例如python官方文档里举得这个例子

for n in range(2, 10):
...     for x in range(2, n):
...         if n % x == 0:
...             print n, 'equals', x, '*', n/x
...             break
...     else:
...         # loop fell through without finding a factor
...         print n, 'is a prime number'
...
2 is a prime number
3 is a prime number
4 equals 2 * 2
5 is a prime number
6 equals 2 * 3
7 is a prime number
8 equals 2 * 4
9 equals 3 * 3

直接这样写不是也能实现同样的功能吗?

for n in range(2, 10): ... for x in range(2, n): ... if n % x == 0: ... print n, 'equals', x, '*', n/x ... break ... else: ... # loop fell through without finding a factor ... print n, 'is a prime number' ... 2 is a prime number 3 is a prime number 4 equals 2 * 2 5 is a prime number 6 equals 2 * 3 7 is a prime number 8 equals 2 * 4 9 equals 3 * 3

黄舟
黄舟

人生最曼妙的风景,竟是内心的淡定与从容!

全部回复(2)
PHP中文网

如果一个循环里面有多个地方需要break的话,用while..else..就不用在每个break后面写同样的代码。(记错了)

举个具体的例子,在C时代,可以这么写:

for (i = 0; i < 10; i++)
     if (some condition)
         break;
if i == 10:
     printf("no break\n");

但是在python里面用 for x in xx 的话就不行了,如果没有这样的else的话,就得设置一个额外的flag:

flag = False
for x in xx:
    if some condition:
        flag = True
        break
if flag:
    print 'no break'

看起来很丑;而有了else。

for x in xx:
    if some condition:
        break
else:
    print 'no break'
ringa_lee

当前的for被break掉以后,其对应的else不会执行

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号