当前位置:首页>python>从零开始学Python(第九期)|for 循环 + range 实战:用 Python 找出 1‑100 全部质数

从零开始学Python(第九期)|for 循环 + range 实战:用 Python 找出 1‑100 全部质数

  • 2026-10-11 06:58:30
从零开始学Python(第九期)|for 循环 + range 实战:用 Python 找出 1‑100 全部质数
大家好,我是小吴!欢迎来到从零开始学Python第九期。

上一期我们搞定了 while 循环,实现程序持续运行,靠修改循环条件或者输入指定字符就能退出循环,解决了温度转换只能运行一次的问题。但如果我们明确知道要循环多少次,或是需要逐个处理字符串、列表里的每一个内容,用 while 写起来就会比较繁琐。

今天学习的 for 循环,就是专门为遍历而生的“懒人神器”。当你需要处理列表、字符串,或是清楚知道循环次数的时候,for 循环就是非常合适的工具。

一、for 循环是什么?

for 循环的本质是迭代:从头到尾,依次取出「可迭代对象」(列表、字符串、range 生成的序列)里面的每一个元素,拿到一个元素,就执行一轮循环体代码。

基础语法:

for 循环变量 in 可迭代对象:    循环体代码

执行流程:

1、从可迭代对象取出第一个元素,赋值给循环变量

2、执行缩进内的循环体代码

3、继续取下一个元素,重复上面操作

4、全部元素取完,循环自动结束

💡小提示:for 循环不需要手动编写结束条件,元素遍历完毕就会自动退出,这是它和 while 循环很大的区别。

二、for 循环核心知识点

1. range () 函数—— for 循环黄金搭档

range () 函数用来快速生成整数序列,一共有 3 种常用写法,它和切片一样,遵循顾头不顾尾的规则。

• range(N):生成0 ~ N‑1的整数序列,一共 N 个数字

• range(M, N):生成M ~ N‑1的整数序列,从 M 开始到 N‑1 结束

• range(M, N, K):生成M ~ N‑1、步长为 K 的整数序列。

for i in range(5):    print(i)# 输出0 1 2 3 4for i in range(2, 10, 2):    print(i)# 输出2 4 6 8

2. 遍历列表和字符串

for循环最擅长的,就是把容器内的元素挨个取出来。处理列表、字符串这类容器时,我们不需要手动通过索引号去访问数据。无论容器里有多少个元素,for循环都会自动完成全部内容的遍历。

#遍历列表print("我喜欢吃:",end="")fruits = ["苹果", "香蕉", "橘子"]for f in fruits:    print(f,end=" ")#输出:我喜欢吃:苹果 香蕉 橘子 
#遍历字符串for ch in "Python":    print(ch)   # 依次输出 P y t h o n

3. break 和 continue 

和 while 循环规则一样:

• break:直接彻底终止整个循环,后面不再执行

• continue:跳过本轮剩下代码,直接进入下一轮迭代

for i in range(10):    if i == 3:        continue   # i等于3的时候跳过本次,不打印    if i == 7:        break      # i等于7直接结束全部循环    print(i)       # 输出结果:0,1,2,4,5,6

4. for‑else 特殊结构

很多刚学 Python 的小伙伴会以为,else只能和if搭配使用。其实for循环、while循环的后面,同样可以接上else。

这里要重点注意:else里面的代码块,只有循环正常完整跑完,没有被break打断时,才会执行。如果循环被break提前终止,那么else里的代码就不会运行。

for i in range(5):    if i == 10:   #range(5)最大 i=4,永远不可能等于 10        breakelse:    print("循环顺利结束,没有被break打断") #本行会打印,因为代码未触发break

5. 缩进

和 while 循环规则一模一样!只有完成缩进的代码,才属于 for 的循环体。一旦缩进出错,代码运行逻辑就会直接错乱。

三、实战案例:找出 1~100 所有质数

首先我们先来搞清楚什么是质数:大于 1,只能被 1 和自身整除的自然数。换句话讲,一个数字,如果除了数字 1 和它本身之外,找不到其他可以把它整除的数,那它就是质数。如:2、3、5、7、11。

注意两点:

• 1既不是质数,也不是合数。

• 2是唯一的偶质数。

那合数又是什么呢?和质数刚好相反,大于 1,除了 1 和自身以外,还能被别的数字整除的自然数就是合数,比如 4、6、8、9。

项目功能需求:

• 遍历 1‑100 区间内所有自然数,筛选出全部质数;

• 输出所有筛选得到的质数,同时统计并打印质数总数量。

完整代码:

代码逐段讲解

1、prime_count = 0:创建计数器,初始还没有找到质数,计数为 0;

2、外层循环for i in range(2,101):遍历 2~100 的整数序列,1 不是质数,直接跳过;

3、is_prime = True:先做假设,默认当前数字 i 是质数;

4、内层循环for j in range(2,i):拿 2 到 i‑1 的所有数字,对 i 做取余判断;

5、if i % j == 0:如果 i 可以被 j 整除,说明 i 存在除 1 和自身以外的因数,就不是质数;将is_prime赋值为False,并且break跳出内层循环,无需继续判断;

6、判断is_prime == True:假设依旧成立,代表 i 是质数,打印该数字,计数器加 1;

7、全部循环结束,打印统计得到的质数总数量。

模拟代码

👉案例 1:i=4(合数)

i=4 进入外层循环,is_prime = True,先假设 4 是质数。

内层j in range(2,4),j 取值 2、3。

j=2:4%2 ==0条件成立,is_prime=False,执行 break,内层循环直接结束,j=3 不会运行。

is_prime已经是 False,不会打印 4。

👉案例 2:i=5(质数)

i=5,is_prime=True,假设 5 是质数。

内层 j 取值 2、3、4。

5%2、5%3、5%4的余数都不等于 0,if 条件不触发。

内层循环全部跑完,is_prime保持 True,打印数字 5。

👉特殊重点:i=2(最小质数)

range(2,2)是一个空区间,内层 for 循环一次都不会执行,is_prime维持 True,成功打印数字 2。这也是代码可以正确识别 2 为质数的关键。

这一期我们学习了 for 循环,掌握了 range、字符串与列表遍历、break和continue、for‑else 的运用。还完成了 1‑100 质数查找的小案例。

下一期,我们重点对比:到底什么时候用 for 循环,什么时候用 while 循环,分清两者的使用场景。

✍️小思考:我们刚刚实现了查找 1‑100 的所有质数,那如何找出 1‑100 里面全部的合数呢?大家可以动手试一试。

拜拜~👋,我们下期见!

最新文章

随机文章