python while循环国际棋盘效果 while循环python例子_while循环

大家好,欢迎回到我的专栏,接下来将会是第一模块第七期的内容。

第一模块(Python语言基础)环境搭建与第一个脚本

变量,用户输入与代码格式

Python的数据类型(字符串,数字与布尔值)

逻辑运算符与流程控制

Python的数据类型(列表,集合与元组)

Python循环(for)

Python循环(while)

Python的数据类型(字典)

Python函数(函数的定义)

Python函数(函数的返回)

第一模块应用(可交互的文字版扫雷,框架)

第一模块应用(可交互的文字版扫雷,实现,第一部分)

第一模块应用(可交互的文字版扫雷,实现,第二部分)

python while循环国际棋盘效果 while循环python例子_while循环_02

python while循环国际棋盘效果 while循环python例子_while循环

python while循环国际棋盘效果 while循环python例子_while循环_02

while循环的含义

while,英文“当...时”;“在...期间”。

while循环的意义在于,当某个条件被满足时,不断运行循环内部的内容,直到这个条件不能再被满足。例如以下就是一个while循环:当游泳池中的水不够2米深时,加水。加水会一直循环,直到“游泳池中的水不够2米深”这个条件不再满足,即水已经有2米深,加水这个动作就会停止。

又例如另一个while循环:当存款没到100万时,持续工作。工作这个动作会一直持续,直到存款达到100万,才会停止。

在编程中我们会经常遇到需要套用类似的逻辑才能解决的事,接下来我们就来学习如何用Python建立一个while循环。

建立一个while循环

基本语法

举个例子,我们令x等于0,当x小于5时,print一点东西并且将x的值加1:

注意,上方的代码块中,如果去掉最后一行,那么循环将进行无数次,因为x < 5这个条件会永远成立。在while循环中,要注意循环的逻辑,要避免无限循环的出现。

while...else...

while else是一种进阶的写法,它的逻辑如下:

else内的内容会在循环条件不满足时运行一次,可以使用下面的代码进行测试:

while True

while True是常用的一种写法,是以True这个布尔值本身作为条件。while循环继续运行的条件是while后声明的条件为真,所以以while True为开头的循环会无限次执行,直到我们使用break关键字跳出循环:

为了流畅运用while True,我们需要讲解一下break这个关键字的用法。顺带也讲一下它的兄弟,continue关键字和pass关键字。

break,英文“中断”;

continue,英文“继续”;

pass,英文“略过”。

break在python中独占一行,不需要输入其他内容。当编译器在一个循环中(for循环或者while循环)处理到break关键字时,会直接中断并跳出当前层的循环。强调当前层是因为如果在嵌套循环的内层循环中遇到break,只会跳出当前的内层循环,不会跳出外层的循环。同样的逻辑适用于continue。

continue在python中独占一行,不需要输入其他内容。当编译器在一个循环中处理到continue关键字时,会回到当前层循环的开始位置重新开始当前的循环,也就是循环内写在continue后面的内容在这次循环中不会被编译。

我们使用同一个例子来举例说明break和continue的区别。continue在应用中使用频率较低。首先是break:

continue:

分别运行两段代码看看结果。

pass语句的含义是“什么也不做”。运行这行代码的意义就是什么都不做。它通常在设计一个项目时使用。比如在一个项目中,你知道在某处一定会使用一个for循环,但你现在暂时不想往里填东西,如果写成这样,会报错:

其原因在于你写了一个for循环,并且进行了一次缩紧,编译器是期待着你至少能给它点东西的,现在你什么都没写就过去了,编译器自然是很不高兴。

如果想留一个什么都不做的循环在代码中,我们可以做的就是暂时在里面放一个pass,如下。这样就可以避免报错:

再提一次,循环的学习如果遇到问题,Python Visualizer是一个很好的帮手,它可以帮你一行行运行代码并实时显示所有变量的情况,使循环运行的逻辑可视化。

Python Visualizer: http://www.pythontutor.com/visualize.html#mode=edit

python while循环国际棋盘效果 while循环python例子_while循环_05

实例1:用while循环计算1至100的和

尝试使用while循环,计算:

1 + 2 + 3 + ... + 99 + 100

python while循环国际棋盘效果 while循环python例子_while循环_05

一些字符串的方法

while循环有一个常见用法,就是用来判断用户的输入,也就是input()函数返回的值是否符合要求。因为代码是自己写的,代码中所有的内容都可以自己控制。但用户的输入内容是无法控制的,使用while循环可以在用户输入不符合你的要求时让用户重新输入,直到满足条件为止。在实际应用这个功能前,我们需要先学习一些字符串的方法。

string.count()

count,英文“计数”

这个方法可以输入3个参数,分别是目标字符串;起点,默认为字符串开头;终点,默认为字符串结尾。起点和终点由索引值表示。这个方法以整数的形式返回对象内目标字符串的数量。

string.isdigit() / string.isalpha()

digit,英文“数字”

alpha,即alphabet, 英文“字母系统”

这两个方法都不需要参数。.isdigit()方法返回布尔值,若对象只包含数字,则返回True,否则为False;.isalpha()方法返回布尔值,若对象只包含字母,则返回True,否则为False。

