流程控制"/>
实验 4 Python 的流程控制
实验 4 Python 的流程控制
目录
实验 4 Python 的流程控制
Python 文件的创建和执行
流程控制
条件判断
比较大小游戏
更多判断
循环控制
💡 while 循环
💡 break 和 continue
玩转实验环境
总结
这节课,来点更专业的
你终于来了,快搬个小板凳坐下,今天我们来学点更专业的东西~
在上节课中,我们都是在 Python 的 命令行交互环境中学习 Python。但在实际的开发工作中,我们要把代码写进一个文件里,这样不管拿到哪里都可以执行,而且方便修改和调试。
所以在开始之前,我们先学习一下怎么创建 Python 文件并执行。
知识点
- Python 文件的创建和执行
- 流程控制
- 条件判断
- 循环
Python 文件的创建和执行
在开发过程中经常被使用到的 Python 程序,是一个或多个的脚本文件,通常会以 .py
作为文件后缀。当完成脚本的编写后,可以用 Python 解释器来运行 Python 脚本。
在实验环境中,你可以使用 vim、sublime 或 gedit 来编写 Python 程序,这里以 gedit 举例:
💡 创建和打开文件
你可以通过两种方式,创建和打开 Python 文件:
1. 命令行方式创建
在 Xfce 终端中输入:
gedit test.py
这行命令的作用是:用 gedit
打开 test.py
文件;如果该文件不存在,则 创建
它并打开。
执行命令后,我们看到 gedit 弹了出来,而且文件名是 test.py
2. 在 gedit 中创建
还可以先打开 gedit 程序,再点击菜单栏的 文件
-新建
,即可创建一个新的空白文件。
💡 保存文件
在 test.py
文件中输入以下的代码内容:
print('hello shiyanlou')
输入完成后,按下 ctrl + s
或点击 保存
按钮,即可保存。
(如果你是在 gedit 中新建的文件,保存时请输入文件名 test.py
,并注意存放路径是否在 home
目录)
💡 执行 Python 文件
保存文件后,先关闭 gedit
,然后打开 Xfce 终端
,直接使用 Python3 解释器执行 test.py
:
python3 test.py
可以看到 hello shiyanlou
输出到了屏幕上。
流程控制
下面,我们来学习计算机系统中的一大核心知识——流程控制。
「 流程控制 」是一个程序的关键所在。简单的说,「流程控制」就是告诉计算机什么时候该干什么事。比如一个游戏中,你要让计算机清晰地知道 —— 什么情况下会掉血,按下什么键代表攻击,过多久能复活……
学会流程控制后,你就可以用程序做很多事,比如:
写一个扣税计算器:
写一个抽卡游戏:
接下来,我们先来学习流程控制中的条件判断。
条件判断
其实我们每天都生活在条件判断中:早上如果闹钟 ⏰ 响了,执行起床/赖床程序;如果到了 12 点,执行吃饭程序;如果到了 6 点,执行下班或放学……
如果有一天,你的女朋友对你说,“下班买 2 个西瓜回来”,你会这样执行:
换成 Python 代码,买西瓜的程序还是一样的,只不过把 如果
、否则
换成了 if
、else
。
挺容易理解的吧?其实就是用代码告诉计算机:什么条件下该做什么。
很多编程语言都会使用 if
、else
作为流程控制的关键字。 if
语句最简单的构成是这样的:
if SomethingHappen:DoThisCode
⚠️ 注意第 1 行末尾的冒号 : 和第 2 行的 4 个空格缩进,原因会在后面详解。
除此之外,Python 还加入了 elif
,即 else if
,方便执行更复杂的判断。
如:买 2 个西瓜,4 个苹果,5 根香蕉
代码如下(示例,非标准代码) :
if 看到卖西瓜的: #当满足条件时,执行内部的代码;如不满足,则跳到下一个语句块买 2 个
elif 看到卖苹果的:买 4 个
elif 看到卖香蕉的:买 5 根
else: # 如果上面的条件都不满足,则执行 else 内部的代码不买
比较大小游戏
让我们写一个比大小的游戏,进一步熟悉条件判断的语法:
在终端中输入 gedit compare.py
,然后在打开的 gedit 中输入:
a = int(input("Please enter a number: "))
## 让用户输入一个数字,用变量 a 接受
if a > 10: ##如果 a > 10,则执行内部的代码,反之跳过print('a > 10')## 请特别注意语句块内的空格缩进,请使用 4 个空格缩进。## 请特别注意语句块内的空格缩进,请使用 4 个空格缩进。## 请特别注意语句块内的空格缩进,请使用 4 个空格缩进。
elif a == 10:print('a == 10')
else:print('a < 10')
⚠️ 注意:以下五点,都很重要
- if、elif、else 后要加冒号
:
,告诉计算机这是一个判断语句,如满足条件,就执行语句块内部的代码。 - Python 使用严格的缩进,来区分代码块的执行级别。比如 if 下面的代码要缩进四个空格,代表的是 if 内部的功能;else 下面的代码同样要缩进四个空格,代表是 else 内部的功能。
- 推荐使用 4 个空格缩进;也可以在编辑器内,把
Tab
键改为四个空格,用Tab
键缩进。 - 用
input()
接受到的用户输入,类型为字符串string
,但字符串不能和整数比较大小,所以要用int()
函数将数据转换为int
整数类型。 - 使用
int()
函数,可以把括号里的内容转换为整数,但要注意:只有数字或纯数字的字符串才能转换,如'a'、'abc'这样的内容就不行;float 类型的数字会只保留整数部分。
保存文件,关闭 gedit
后,在终端中输入 python3 compare.py
,运行刚刚的程序。
输入数字后,屏幕上打印出了比较结果,第一个条件控制程序成功
更多判断
💡 在一个判断中,还可以嵌套另一套判断,比如当男人喜欢上一个人时:
if 那个人是女人:if 单身:你可以追求她else:放弃
else:成为基友
💡 还可以使用 and 和 or 进行综合控制:
if 那个人是女人 and 单身: # A 和 B必须同时满足才能执行你可以追求她
else:成为基友
又比如:你今天不想吃饭,除非吃火锅或者烧烤:
if 火锅 or 烧烤: # A 或 B 满足一个即可执行吃饭
else:不吃饭
在程序开发过程中,当遇到一些代码暂时不写(等到后面写),又不想程序在执行时报错的情况,可以使用 pass
关键字,程序执行遇到 pass
就会跳过这里的代码块继续执行后面的代码:
>>> a = 3
>>> if a<1:
... print("a<1")
... else:
... pass
...
>>> #程序没有报错
循环控制
对人类来说,「循环」糟糕透了,它往往意味着重复和枯燥。但大多数人都在循环中工作和生活,比如收集用户信息、下载 500 张图片、上 12306 抢春运的火车票、给 20 个亲戚解释你不是修电脑的……想想就如噩梦一般,相信没有人想过这种流水线的生活。
但有了计算机,一切都大不一样了:它任劳任怨、不会抱怨,而且工作速度比人快成千上万倍。你只需要制订好一些规则,然后在旁边泡杯茶,看云展云舒即可。
Python 中包含两种循环方式,一种是 for 循环
,一种是 while 循环
。
💡 for 循环
for
循环主要用于对一个范围内的每个元素进行指定操作。
语法如下:
比如在一个班级里,点名册就是一份列表,每个姓名都是一个元素。现在你是班长,每天上课前的点名太费劲了,你需要一个点名程序。
用 for
循环,2 行代码即可实现该功能:
namelist = ['Sophia','Emma','Olivia','Ava','Mia','Isabella','Zoe','Lily','Emily','Madison','Jackson','Aiden','Liam','Lucas','Noah','Mason','Ethan','Caden','Logan','Jacob']
# 点名册
for i in namelist:print(i)
在环境中练习一下:
💡 提示: namelist
可以通过右侧工具栏中的「剪切板」粘贴进去;print()
前同样要注意 4 个空格的缩进。
💡 range() 函数
如果需要处理一组数字列表,并且数字列表满足一定的规律,可以使用 Python 的内置函数 range()
(范围)。
使用 range(x)
函数,可以生成一个从 0 到 x-1 的整数序列,比如我们想打印 0 到 9 的数,可以这样写:
for a in range(10):print(a)
还可以用 range(a,b)
取某个区间的数,比如要打印 1 到 10 ,你可以写:
for a in range(1,11):print(a)
⚠️ 注意: range(a,b)
包头不包尾,尾数要 + 1 。
🔥 小练习:帮依萍写日记
书桓走后,可怜的依萍每天只能对着日记,遥寄思念。现在,请你用 for 循环帮依萍写出“书桓走的第 n 天,想他”,一直写到第 10 天。
💡 提示:
- range(a,b)
- for ... in ...
- print('书桓走的第 {} 天,想他'.format(i))
- 如果忘了
.format()
的用法,可以在上节实验文档中查阅一下
💡 while 循环
另外一种循环是 while 循环
,它的语法和用途都和 for 循环
有些不同。
for 循环
适用于 已知循环次数 的循环,所以后面跟的是次数或区间,到达指定次数就停止。
但现实生活中,我们往往不知道要循环多少次,才能达成目标。比如“愚公移山”,愚公不知道门前有多少座山,但只要门前有山,就要盘它,这种情况我们要怎么写?
while 循环
可以帮你解决这个问题。while
后面跟的是一个条件,只要条件满足,这个循环就会一直进行下去。
具体语法如下:
有了 while 循环
,愚公可以这样移山:
while 山还在:盘它!
🔥 小练习: 下面,我们来用 while
循环,打印 1 到 10 的数字,亲手感受一下 while
循环有哪些不同:
a = 1
while a <= 10: ##同样注意冒号和语句块缩进print(a)a = a + 1
这个程序是这样运转的:
一开始,a 的预设值为 1。
来到第二行的 while 循环,此时 a <= 10,满足条件,进入循环。
进入第三行,执行循环中的命令,打印 a 的值。
进入第四行,把 a 的值加 1 ,a 的值变成了 2,至此一轮循环结束。每轮循环结束后,程序会跳转到循环开头(即图中的第二行),再次判断是否满足循环的条件,如满足则再次执行循环。在这里,a = 2 ,2 <= 10,满足条件,则再次进入循环……
……
直到 a > 10 为止,循环条件不再满足,循环停止。
再总结一下两种循环的区别:
💡 break 和 continue
💡break
在循环中,我们可以使用 break
和 continue
这两个关键字,来进一步控制流程。
break
表示停止当前循环,如:
for a in range(10):if a == 5:breakprint(a)
程序会打印 0到 4 之间的数字。
💡continue
continue
表示跳过当前循环轮次,去执行下一轮循环。
比如这次我们想打印 1 到 10 的数,但不想打印 5 ,代码可以这样写:
a = 0
while a < 10:a = a + 1if a == 5:continueprint(a)
至此,流程控制 就暂时介绍完了。流程控制 在编程中非常重要,请下来多多练习和总结,后面还有一个挑战等待你完成。
玩转实验环境
为了大家能更好地使用实验环境,我们有必要简单介绍下右侧工具栏的功能。
相信很多同学都发现了,我们右侧的工具栏有很多按钮,它们的功能分别如下:
💡 切换界面
实验启动后,默认进入的界面是图形界面(桌面),如果使用图形界面感觉较卡,可以尝试切换到字符界面。点击该按钮可以在两种界面之间切换。
💡 剪切板
学习界面工具栏上有一个剪刀按钮,点击此按钮会打开剪切板。
剪切板用来在外部与实验环境之间进行拷贝与粘贴。
向环境拷入内容:如果要拷贝内容到实验环境,只需将内容复制粘贴到剪切板的输入框,点击保存按钮,实验环境内部即可使用右键粘贴到这些内容。
从环境拷出内容:在环境中使用右键选择复制,然后打开剪切板,剪切板中的输入框显示内容即实验环境中的系统剪切板内容。
💡 共享桌面
点击共享桌面,可以把自己的桌面分享给其他人。共享桌面的主要应用场景是演示操作和协作答疑。目前实验楼的楼 + 课程都由助教提供共享桌面的实时答疑服务。
点击共享桌面会弹出 2 个链接,分别对应共享桌面的两种模式:
- 只读模式:对方只能远程观看你的操作,主要应用在远程教学演示操作。
- 协作模式:对方可以在你的实验环境中进行操作。当你遇到问题时,就可以把协作链接分享给朋友或老师,以便对方进行远程协助。
根据需要将对应的链接发给朋友,朋友即可访问你的桌面。
💡 下载代码
点击 下载代码 按钮,会将实验环境中的 /home/shiyanlou/Code 目录自动打包并下载到本地。你可以将代码等需要导出的文件放到这个目录下。
💡 上传文件
点击 上传文件 按钮,可以上传一个大小不超过 5M 的文件到 /home/shiyanlou/Code 目录下。
💡 环境信息
点击 环境信息 按钮可以看到当前 shiyanlou 用户的默认密码,当然你也可以使用 sudo passwd shiyanlou
命令自己设置。
💎 保存环境(会员)
开通会员后,支持保存 2 个环境和联网等功能,相当于拥有了 2 台可以长期保存的专属实验机。
当你实验没有做完、或者临时有事需要离开时,就可以把环境保存起来,下次实验时继续使用该环境,里面的配置、代码等等都不会改变。
💎 SSH 直连(会员)
如果你的网络较慢,或者实验环境较卡,可以使用 SSH 直连的方式连接实验环境。
SSH 直连指的是使用本地的 SSH 客户端连接实验环境,把实验环境当成一台远端的 SSH 服务器来使用,连接后在 SSH 客户端中进行实验操作。由于需要联网,SSH 直连也是会员才能使用的功能。
总结
我们来回顾一下今天的知识点:
- Python 文件的创建和执行
- 流程控制
- 条件判断
- 循环
请课下把这些知识整理在你的 「脑图」 中,类似这样:
💡 不要忘了作业:
课后,我们为你准备了一个挑战 —— 用前面所学的知识完成一个小游戏。我们趁热打铁前进吧!
更多推荐
实验 4 Python 的流程控制
发布评论