【Python教程】九、只要学不死,就往死里学|while 循环和逻辑运算

更多教程请私信~

来源:思路实验室 

作者:室长

大家好,欢迎收看思路实验室出品的Python入门教程,我是室长。

上一期我们讲到了for循环,这是个非常有用的语句,但并不能覆盖所有的情况。

有时候我们不知道要循环多少次才能满足我们的要求。回想一下高考之前,是不是有这样一句口号荡气回肠:

往死里学,学多少次呢?不知道,只知道学不死的话就继续学。当然还有个Happy Ending,就是高考结束,不然这至死方休的也太悲剧了。在这种情况下for循环就显得有些无能为力了。所以Python中还存在另一种循环:while循环

While翻译成中文就是当……的时候。这和我们之前讲if语句时说的如果……就……有相似之处,都包含了对某些条件的判断,因此while和if一样,后边接的也是bool值,最后跟一个冒号。(看到冒号想到什么了?)

我们把上边的例子写成伪代码:

while 是不是没学死 and 是不是没高考完:

    往死里学...

代码很好理解,但是在while后边跟的表达式里多了一个and,之前我们没有提到过这个词,但懂英语的同学已经懂了,这是“并且”的意思。在学数学和物理的时候应该有讲过逻辑和逻辑电路,讲过“与或非”。当多个条件同组合成一个大条件,这多个条件之间的关系不同,大条件得出的结论就不同。

“与”就是多个条件同时满足时,大条件才满足。举例:如之前的伪代码描述的,什么人需要往死里学?没学死且没高考的人。因此判断这个人是不是不用再往死里学了,有两个判断条件:这个人是不是没学死,这个人是不是没高考完。当这两个条件同时成立时,对不起,请继续往死里学。反之如果学死了或者高考完了,或者高考完之后恰好学死了,得到的结果都是:恭喜你,不用往死里学了!(天堂/大学欢迎你)

“或”就是多个条件里只要有一个满足时,大条件就满足。举例:考试交卷就是一个典型的“或”判断。大条件是能否交卷,可以拆分成两个判断条件:卷子写没写完,考试时间结束没结束。这两个条件满足一个就可以交卷,而并非是必须写完了卷子并且考试时间结束才能交卷。

“非”就是只要某个条件满足,带“非”的条件就是不满足。

另外还有一种关系叫“异或”,就是两个条件的满足情况不同,大条件就满足。

而Python中的bool值也是可以进行“与或非”的操作的:

“与”:条件1 and 条件2 and ... and 条件n;

“或”:条件1 or 条件2 or ... or 条件n;

“非”:not 条件;

“异或”:条件1 ^ 条件2。

注意Python的乘方运算符是“**”,而不是“^”

虽然while循环弥补了for循环的某些盲区,但其实并不建议大家大范围的使用,只要能用for循环就不要用while循环。因为如果一旦while后边的bool值始终为真,那这个程序就无限循环下去了:

不过遇到这种情况倒也不用慌,虽然程序像吃了炫迈一样根本停不下来,但我们还是可以通过外力把它停下来。点击这个代表停止的红色小方块:

总算是停下来了。可以看到解释器告诉我们程序是被Ctrl+C打断的。这意味着我们刚才点的红色方块的作用相当于我们在键盘上按了Ctrl+C。那么当我们不在PyCharm上运行代码时也可以按Ctrl+C来强行中断程序。

很多时候我们虽然写出了一定的判断条件,但可能随着判断的内容越来越多越来越复杂,我们自己也不知道实际上这些条件判断出来会怎样。一不小心就会出现条件一直符合的情况从而导致无限循环。但好在Python还有一个方法在循环中就结束循环,就是break语句。

先看一下代码的结构。我们先定义一个整数变量 a = 1,然后进入while循环。然后先打印一下a和一句话。随后把a的值+1以后再重新赋给a。注意这里的“a = a + 1”,大声告诉室长,一个等号是什么意思?

赋值!

没错,a = a + 1 相当于生成了一个新的a,它的值是旧的a + 1,或者可以理解为 a增加了1。在一个循环里写一个a = a + 1通常用于展示这个循环到了第几轮了。当然这个赋值方法还有另外一种写法:a += 1。这比刚才又简洁了一些。能够举一反三的同学已经知道了,我们还可以-=,*=,/=, **=……基本的数学运算都可以这样用。

随后跟了一个判断,如果a ≥ 5了,我们就用break跳出循环,随后再打印一句“循环结束了!”庆祝一下:

可以看到,循环到第四次的时候就结束了。在第四次一开始a=4,在a=a+1后a变成了5。随后再对a做判断,a 符合了大于等于5的条件,进入到了if语句,而在break之后我们想打印的“循环结束了!”并没有被打印出来。这是因为break语句归心似箭,不顾后边的语句直接跳出循环,像极了到下班时间的你。

这一期我们了解了while循环的特点和使用方法。虽然花了一期的篇幅来介绍,但希望大家还是记住,不到非必要的时候不要使用while循环,有无限循环的风险。到目前为止,其实我们已经学到了足够多的基础知识,可以用来做一些东西了,但恰恰是由于这些东西太基础,我们做什么东西可能都要从头一点一点做起,这不符合我们“懒”的原则。正所谓工欲善其事必先利其器,我们需要点好的工具来帮我们实现目的。请关注下一期:站在巨人的光头上|初识Python模块

欢迎关注:

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值