编程时经常需要检查一系列条件,并据此决定采取什么措施。在Python中,if语句让你能够检查程序的当前状态,并采取相应的措施。
一、一个简单示例:
假设你有一个汽车列表,并想将其中每辆汽车的名称打印出来。对于大多数汽车,应以首字母大写的方式打印其名称,但对于汽车名'bmw',应以全大写的方式打印。下面的代码遍历这个列表,并以首字母大写的方式打印其中的汽车名,不过对于'bmw',则以全大写的方式打印:

二、条件测试:
每条if语句的核心都是一个值为True或False的表达式,这种表达式称为条件测试。
检查是否相等
网站采用类似的方式让用户输入的数据符合特定的格式。 例如,网站可能使用类似的测试来确保用户名是独一无二的,而并非只是与另一个用户名的大小写不同。用户提交新的用户名时,将把它转换为小写,并与所有既有用户名的小写版本进行比较。执行这种检查时,如果已经有用户名'john'(不管大小写如何),则用户提交用户名'John'时将遭到拒绝。

检查是否不相等:
要判断两个值是否不等,可结合使用惊叹号和等号(!=),其中的惊叹号表示不,其他很多编程语言中也是如此。



检查多个条件:
使用and检查多个条件:
要检查是否两个条件都为True,可使用关键字and将两个条件测试合而为一。如果每个测试都通过了,整个表达式就为True;如果至少一个测试没有通过,整个表达式就为False。


使用or检查多个条件:
关键字or也能够让你检查多个条件,但只要至少一个条件满足,就能通过整个测试。仅当两个测试都没有通过时,使用or的表达式才为False。


检查特定值是否包含在列表中:
要判断特定的值是否已包含在列表中,可使用关键字in

检查特定值是否不包含在列表中
还有些时候,确定特定的值未包含在列表中很重要。在这种情况下,可使用关键字not in

三、布尔表达式:
布尔表达式,它不过是条件测试的别名。与条件表达式一样,布尔表达式的结果要么为True,要么为False。 布尔值通常用于记录条件,如游戏是否正在运行,或者用户是否可以编辑网站的特定内容: 在跟踪程序状态或程序中重要的条件方面,布尔值提供了一种高效的方式。
四、if 语句:
简单的if语句:


if-else语句:

上述代码之所以可行,是因为只存在两种情形:要么符合投票年龄,要么不符合。if-else结构非常适合用于让Python执行两种操作之一的情形。在这样简单的if-else结构中,总是会执行两个操作中的一个。
if-elif-else结构:
Python只执行if-elif-else结构中的一个代码块。它依次检查每个条件测试,直到遇到通过了的条件测试。测试通过后,Python将执行紧跟在它后面的代码,并跳过余下的测试。


使用多个elif代码块:

省略else代码块:

elif代码块在顾客的年龄超过65岁(含)时,将价格设置为20美元。这比使用else代码块更清晰些。经过这样的修改后,每个代码块都仅在通过了相应的测试时才会执行。
测试多个条件:
if-elif-else结构功能强大,但仅适合用于只有一个条件满足的情况:遇到通过了的测试后,Python就跳过余下的测试。这种行为很好,效率很高,让你能够测试一个特定的条件。 然而,有时候必须检查你关心的所有条件。在这种情况下,应使用一系列不包含elif和else代码块的简单if语句。在可能有多个条件为True且需要在每个条件为True时都采取相应措施时,适合使用这种方法。

首先创建一个列表,其中包含顾客点的配料(见❶)。 ❷处的if语句检查顾客是否点了配料蘑菇(mushrooms)。如果点了,就打印一条确认消息。 ❸处检查配料辣香肠(pepperoni)的代码也是一个简单的if语句,而不是elif或else语句。因此不管前一个测试是否通过,都将进行这个测试。 ❹处的代码检查顾客是否要求多加芝士(extra cheese)。不管前两个测试的结果如何,都会执行这些代码。每当这个程序运行时,都会执行这三个独立的测试。

第一个测试检查列表中是否包含'mushrooms'。它通过了,因此将在比萨中添加蘑菇。然而,Python将跳过if-elif-else结构中余下的测试,不再检查列表中是否包含'pepperoni'和'extracheese'。结果是,将添加顾客点的第一种配料,但不会添加其他配料
总之,如果只想执行一个代码块,就使用if-elif-else结构;如果要执行多个代码块,就使用一系列独立的if语句。
五、使用if语句处理列表:
通过结合使用if语句和列表,可完成一些有趣的任务:对列表中特定的值做特殊处理;高效地管理不断变化的情形,如餐馆是否还有特定的食材;证明代码在各种情形下都将按预期那样运行。
检查特殊元素:

如果比萨店的青椒用完了,该如何处理呢?为妥善地处理这种情况,可在for循环中包含一条if语句:

这里在比萨中添加每种配料前都进行检查。 ❶处的代码检查顾客是否点了青椒。如果是,就显示一条消息,指出不能点青椒的原因。 ❷处的else代码块确保其他配料都将添加到比萨中
确定列表不是空的:
下面在制作比萨前检查顾客点的配料列表是否为空。 如果列表为空,就向顾客确认是否要点原味比萨;如果列表不为空,就像前面的示例那样制作比萨:

首先创建一个空列表,其中不包含任何配料(见❶)。 ❷处进行简单的检查,而不是直接执行for循环。在if语句中将列表名用作条件表达式时,Python将在列表至少包含一个元素时返回True,并在列表为空时返回False。如果requested_toppings不为空,就运行与前一个示例相同的for循环;否则,就打印一条消息,询问顾客是否确实要点不加任何配料的原味比萨(见❸)。

使用多个列表:

文章转载自在下小黄,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




