跟着NOAI考纲学Python,学完就能考,第5课
每天一个知识点,带你自学NOAI,加入我们吧~
上节课电脑学会了"看情况办事"——if判断条件,走不同的路。但如果让你打印100次"Hello"呢?总不能写100行print吧。这节课学循环,一行代码干一百遍的活。
for循环:重复执行
最常用的循环是for循环,搭配range()来指定"重复几次"。
for i in range(3): |
Hello
Hello
Hello
拆开看:
• range(3) 生成0、1、2这三个数
• for i in range(3) 意思是:变量i依次取0、1、2,每取一个就执行一遍循环体
• 循环体就是缩进的那些代码,跟if一样,4个空格
变量i每一轮的值是什么?打印出来看看:
for i in range(3): |
第 0 轮
第 1 轮
第 2 轮
range(3)从0开始,到3之前停下——所以是0、1、2,不包含3。
range的三种写法
range(n):从0到n-1
for i in range(5): |
0
1
2
3
4
range(start, stop):从start到stop-1
for i in range(2, 6): |
2
3
4
5
range(start, stop, step):指定步长
for i in range(0, 10, 2): |
0
2
4
6
8
step是步长,每次跳2格。还是不包含结尾的10。
循环里做累加
循环最常见的用法之一:把一堆数加起来。比如求1+2+3+...+100:
total = 0 |
5050
拆开看:
• 先创建一个变量 total = 0,用来存累加结果
• range(1, 101) 生成1到100(不包含101)
• 每一轮把i加到total上:第1轮total变成1,第2轮变成3,第3轮变成6……
• 循环结束后打印total,得到5050
total = total + i 还有个简写:total += i,效果完全一样,写起来更短。
for循环遍历字符串
for不仅能配range用,还能直接遍历字符串——一个字符一个字符地取出来:
for char in "NOAI": |
N
O
A
I
变量char每一轮取到字符串里的一个字符,按顺序从头到尾。后面学了列表,for也能这样一个一个地遍历列表里的元素。
新手最容易犯的两个错
错误1以为range包含结尾
# 想打印1到5 |
记住:range永远不包含结尾那个数。想要1到100,就写range(1, 101)。
错误2print写在循环外面
total = 0 |
1
3
6
total = 0 |
6
缩进决定了代码"属于循环还是不属于循环"。想在循环结束后只执行一次的代码,不要缩进。
实战:九九乘法表的一行
把循环和上节课的知识结合一下。先来一个小目标——打印九九乘法表中3的那一行:
for i in range(1, 10): |
3 x 1 = 3
3 x 2 = 6
3 x 3 = 9
3 x 4 = 12
3 x 5 = 15
3 x 6 = 18
3 x 7 = 21
3 x 8 = 24
3 x 9 = 27
i从1跑到9,每一轮打印一个乘法算式。想打印完整的九九乘法表?需要"循环套循环"——以后会学到。
动手试试
|
练习1:预测输出 下面这段代码,输出什么?
提示:range(1, 5)生成哪些数?total每轮变成多少?注意print的缩进。 |
|
练习2:找bug 这段代码想打印1到10的所有偶数,但输出不对。哪里出了问题?
提示:它会输出0,2,4,6,8——多了个0,少了个10。想想range的三个参数该怎么改。 |
|
练习3:写代码 写一个程序:用for循环计算1到100之间所有奇数的和,打印结果。 提示:可以用range的步长参数,也可以用if判断奇偶——两种方法都行。 |
自己先想,想完了去香农平台上写代码跑一遍验证。
去平台上手写代码
学到这里,你的程序可以重复做事了。回顾一下:
• for i in range() — 循环指定次数
• range(n) / range(start, stop) / range(start, stop, step) — 三种写法
• += — 累加的简写
这篇文章讲的是香农NOAI学习平台"Python基础"模块的第五课。平台上有更多的练习题,写完代码点运行,对不对立刻就知道。
香农NOAI学习平台
地址:shannon.arpa.school
微信扫码登录就能用,免费。
找到「Python基础」→「for循环」,从第一道题开始写。
下一篇讲while循环——for适合"知道循环几次"的场景,while适合"不知道要循环多少次,满足条件就一直跑"。