前言:本专栏以Python为主题,并尽可能保持每星期两到三更,直到将Python的基础知识浅析和讲解完毕,同时,有一定基础的同学可以移步 Python实战专栏 。
背景:对于该系列文章的前三篇,自己读过的同学应该能发现一个问题,那就是我们写的所有代码都是一路“直行”的,无法根据指定条件选择不同的途径,这显然是不合理的。就好像你要到达一个目的地,只会盲目直行,不会根据特定条件停止或者转弯,那大多数时候你是无法到达这个目的地的。在Python的程序设计就,就提供了用于“转弯”的语句,即 if,elif,else这三个关键词组成的语句。以下将以Python中的分支语句为主题进行展开。
- Python中的分支的主要结构(3种)
# 第一种
首先,上面展示了三种Python中的分支结构。先看看第一种,仔细观察,会发现这么一个特点,那就是,以 if为关键词,声明这是一个分支,然后 if 的后面跟一个条件,这里用condition来概括,那么这个条件有什么用呢?是这样子的,以 5==6 这个代码为例,这是一个判断左右两边数字是否相等的条件,如果相等,那这行代码运行之后会得到 Ture ,但不会显示在屏幕上,对于 if来说,如果与它同行并且在其后面的 码运行只会返回了 True 或者数字 1,那么就会满足这个 if 分支下面的代码执行条件,该分支下面的代码块就会被执行。再看看 if 所在行的那个一个冒号,它标志这条件的结束,即 if 和 冒号之间包裹着条件。接着看 if 的下一行,你会发现 dosomething 与f的水平距离不一致,这个距离一般为一个 Tab 键的长度,这有什么用呢?它的作用就是为了区分代码的层次等级,以这个 if 分支为例,dosomtehing与 if 的水平距离为一个 Tab 键,那这个dosomething就从属于if。如果 if 是爸爸,那 dosomething就是亲生子女。当然子女如果再繁殖,那之前的子女就会变爸爸,之前的爸爸就会变爷爷了,依次类推(这属于分支嵌套的范畴,暂不展开讨论)。
第一种讲完,接下来是第二种。仔细观察,发现第二种与第一种的差别是,多了一个 else。这如何理解呢?else就是否则的意思,if 是如果。举个例子,如果今天下雨我就不出去玩,否则我就出去玩。这个例子中 “今天不下雨” 对于第二种代码中的 condition ,而else与冒号之间并没有所谓的condition,这是因为没有必要,我只要对 “今天不下雨” 这个条件进行否定就行了,没有必要再列举出其他条件(如果想列举请看第三种),而出不出去玩就是满足某个条件之后要去做的事情了。所以else可以理解为,"如果满足排除condition的一切其他条件"。这么看,else也和if的本质上都是一样的,都是对某个或者多个条件进行判断,else只是偷了一下懒,不过它很大度,满足不了 if 的条件都能满足它。至于else下一行的do_another_thing就无需多言了,和if中的dosomething一样,都是满足某个条件之后要执行的代码块。
最后是第三种,生活中的条件不可能全部都只有两种。在Python中,如果你想处理多个条件,那第三种分支结构很有必要,第三种分支结构特点是,先if,然后 if 后面可以有多个elif,elif的意思的如果不满足前面条件并且满足elif后面跟着的条件那就执行该elif分支下面的代码块,这么讲可能不好理解,没关系,下面有举例。并且elif的后面可以跟着else,当然也可以省略。
以上是一些理论,下面我们将通过一个两个程序来运用这些知识。
# 设定初始用户名
account = '123456'
# 设定初始密码
password = '123456'
# 接受用户输入的用户名并存储到 ac 这个变量中
ac = input("请输入用户名:")
# 接受用户输入的密码并存储到 pwd 这个变量中
pwd = input("请输入密码:")
# 判断输入的用户名与给定的用户名是否一致,如果一致就继续判断密码与给定的密码是否一致
if ac==account:
# 如果给定的密码与输入的密码一致,输出 登录成功 这个信息
if password == pwd: print("登录成功!")
# 否则(即给定密码与输入的密码不一致),输出 密码有误 这个信息
else: print("密码有误")
# 否则(即输入的用户名与给定的不一致),输出 用户名有误,登录失败 这个信息
else: print("用户名有误,登录失败!")
上面这个程序的目的是,从键盘中接受用户输入的账户与密码,再与给定的账户与密码进行比对以达到验证登录的目的。代码注释已附上。
age = input("输入你的年龄:")
# 通过 input 函数接受的输入类型都是字符串,后续为了用数字进行比较,故此选用int函数将字符串转为数字
age = int(age)
# < 用于 数字的大小比较,即左边的是否小于右边
if age<0: print("年龄不会有比 0 小的吧?")
# <= 用于 数字的大小比较,即左边的是否小于或者等于右边,
# 只要满足小于或者等于这其中的任意一个条件,那么这个条件就是成立的
elif 0<=age<18: print("祖国的花朵!")
elif 18<=age<45: print("祖国的中坚力量!")
else: print("前辈辛苦了!")
上面这个程序的目的是,从键盘中接受用户输入的年龄(千万要记得将其转化为数字),再根据特点条件输出不同提示信息。代码注释已附上。
2.Python中的分支的结构常用词
代码演示
if
以上代码展示是表格中几个关键词的用法,建议都要熟练掌握。