专栏首页小闫笔记每天 3 分钟,小闫带你学 Python(八)

每天 3 分钟,小闫带你学 Python(八)

正文共:4004 字 5 图 预计阅读时间:11 分钟

每日分享

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=' ')

输出结果为:

0 1 2 3 4 5 6 8 9

可以看到没有输出数字 7

1.4.3 注意

break/continue 只能用在循环中,除此以外不能单独使用

break/continue 在嵌套循环中,只对最近的一层循环起作用

2.作业

今日学习目标:熟练掌握循环语句的使用;熟练掌握终止循环 continue 和 break 的区别。

1.练习今日章节中留的练习习题。

2.熟练书写九九乘法表的代码。

3.打印输出下列图形:

* * * * * * 
 * * * * * 
  * * * * 
   * * * 
    * * 
     *

给出示例代码,自觉一些,做完再看,谢谢。

谁让你看的?

真的要看?

从文章尾部自己找吧......

优质文章推荐:

redis操作命令总结

MySQL相关操作

SQL查询语句

前端中那些让你头疼的英文单词

Flask框架重点知识总结回顾

团队开发注意事项

浅谈密码加密

Django框架中的英文单词

Django中数据库的相关操作

DRF框架中的英文单词

DRF框架

Django相关知识点回顾

python技术面试题-腾讯

哈哈哈,我是答案

n = 6
while n >= 0:
    print(' ' * (6-n) + '* ' * n)
    n -= 1

本文分享自微信公众号 - 全栈技术精选(Pythonnote),作者:小闫同学啊

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-07-28

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 每天 3 分钟,小闫带你学 Python(二十一)

    When you see a person without a smile, give them one of yours.

    小闫同学啊
  • 新鲜出炉面试题(二)

    "What would you attempt to do if you knew you could not fail?—— Robert H. Schul...

    小闫同学啊
  • Tmux如何让滚屏起飞

    Tmux 在 Panel (也有人叫面板或者窗格)中查看历史不像一般终端中那样方便。

    小闫同学啊
  • 关于Python循环,看这一篇就够了

    break的作用:在循环体内遇到break则会跳出循环,终止循环,不再执行下面的语句。

    吾非同
  • Python基础06 循环

    循环用于重复执行一些程序块。从上一讲的选择结构,我们已经看到了如何用缩进来表示程序块的隶属关系。循环也会用到类似的写法。 for循环 for循环需要预先设定好循...

    Vamei
  • #PY小贴士# for 循环定义的变量,循环外可以用吗?

    我们知道,在 python 中要获取一个变量的值,必须是先给它赋值过,不然就是未定义。那么这个 i,代码中没有显式的赋值,在循环体之外还可以用吗?

    Crossin先生
  • Day 1-Java-imooc-4.流程控制语句

    课程地址:http://www.imooc.com/learn/85 总结图片来自 http://www.imooc.com/article/10535 ? 本...

    杨熹
  • 【Python】记录程序运行时间

    后端技术漫谈
  • java自定义构造二叉树及其遍历

    首先:二叉树的建立 首先,我们采用广义表建立二叉树(关于广义表的概念,请查看百科的介绍:http://baike.baidu.com/view/203611.h...

    张俊怡
  • 能否简单地讲清楚循环语句?

    曾经听一位有名望的计算机专业老师跟我讲过一件事,他说他的历届学生在学习语言课程的时候,遇到循环语句,总是感觉比其他流程控制语句理解起来更为难一些。特别是一些女生...

    高一峰

扫码关注云+社区

领取腾讯云代金券