string.islower() / string.isupper()

lower,即lowercase,英文“小写字母”

upper,即uppercase,英文“大写字母”

这两个方法也不需要参数,均返回布尔值。这两个方法的逻辑与上面的.isalpha()和.isdigit()不同。对于.islower()方法,只要对象中不包含大写字母,即为True,否则为False;对于.isupper()方法,只要对象中不包含小写字母,即为True,否则为False:

如果大家对string的所有可用方法感兴趣,可以浏览以下网页:

https://www.w3schools.com/python/python_ref_string.asp

拥有iPad的朋友可以通过Swift Playgrounds学习编程的思维,苹果应用商店可下载,这是一个小游戏性质的app,通过使用函数,循环等功能控制小人捡起所有的宝石即可过关。虽然这个软件中使用的语言为Swift,但编程上的思想是互通的。在Swift Playgrounds中学习"Learn to Code 1"和"Learn to Code 2"即可。

python while循环国际棋盘效果 while循环python例子_while循环_05

实例2:回文数测试

根据用户输入的内容,判断这个数字是不是回文数。需要判断用户输入的内容是否为数字,若不为数字则需要重新输入。

回文数:一个数字其本身与其倒序排列相等,即为回文数。例如121,458854即回文数。

参考输出如下:

python while循环国际棋盘效果 while循环python例子_字符串_08

图1,实例2参考输出图

python while循环国际棋盘效果 while循环python例子_while循环_05

实例3:密码测试器

你需要设计一个程序监督用户设置密码,密码要求如下:至少为10位,不能超过20位

必须带有大写和小写字母

必须带有数字

不能带有以下符号:,.!?(){}[]

提示:或许需要用到下方代码块中的内容,在列表专题中有提到过,现在复习一下:

参考输出如下:

python while循环国际棋盘效果 while循环python例子_while循环_10

图2,实例3参考输出图

python while循环国际棋盘效果 while循环python例子_while循环_02

python while循环国际棋盘效果 while循环python例子_while循环

python while循环国际棋盘效果 while循环python例子_while循环_02

本期挑战

实例4:可交互列表

根据用户的输入数字N,创建一个含有N个随机0-100整数的列表。

列表创建后用户可以与列表互动,包括查看内容,增加内容、删除内容或是计算平均数。用户可选择随时退出程序,亦或是重新创建列表。

若新增内容,则用户输入一个整数,这个整数会被添加在列表末尾,必须为整数。

若删除内容,则用户输入一个索引值,对应的内容会被删除。

若重建列表,则用户输入一个N,重新生成含有N个整数的列表。

若查看内容,则打印内容。

若计算平均数,则打印平均数。

若退出程序,则退出循环。

在整个过程中需要判断用户的输入是否合法,若无效,则要求用户重新输入。

交互画面参考如下:

python while循环国际棋盘效果 while循环python例子_python循环的基本思想_14

图3,实例4交互,1

python while循环国际棋盘效果 while循环python例子_字符串_15

图5,实例4交互图,2这个实例是在模仿一个很简单游戏的运行逻辑。实际上我们平时玩的游戏,都是在一个无限的循环中运行的,假设你的游戏以60帧每秒运行,其意义实际上是这个循环1秒钟运行60次。当我们选择退出游戏时,实际上就是通过一串代码结束了这个循环。

python while循环国际棋盘效果 while循环python例子_while循环_02

python while循环国际棋盘效果 while循环python例子_while循环_05

python while循环国际棋盘效果 while循环python例子_while循环_02

实例答案

python while循环国际棋盘效果 while循环python例子_while循环_02

python while循环国际棋盘效果 while循环python例子_while循环

python while循环国际棋盘效果 while循环python例子_while循环_02

无论你是从第一期一直看到了现在,或是这篇专栏是你第一次看我的专栏。可能你已经开始发现,代码的逻辑开始变得复杂,平日里看似简单的一些功能,背后都是复杂的逻辑流程。不同于开始时的顺水推舟,现在的你可能需要一点时间才能理解实例中的内容,甚至对其中的某些逻辑百思不得其解。但是相信我,这是每个想把编程当成真正工具使用的人所必经的道路。

我在整个流程中并没有避免那些作为一个学习者而言有困难的问题,例如上一期的实例6与这一期的实例4。本模块最后的项目更是拥有比之前遇到的所有的实例更为复杂的逻辑和更为庞大的规模。实例的设计实际上就是在不超出当前范围的前提下,挖掘知识的深度。我坚信只有深入的练习才能够在使用中做到游刃有余。在这个过程中,一定程度的痛苦是必然的。当我说我要攻读IT研究生时,朋友们都打趣说让我注意保养头发,大家都对这个行业的辛苦有共识。即使你学习编程不是为了从事IT行业,但编程的学习是不断且频繁突破舒适圈的过程,这个过程从来就伴随着艰辛。

不要怀疑自己,绝大多数在键盘上游刃有余的程序大佬,都曾经在某个阶段对着电脑屏幕抓头发,和现在的你一样。

谢谢大家,本期专栏就到这里结束了,下一期介绍的将是字典(dictionary)的内容。

2021.2.20