四、if语句
大家在编程时需要检查一系列条件,并据此采取什么措施。例如比较两个数的大小;比较两个字符是否一致。比较之后又该执行什么?在Python中, if语句能检查程序的当前状态,并据此采取相应的措施。
在本章中,你将学习 条件测试,来检查相应的条件。你将学习几个简单的if语句,以及创建一系列复杂的if语句。你还会学到如何用if语句处理列表,以编写for循环来处理列表中的大多数元素等。
在这一讲中,你将学习了:
- 如何编写结果要么为Ture 要么为False 的条件测试
- 如何编写简单的if 语句、if-else 语句和if-elif-else 结构。在程序中,你使用了这 些结构来测试特定的条件,以确定这些条件是否满足。
- 如何在利用高效的for 循环的同时,以不同于其他元素的方式对特定的列表元素进行处理。
- Python就代码格式方面提出的建议,这可确保即便你编写的程序越来越复杂,其代码依然易于阅读和理解。
1.一个简单示例
cars
这几行代码是为了打印列表中的汽车名,其中汽车名‘bmw’要求以全大写的方式打印。
首先创建了一个名为cars的列表,随后用了一个for循环。if语句的意思是:如果汽车==‘bmw’,就以大写的方式打印(其中函数upper()是将字符串中所有字母大写)否则(else),以小写的方式打印。
注意:
1.for循环和if语句后的冒号不能少
2.在大多数语言中,两个等号(==)表示相等,一个等号(=)表示赋值。(a = b ,就是将b的值赋值给a)
2.条件测试
每条if语句的核心都是一个值为True或False的表达式,这种表达式称为条件测试。条件测试的术语是布尔表达式,布尔表达式的结果要么为True,要么为False。
Python根据条件测是的值为True还是False来决定是否执行if语句中的代码。
大多数测试条件都将一个变量的当前值同特定值进行比较,比较相等用两个等号(==),比较不相等结合使用感叹号和等号(!=)。
给a赋值为1,判断a是否等于1(或等于2),返回True(或False)。条件运算中还可以包含各种数学比较,如小于(<),小于等于(<=),大于(>),大于等于(>=)。
在Python中,两个大小写不同的值会被视为不相等
如果想将大写变为小写,可采用函数lower()
当判断条件不止一个时,可采用and和or检查多个条件。
使用and时,只有当两个条件都满足时,才返回True。
而使用or时,至少有一个条件满足时,就返回True。
使用if语句可以检查特定值是否包含在列表中
a是一个列表,包含b c d三个字符, b是一个变量,表示m这个字符。
如果表示成完整的if语句:if b in a:/ if b not in a:
a
会发现终端输出else下输出内容,和预期的结果一样
3.多个判断条件的if语句
简单的if语句只有一个测试(比较)和一个操作(执行),而大多数情况下,不可能只有一个比较的条件,往往题目下有许多条件。当有两个条件时,可以使用if-else语句。两个以上的判断条件时,使用if-elif-else语句。
if-else语句
if-else语句类似简单的if语句,但其中的else语句让你能够在指定测试条件未通过时要执行的操作(就是上图what a pity的输出原因)。
if-elif-else
Python只执行if-elif-else结构中的一个代码块,它一次检查每个测试条件,直到遇到通过了的测试条件。测试通过后,Python将执行紧跟在它后面的代码,并跳过余下的测试。
a
程序一次测试每个条件,按照b c d e 的顺序。当程序发现前三个条件都不满足时才会执行else下的语句。
也可以将else省略,只需将[else:]改为【if e in a:],输出和上面一样。
例子:
某游乐场收费标准:4岁以下免费;4-18岁收费5美元;
18岁以上收费10美元;65岁以上6美元。
age
4.使用if语句处理列表
检查特殊元素
上文中检查b c d e 是否在列表a中就是一个检查特殊元素的实例。
确定列表不是空的
设置循环时列表不能是空的,所以在执行for循环之前需要判断。Python在列表至少含有一个元素时返回True,列表为空时返回False。
members
很显然程序并没有执行if语句下的print。
5.条件测试的格式设置
在条件测试的格式设置方面,PEP 8提供的唯一建议是,在诸如== 、>= 和<= 等比较运算符两边各添加一个空格,例如,if age < 4: 要比if age<4: 好。这样的空格不会影响Python对代码的解读,而只是让代码阅读起来更容易。