编程时经常需要检查一系列条件,并据此决定采取什么措施。
python大大的图

我的图

1.一个简单示例
假设你有一个汽车列表,并想将其中每辆汽车的名称打印出来。对于大多数汽车,都应以首字母大写的方式打印其名称,但对于汽车名'bmw',应以全大写的方式打印。对应大大的代码4~9行。这个示例中的循环首先检查当前的汽车名是否是'bmw'。如果是,就以全大写的方式打印它;否则就以首字母大写的方式打印。
2.条件测试
每条if语句的核心都是一个值为True或False的表达式,这种表达式被称为条件测试。Python根据条件测试的值为True还是False来决定是否执行if语句中的代码。如果条件测试值为True,Python就执行紧跟在if语句后面的代码;如果为False,Python就忽略这些代码。
(1)检查是否相等
大多数条件测试都将一个变量的当前值同特定指进行比较。最简单的条件测试检查变量的值是否与特定值相等。
代码第10行,car不等于'bmw',因此打印True。因为此时的变量car里存储的值为循环结束的最后一个值toyota。
如果把判断是否不相等改为判断是否相等,那么打印False


一个等号是赋值,两个等号或不等号是发问,相当于一个判断语句。大大代码第10行可解读为:变量car的值不等于'bmw'对吗?结果是对,打印True。
(2)检查是否相等时不考虑大小写
在Python中检查是否相等时区分大小写,两个大小写不同的值会被视为不相等。如果大小写很重要,这种行为有其优点。但如果大小写无关紧要,而只想检查变量的值,可使用函数lower()将变量的值转化为小写,再进行比较。

函数lower()不会修改存储在变量car中的值,因此进行这样的比较时不会影响原来的变量。
可以这么论证函数lower()不改变原变量这个问题。在4~9行,我们打印出的Toyota已经经过了操作title(),但是在判断相等时依然与原变量相等。lower()与title()是同一级别的函数,因此它也不会改变原变量。


网站采用类似的方式让用户输入的数据符合特定的格式。例如,网站可能使用类似的测试来确保用户名是独一无二的,而并非只是与另一个用户名的大小写不同。用户提交新的用户名时,将把它转换为小写,并与所有既有用户名的小写版本进行比较。执行这种检查时,如果已经有用户名'john'(不管大小写如何),则用户提交用户名'John'时将遭到拒绝。
(3)检查是否不相等
要判断两个值是否不等,可结合使用惊叹号和等号(!=),其中的惊叹号表示不,在很多编程语言中都如此。这段代码在(1)中说过了。
(4)比较数字
比较数字时条件语句中不止可以使用==和!=,还可以使用>,<,>=和<=。
(5)检查多个条件
你可能想同时检查多个条件,例如,有时候你需要在两个条件都为True时才执行相应的操作,而有时候你只要求一个条件为True时就执行相应的操作。在这些情况下,关键字and和or可助你一臂之力。
使用and检查多个条件:
条件全为真,返回True,否则返回False。对应13~16行代码,if语句里的两个条件:①'audi'在cars列表里,②列表cars的长度大于等于4。两个条件均为真,则返回True,执行第一个print语句。
如果两个条件有一个或者两个不为真,那么执行else后面的print语句


使用or检查多个条件:
至少有一个条件满足,返回True,否则返回False。
上图返回False的语句如果把and改为or,将返回True


网友评论