跟着NOAI考纲学Python,学完就能考,第5课

跟着NOAI考纲学Python,学完就能考,第5课

本文核心观点
NOAI 自学 Python 系列第 5 课:for 循环、range() 函数、循环遍历列表与字符串、break/continue 控制流。

跟着NOAI考纲学Python,学完就能考,第5课

每天一个知识点,带你自学NOAI,加入我们吧~

上节课电脑学会了"看情况办事"——if判断条件,走不同的路。但如果让你打印100次"Hello"呢?总不能写100行print吧。这节课学循环,一行代码干一百遍的活。

for循环:重复执行

最常用的循环是for循环,搭配range()来指定"重复几次"。

for i in range(3):
    print("Hello")

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):
    print("第"i"轮")

第 0 轮
第 1 轮
第 2 轮

range(3)从0开始,到3之前停下——所以是0、1、2,不包含3。

range的三种写法

range(n):从0到n-1

for i in range(5):
    print(i)

0
1
2
3
4

range(start, stop):从start到stop-1

for i in range(26):
    print(i)

2
3
4
5

range(start, stop, step):指定步长

for i in range(0102):
    print(i)

0
2
4
6
8

step是步长,每次跳2格。还是不包含结尾的10

循环里做累加

循环最常见的用法之一:把一堆数加起来。比如求1+2+3+...+100:

total = 0
for i in range(1101):
    total = total + i
print(total)

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":
    print(char)

N
O
A
I

变量char每一轮取到字符串里的一个字符,按顺序从头到尾。后面学了列表,for也能这样一个一个地遍历列表里的元素。

新手最容易犯的两个错

错误1以为range包含结尾

# 想打印1到5
for i in range(15):    # 只会打印1,2,3,4!
    print(i)

# 正确写法
for i in range(16):    # 要写6才能包含5
    print(i)

记住:range永远不包含结尾那个数。想要1到100,就写range(1, 101)。

错误2print写在循环外面

total = 0
for i in range(14):
    total += i
    print(total)    # 缩进了:每轮都打印

1
3
6

total = 0
for i in range(14):
    total += i
print(total)        # 没缩进:循环结束后只打印一次

6

缩进决定了代码"属于循环还是不属于循环"。想在循环结束后只执行一次的代码,不要缩进

实战:九九乘法表的一行

把循环和上节课的知识结合一下。先来一个小目标——打印九九乘法表中3的那一行:

for i in range(110):
    print(3"x"i"="3 * i)

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:预测输出

下面这段代码,输出什么?

total = 0
for i in range(15):
    total += i
print(total)

提示:range(1, 5)生成哪些数?total每轮变成多少?注意print的缩进。

练习2:找bug

这段代码想打印1到10的所有偶数,但输出不对。哪里出了问题?

for i in range(0102):
    print(i)

提示:它会输出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适合"不知道要循环多少次,满足条件就一直跑"。

微信二维码

扫码备注【NOAI】加交流群