#独家
python的else和if,可以不在个层级吗?

2023-08-09 0 1,498

下面是一段判断素数的代码,为什么if else,可以不在一个层级,并且得出正确的结呢

for num in range(10, 20):
    for i in range(2, num):
        if num % i == 0:
            print("%d 是素数" % num)
            break
    else:
        print("%d 是合数" % num)

emm,这位同学,首先呢,else语句实际上是和内层的for循环相匹配的,而非与if语句相匹配,想必不小心粗心了,哈哈。(一定要小本本记好,这是特定语法规则!)
好了,为了更好的回答你的这个问题,我这里先写了一段正确的代码:

for num in range(10, 20):
    for i in range(2, num):
        if num % i == 0:
            print("%d 是素数" % num)
            break
    else:
        print("%d 是合数" % num)

对于第一个数字 num = 10:

内层循环将 i 分别取为 2、3、4、5、6、7、8、9。
当 i = 2 时, 10 % 2 不等于 0,没有满足条件,继续循环。
当 i = 3 时, 10 % 3 不等于 0,没有满足条件,继续循环。
当 i = 4 时, 10 % 4 不等于 0,没有满足条件,继续循环。

当 i = 9 时, 10 % 9 不等于 0,没有满足条件,继续循环。
内层循环结束,执行 else 语句,打印 “10 是合数”。

对于第二个数字 num = 11:

内层循环将 i 取为 2。
当 i = 2 时, 11 % 2 不等于 0,没有满足条件,继续循环。
内层循环结束,执行 else 语句,打印 “11 是合数”。

对于第三个数字 num = 12:

内层循环将 i 分别取为 2、3、4、5、6、7、8、9、10、11。
当 i = 2 时, 12 % 2 等于 0,满足条件,执行 if 语句中的代码块,打印 “12 是素数”,并跳出内层循环。
内层循环结束,不执行 else 语句。

对于其他数字的处理以此类推。通过这种方式,对于每个数字 num,都会判断是否存在可以整除它的数 i,并根据判断结果执行相应的代码块,从而得到正确的判断结果。

这不是

if/else

语句

而是

for/else

语句

这个else子句在循环正常完成时执行,这意味着循环没有遇到任何break语句。

也就是说里面的这个for循环结束后确定这个数不是素数,那么它就是一个合数(仅限给出的数字范围)。

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

1. JK下载官网所有资源来源于开发团队,加入会员即可下载使用!如有问题请联系右下角在线客服!
2. JK下载官方保障所有软件都通过人工亲测,为每位会员用户提供安全可靠的应用软件、游戏资源下载及程序开发服务。
3. JK开发团队针对会员诉求,历经多年拥有现今开发成果, 每款应用程序上线前都经过人工测试无误后提供安装使用,只为会员提供安全原创的应用。
4. PC/移动端应用下载后如遇安装使用问题请联系右下角在线客服或提交工单,一对一指导解决疑难。

JK软件下载官网 技术分享 python的else和if,可以不在个层级吗? https://www.jkxiazai.com/2453.html

JK软件应用商店是经过官方安全认证,保障正版软件平台

相关资源

官方客服团队

为您解决烦忧 - 24小时在线 专业服务