每日分享
It's not who you think you are that holds you back; it's who you think you're not.
阻挡你前进的不是“你是谁”,而是你觉得自己”不是谁“。
小闫语录:
自我设限是阻碍前进的一座大山。不要丧失了尝试的勇气,它能让你的路走的更宽广。
前言
昨天的文章『每天 3 分钟,小闫带你学 Python(七)』讲了判断语句 if-else
的使用,简单的进行回顾:
1.判断语句可以选择性执行对应的内容。
2.elif 必须同 if 一起使用。
3.else 一定放在最后使用。
4.一定要注意缩进的问题。
下面开始学习今天的内容吧。
1.循环语句
1.1 场景带入
我相信有一个场景一定出现在很多人的童年中:“把这篇文章抄写20遍”,“把错字给我罚抄100遍”.....然后大家就开始发挥自身的想象力,什么复印纸啦,什么笔绑一起啦。总之就是不断的循环同样的内容。
还有大家音乐播放器里面的单曲循环,不知道曾让你单曲循环的是哪一首呢?可以把歌曲名称留言在文章底部。
再举一个例子。大家在谈恋爱的时候经常会碰到给女朋友道歉的情况。有时候你把“媳妇儿,我错了”喊一万遍也难以消除她的不开心。
print("媳妇儿,我错了") print("媳妇儿,我错了") print("媳妇儿,我错了") ...(还有99997遍)...
其实使用循环语句,很简单:
i = 0 while i < 10000: print("媳妇儿,我错了") i += 1
它真的可以输出一万遍,不信可以试一下,如果电脑性能不是很好劝你放弃,卡死就不好玩了。后面会详细解读代码。
总结
1.只要是重复做一件事情,就可以使用循环。
2.循环是为了提高代码的重复利用率,节省工作量。
1.2 While 循环
老规矩,先看一下格式:
while 条件: 条件满足时执行代码 ...
一个 demo 给大家打个样 ~
i = 0 while i < 5: print("第 %d 遍:我喜欢你" % i) i += 1
我们看一下效果如何?
第0遍:我喜欢你
第1遍:我喜欢你
第2遍:我喜欢你
第3遍:我喜欢你
第4遍:我喜欢你
下面进行讲解:可以看到 while
的条件是 i<5
,因此必须定义变量 i
的一个起始值(换句话说,必须定义变量才可以使用)。 i=0
满足条件,因此执行 while
内部代码,直到 i=5
时停止循环。 i+=1
代表每次执行完后,将 i
进行加 1 操作,以保证程序按照预期进行。假设没有加 1 操作, i
永远等于 0,那么它永远满足条件,此时变成了一个死循环(即无限循环下去,永远不停止)。
1.2.1 while 循环应用
学会了 while 循环的基本使用后,当然要选几个小栗子进行练习啦。希望大家看到题目先自己尝试编写,写完之后,或者思考完仍然没有思路的可以看下方答案。
1.计算 1 到 100 的累积和:
sum = 0 i = 1 while i <= 100: sum += i i += 1 print("1到100的和为:%d" % sum)
输出结果为:
1到100的和为:5050
2.计算 1 到 100 之间的偶数和:
sum = 0 i = 1 while i <= 100: # % 代表取余操作,不知道前面的知识你是否遗忘了 if i % 2 == 0: sum += i i += 1 print("1到100间偶数和为%d" % sum)
输出结果为:
1到100间偶数和为2550
1.2.2 while 循环嵌套
之前我们学习条件判断语句时了解到嵌套操作, while
其实也有,可以任意组合。其中有个一个经典案例:打印九九乘法表:
1*1=1 1*2=2 2*2=4 1*3=3 2*3=6 3*3=9 1*4=4 2*4=8 3*4=12 4*4=16 1*5=5 2*5=10 3*5=15 4*5=20 5*5=25 1*6=6 2*6=12 3*6=18 4*6=24 5*6=30 6*6=36 1*7=7 2*7=14 3*7=21 4*7=28 5*7=35 6*7=42 7*7=49 1*8=8 2*8=16 3*8=24 4*8=32 5*8=40 6*8=48 7*8=56 8*8=64 1*9=9 2*9=18 3*9=27 4*9=36 5*9=45 6*9=54 7*9=63 8*9=72 9*9=81
是不是很怀念童年,虽然简单,用到的也只是学过的知识,但是我相信你没有任何思路(不要不承认,要敢于面对真实的自己)。下面先进行一波分析:
1.先看整体规律:每一行增加一个式子,也就是第一行是 1 个式子,第二行是 2 个式子 .....
需要考虑到循环操作,也要考虑到换行符的使用。
2.然后是式子的规律,每一行的式子第2个数字为行数,第1个数字为 1,2,3... 是第几行就排列到几。
也许你正在思考,还是无从下手,那么先练习一个简单点的例子,打印下方图形:
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
没错,将式子变成小星星,这个较简单,但同样不简单,来吧
假装你会了,下面公布答案 ~
i = 1 while i <= 9: j = 1 while j <= i: print("* ", end = '') j += 1 print() i += 1
print 函数本身具有换行的作用,因此我们可以在内层循环结束后,使用换行功能,达到预期效果。为什么能换行呢?之前没有讲过,此处作为拓展内容,print 函数中有一个
end
参数,默认是end='\n'
(之前讲解过\n
为换行符)。这也就解释了print("* ",end='')
。当我们手动输入end
的参数值为空字符串时,会取消换行的效果。当然不止可以这样做,还可以给end
赋值其他字符,如下:
print(1, end=",")
# 输出结果为
1,
可以看到1后面输出了一个逗号,
end
参数表示以什么结尾。
下面公布乘法表的答案:
i = 1 while i<=9: j=1 while j<=i: print("%d*%d=%-2d " % (j, i, i*j), end = '') j+=1 print() i+=1
代码中没有任何超纲的知识,如果有遗忘,对应其章节知识点,到前面文章复习即可。
1.3 for 循环
for
循环与 while
循环一样,也可以达到循环的效果,而且更加简洁。一般工作中,除了特殊的场景,很少人使用 while
循环。但是各有千秋,因场景而选择。
同样先来看一下它的格式:
for临时变量in列表,字符串之类的可迭代对象:
满足条件时循环执行的代码
可迭代对象就是可以被遍历的对象,即使用 for 循环可以将里面的每一个元素提取出来,并赋值给临时变量。大家暂时记住列表,字符串是可迭代对象。
for 循环内部可以使用此临时变量,外部不可以使用。
同样列举一个小 demo:
for i in[1,2,3,4]:
print(i)
看执行效果:
1 2 3 4
那么他可以说一万遍我爱你吗?可以的:
for i in range(10000):
print("我爱你")
range 函数的用法为
range(a,b)
,使用 for 循环遍历后,可以依次取出从 a 到 b-1 的值,然后赋值给临时变量 i 。注意取不到 b,只能取到 b 的前一个数字。range(5)
代表的是从 0 到 4 ,括号内省略了 0。range(a,b)
如果省略 a,默认从 0 开始。
执行效果:
我爱你 ...省略9998遍 我爱你
1.3.1 for 循环嵌套
大家在学会 while
循环打印九九乘法表之后是不是很开心,那么我们使用 for
循环再开心一次:
for i in range(1,10): for j in range(1,i+1): print("%d*%d=%-2d " % (j, i, i*j), end = '') print()
执行结果与 while
完全一致。
冷静一下,我想想哪里没有讲到。思索中 ......
1.4 break 和 continue
我就说忘了点什么嘛,这俩语句超级重要,今天拖堂也必须给大家讲一下。
1.4.1 break
是终止所在的循环。举个例子,当你使用循环嵌套,内部使用了 break,不影响外部。
for i in range(1,10):
for j in range(1,i+1):
print("%d*%d=%-2d "%(j, i, i*j), end ='')
break
print()
大家猜一下,它会输出什么?
内部循环使用了break,即内部循环肯定在打印输出第一个式子后,立刻停止。外部循环则不受影响。外部循环控制的是第几行,按道理,它应该输出 9 行内容,每一行只有一个式子,我们稍后检验一下结果。
1*1=1 1*2=2 1*3=3 1*4=4 1*5=5 1*6=6 1*7=7 1*8=8 1*9=9
果然同我们之前的分析一致。
1.4.2 continue
它也是终止循环,但是它代表终止本次循环,而非终止所在循环。有什么区别呢?举个例子,一个循环输出数字0到9,可以执行到7时不输出,终止本次循环,从8接着输出。
for i in range(10): if i == 7: continue print(i,end=' ')
输出结果为:
012345689
可以看到没有输出数字 7
1.4.3 注意
break/continue
只能用在循环中,除此以外不能单独使用
break/continue
在嵌套循环中,只对最近的一层循环起作用
2.作业
今日学习目标:熟练掌握循环语句的使用;熟练掌握终止循环 continue 和 break 的区别。
1.练习今日章节中留的练习习题。
2.熟练书写九九乘法表的代码。
3.打印输出下列图形:
******
*****
****
***
**
*
给出示例代码,自觉一些,做完再看,谢谢。
谁让你看的?
真的要看?
从文章尾部自己找吧......