Hi 大家好,我是王可乐。上一节课里,可乐带大家一起学习了条件语句的概念和用法,现在,我们已经不再只能写出从上到下一句一句执行的代码了,而是可以加入条件判断逻辑,选择执行部分代码。
今天的课程里,可乐再为大家介绍一下循环语句。我们说计算机的一个特长就是快速而不知疲倦的重复执行一个工作,学会了循环语句,你也可以让计算机帮你完成枯燥的重复工作哦。
Python 中提供两个循环控制语句,我们先来看一下比较简单的 WHILE 语句。首先还是来看一个例子:
我们首先定义两个变量。定义 x 等于 1,并定义 total 等于 0。然后我们用 while 关键词开始循环语句,while 关键词后面是一个条件语句,x
然后我们打出来四个空格,开始在 while 语句内部写循环体,也就是要重复执行的部分。在循环体内,我们把当前的 x 值加到 total 上面去,输入 total += 1。还记不记得 += 这个运算符,这句话的含义就相当于 total = total + x,别忘了哦。然后我们让 x 增加 1,再输入四个空格,然后输入 x += 1,回车,这句话则相当于 x = x + 1。
一个 while 循环的意思是,当循环条件满足时,就执行循环体的内容;循环体执行完成后会再次验证循环条件,如果仍然满足条件,那就再次执行循环体,如此反复执行;直到验证循环条件失败,那么就跳出循环体,结束循环语句的执行。我们的这个循环语句就相当于从 x = 1 开始,依次为 total 加上 1,加上 2,加上 3,直到循环执行过 100 遍,为 total 加上 100 之后,x 的值变成了 101,此时 x
我们来打印出 total 的值看一下,从 1 开始加到 100,结果确实是 5050,和高斯算出来的一模一样哦:-)
除此之外,和 IF 条件语句类似,WHILE 循环还支持 ELSE 关键字,它的作用都是在条件不满足时执行 ELSE 语句块。例如,我们稍稍修改一下上面的例子,我们重新恢复 x 和 total 的值为 1 和 0,然后写下计算 1 到 100 加和的 WHILE 循环:
然后回车执行上面的语句。我们发现 Python 为我们打印出来了 x 最终的值 101。WHILE 循环语句的 ELSE 语句块可以用于在最终条件不满足时,执行一次 ELSE 语句,在我们的例子里,当循环已经运行了 100 遍后,此时 x 为 101,条件不满足,ELSE 语句执行,打印出来此时的 x。
循环语句会一直执行下去,一直到 while 后面的条件不满足为止。那么如果 while 后面的条件永远都不会不满足,会发生什么情况呢?答案就是,循环就会这么一直执行下去了。实际上,如果写代码不小心,很容易出现循环无限执行下去的问题,例如我们刚才的例子:
我们看到,>>> 符号不再弹出来了。这是 Python Shell 就陷入了一个无限循环,它不停的为 total 加上 1,然后判断 x 是不是小于等于 100,而 x 则永远是 1,条件永远满足,循环就这样不停重复执行循环。因为 Python 在不停的工作,因此 Shell 就没有弹出来 >>> 提示符,我们也就不能继续向 Python Shell 发号施令了。
如果我们想结束这个循环语句的执行,只能在 Python Shell 里按下 Ctrl+C。按下这组快捷键后,也就是向正在执行的 Python 程序发送了一个停止信号,这个信号也叫做 Interrupt 信号,于是 Python 提示我们出现了一个 KeyboardInterrupt,并且中断了这个无限循环,可以继续听候指令了。
除了循环条件之外,Python 还有两个关键字用来控制循环的执行,它们就是 BREAK 和 CONTINUE,前者负责跳出循环,后者则负责终止当前循环体的执行,直接进入下次循环。我们还是来看一下具体的例子,这一次,我们来计算一下从 1 到 100 之间,所有能被 3 整除的数字的加和。
我们看到,计算结果是 1683 (输入 print(total)),很容易验证结果是正确的。在上面这段程序里,break 语句用于在 x 超过 100 后结束循环,结束整个循环语句。如果一个 WHILE 循环还有 ELSE 子句,那么以 break 方式跳出语句时,ELSE 子句并不会被执行。而 continue 语句则负责在 x 不满足整除 3 的条件时,直接结束当前循环的执行,然后继续执行下一次循环。
当然,上面的程序冗余拖沓又不好理解,这里只是为了给大家演示 break 和 continue 的用法。可乐鼓励大家尽量写简洁漂亮的代码,用最清晰的代码来表达逻辑。
以上介绍这些,就是我们今天的内容。这节课里,可乐带大家学习了 while 循环语句的使用方法和执行逻辑。学习了这节课,大家可以再次回去看一下我们第二节课介绍的猜数字游戏代码,里面就有一个 while 循环,用于让玩家没猜对的时候继续猜数字。
在下一节课里,可乐会接着今天的话题,继续为大家介绍另一个更强大的循环语句 FOR 语句。我们下期见咯。
往期课程:
《0基础学Python之五:字符串(上)》
《0基础学Python之六:字符串(下)》
《0基础学Python之七:条件语句》
领取专属 10元无门槛券
私享最新 技术干货