for else语句小tips : RUNOOB python练习题36

用来练手的python练习题,原题链接: python练习实例36

题干: 求100之内的素数

求某个范围内的素数,和之前的一个例题其实是一样的,上次的同类例题链接如下: python练习实例12

在实现题目要求时,这次用了for else语句,发现更加简便,可以省去一部分的条件语句。
源代码如下:

import numpy as np
from math import sqrt
bound = np.arange(2,101,1)
result = np.array([],dtype=int)
for k in bound:
  if k > 1:  
    for i in range(2,int(sqrt(k))+1):
      # 如果k存在不是1或k本身的因数i,则k不是素数
      if k%i == 0:
        break
    else: 
      result = np.append(result, k)
print(result)

输出结果如下:
在这里插入图片描述
if else语句是比较常见的条件语句,但其实for else语句也是非常实用的。下面给出for else语句的基本测试:

第一种情况,在for循环中的条件语句,当条件满足时,break。

for i in range(10):
  if i == 7:
    print("aaa")
    break
else:
  print("okok")

输出结果如下:
在这里插入图片描述
我们发现,当循环中出现了满足条件语句的情况,循环break会直接跳出,且不会执行else语句中的命令。

那么如果循环中的所有情况都不满足条件语句,循环break之后会执行else语句中的命令,如下:

for i in range(10):
  if i == 11:
    print("aaa")
    # 其实这里有没有break是一样的,因为这个条件语句总是false,因此循环语句总是能完全遍历。
    break
else:
  print("okok")

在上述代码中我们知道,循环中的所有情况,都不会满足if条件语句的条件,因此循环跳出后会执行else语句中的print指令,输出结果如下:
在这里插入图片描述
实际我们发现,当循环中不触发break跳出循环,在循环全部完成后,总会执行else中的命令,如下:

for i in range(10):
  print("haohaohao")
else:
  print("okok")

输出结果如下:
在这里插入图片描述
总结: 当我们使用for else 语句时,如果循环完全遍历,没有通过break跳出,那么在循环结束后,就会执行else语句中的命令。反之,如果在循环的过程中,经由break跳出了循环,那么else语句就不会再执行了。因此for else语句非常适合存在性问题,例如在找素数的过程中,如果这个数存在除了1和它本身的因数,则跳出循环,这个数不是素数。反之如果不存在除了1和它本身的因数,那么就调用else语句,这个数是一个素数。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值