小白学习纪实,跨专业学python的第八天~
睡了一觉起来觉得自己又行了~
8.1循环
很多情况下,我们会比较讨厌重复着做着相同的事情,因为这样枯燥乏味。很直接的,在我们睡不着失眠的时候,我们会选择重复数绵羊加速我们睡眠。对于程序员来讲同样不喜欢重复地做事情,毕竟 “不会偷懒的程序员,不是好程序员” 。这个 “ 偷懒 ” 并不是说不做事,而是想办法让事情变得更加有效率。 好在在很多编程语言里都有一种叫做for 循环的东西,它可以自动的重复其他的程序语句和语句块代码等。 Python 中的循环,主要有两个,一个是 for 循环,一个是 while 循环。8.1.1 使用for循环
在 Python 中,要打印 5 次 “ 我是大帅哥 ” ,你可以这样做:# 打印5次我是大帅哥
print("我是大帅哥")
print("我是大帅哥")
print("我是大帅哥")
print("我是大帅哥")
print("我是大帅哥"
执行结果:
我是大帅哥
我是大帅哥
我是大帅哥
我是大帅哥
我是大帅哥
但是这样太啰嗦了,而且现在只是需要打印
5
次,如果需要打印
100
次呢?这个代码写
100
遍,估计写到一半就给自己催眠了。这个时候我们可以使用 for
循环,我们来看下面代码
# 使用for循环,打印5次我是大帅哥
for x in range(5):
print("第%d次,我是大帅哥" % x)
# 打印完毕之后,x的值会自己增加1,直到为5,不满足条件了就不会再执行循环了
运行效果:
第0次,我是大帅哥
第1次,我是大帅哥
第2次,我是大帅哥
第3次,我是大帅哥
第4次,我是大帅哥
上面的for循环执行了5次,第一次运行时,变量 x 被设为0,循环中的print()打印出了“第0次,我是大帅哥”。Python完成 for 循环子句内所有代码的以此迭代之后,执行将回到循环的顶部,for语句让 x 增加1,x 的值从0变为了1。 此时循环中的 print()打印出了“第1次,我是大帅哥”。第二次迭代完毕之后,又回到for循环的顶部,让 x 增加1,x 的值就变为2。这就是为什么range(5) 导致句子5次迭代,x分别被设置为0,1,2,3,4。
我们来看一个经典的数学运算题,计算0 到 100 的累加的和: 0+1+2+3+...+100 的和,且看下面代码 :# 存放结果的变量
total = 0
# 编写循环,让num从0 可以一直增到100
for num in range(101):
# 每循环一次,将num的值累加到结果变量中
total = total + num
# 输出结果
print("0到100数字的累加和为:", total)
'''
循环分析:
第一次循环: total=0, num=0 ,total=total+num=0+0 循环结束 num=1
第二次循环:total=0+0 ,num=1 ,total=total+num=0+0+1 循环结束 num=2
第三次循环: total=0+0+1 ,num=2,total=total+num=0+0+1+2 循环结束 num=3
第三次循环:total=0+0+1+2,num=3,total=total+num=0+0+1+2+3 循环结束 num=4
....以此类推
'''
运行效果:
0到100数字的累加和为: 5050
程序刚开始时,total被设置为0,然后for循环执行了100次total=total+num。当循环完成100次迭 代时,0到100的每个整数都分别给到了num,并累加给了total。循环结束之后,打印出来的total就是累加的和。
8.1.2 while循环
实际上我们也可以用 while 循环来做 for 循环同样的事情。 for 循环只是更简洁一些,接下来我们看看与 for 循环等价的 while 循环:# 定义计数器,记录循环次数
i = 0
while i < 5:
# 如果i<5 就执行循环中的打印语句,否则就不执行
print("第%d次,说我爱你" % i)
# 每次执行完print之后,让i增加,使i逐渐接近5
i = i+1
运行结果:
第0次,说我爱你
第1次,说我爱你
第2次,说我爱你
第3次,说我爱你
第4次,说我爱你
我们发现这个程序的效果和前面使用 for
循环的打印结果相同。但是很明显
while
循环要比
for
循环写法要复杂,for
循环每执行一次循环中的代码,记录循环次数的变量会自动增加
1
。但是
while
循环我们需要手动加1
。
8.1.3 range() 函数详解
在 python 中很多函数可以添加参数去调用,多个参数之间可以用逗号分开。 range 同样也可以,我们可以在调用range 函数时传入一些参数,让我们的循环更加灵活。在前面我们知道 range(5) 表示从 0 开始,到4 结束,也就是数字在 [0,5) 这个区间。实际上我们可以通过 range(start,end), 来设置数字的起始点,和结束点,比如:for x in range(5, 10):
print("第%d次,说我爱你" % x)
运行结果:
第5次,说我爱你
第6次,说我爱你
第7次,说我爱你
第8次,说我爱你
第9次,说我爱你
range
(
start
,
end
)第一个参数
start
是
for
循环变量的开始值,第二个参数是上限值,但是不包 含。也就是循环停止的数字是end
。
range
还可以有第三个参数,就是
”
步长
“
。在前面
for
循环的变量每次循环结束之后,只增加1
。实际上这个
1
就是我们说的步长。步长是每次循环执行后循环变量增加的值。 比如:
for x in range(5, -1, -1):
print("我还能爱你%d次" % x)
运行结果:
我还能爱你5次
我还能爱你4次
我还能爱你3次
我还能爱你2次
我还能爱你1次
我还能爱你0次
从运行结果来看,
range(5,-1,-1),for
循环的变量从
5
开始,每次减小
1
,为
0
之后,再减小
1
次到达
-1就结束循环了。
8.1.4 break,continue
有的时候,当循环运行到中途的时候,我们需要停止循环。比如我们在操场上跑步,原定计划跑 10 圈,但是跑到第5 圈的时候。发现体力不支,无法在进行下去了。这个时候我们就需要停止。 Python 中 可以使用 break 来结束循环:for x in range(1, 11):
print("加油!你已经跑了%d圈了" % x)
if x == 5:
print("我跑不动了")
break
运行效果:
加油!你已经跑了1圈了
加油!你已经跑了2圈了
加油!你已经跑了3圈了
加油!你已经跑了4圈了
加油!你已经跑了5圈了
我跑不动了
我们可以发现,原本会循环10次的循环,当 x 为5的时候,遇到了 break,最终在这个位置就结束了 循环。因此,在循环中,我们在什么时候需要结束循环,那么我们只需要在这个位置上添加break 即可。
同样上面跑圈的案例,今天学生接到的锻炼任务是跑10圈,但是这个学生比较圆滑,每跑一圈,偷一圈懒。我们来看看代码是如何实现的:
for x in range(1, 11):
if x % 2 == 0:
print("偷个懒")
continue
print("加油!你已经跑了%d圈了" % x)
运行效果:
加油!你已经跑了1圈了
偷个懒
加油!你已经跑了3圈了
偷个懒
加油!你已经跑了5圈了
偷个懒
加油!你已经跑了7圈了
偷个懒
加油!你已经跑了9圈了
偷个懒
从上面的结果来看,我们实现了每跑一圈,偷一圈懒的效果。
x %2==0
,也就是当
x
的值为
2
的倍数的时候,就会偷懒,然后遇到 continue
,而此时下面的打印语句就不会执行。在这
continue
的作用就是结束当前循环,直接执行下一次循环。遇到 continue
之后,
continue
下面的代码在本次循环内就不会再执行了。
注意: 1. break 是结束整个循环。 2. continue 是结束本次循环,开始下一次循环。