(请先看置顶博文)https://blog.csdn.net/GenuineMonster/article/details/104495419
众所周知,if的英文意思是“如果”,有if的一般是条件语句,在Python中也是如此。程序世界中,我们经常会用到if语句,对当前的状态、某一变量的数值进行判断,从而进行不同的操作。接下来我将会介绍if语句的语法以及if语句在列表中的应用。
我看的书中直接给出if与列表配合使用的用法,那么我们这里也以代码举例说明,为了码字方便,我直接在代码里增加备注说明。
#made by Jeffery #Happy day #10.21 cars=['audi','bmd','subaru','toyota'] #创建一个轿车列表,其中bmw在输出时需要全部大写,所以,我们接下来用if语句对bmw和其它轿车品牌进行区别 for car in cars: #循环语句,提取列表中的元素与bmw进行比对 if car=='bmw':#如果比如成功,那么就全部大写输出 print(car.upper()) else: #比对失败,那么就以首字母大写的方式输出轿车品牌 print(car.title())在这个if语句的示例中需要说明的地方有以下几点:
A、C语言中,if语句要把判断条件的等式放入括号内。而在Python中,一般不用放入括号内。除非需要判断的条件众多,增加括号以提高代码阅读性。
B:if关键字后跟着的等式和C语言一样是两个等号(“==”)或者没有等号,后者所描述的情况我将会在下面的内容举例说明。
C:每次if语句写完条件后,要在后面写“:”(冒号),意思是如果满足这个条件,代码将会执行什么操作。
每条if语句的核心都是一个值为True或False的表达式,这种表达式在Python中被称为条件测试。如果条件测试的值为True,Python就执行紧跟在if语句后面的代码;如果为False,Python就忽略这些代码。
Python中的if语句可以很方便的检查两个变量的值是否相等,变量的值包括数值(数字)、字符串、字母等,一般用“==”(两个等号)来对两者(特定值和变量值)进行判定,如果二者“相等”,则返回True,否则返回False。
对于1个等号、2个等号的理解:1个等号是“赋值”:将等号右侧的特定的值赋给等号左侧的变量;2个等号是“判定”:判定2个等号左右两侧的值(数字、字符串、字母)是否相等。同样,可以判断相等,也就可以判断不相等(将“==”替换为“!=”)用感叹号表示不相等的意思。实列代码图下所示:
word="interesting" a='Interesting' if(a!=word): print("两个单词的大小写不一致!")字母或字符串通常涉及到大小写问题,有的情况区别大小写,如账号密码;有的情况则相反,如单词的简单拼写,大小写无关紧要。所以在检查字母大小写时,可以根据实际情况使用upper、lower等函数对字母或字符串进行大小写转换(转换为临时转换)。下面用代码举例子。
word="interesting" a='Interesting' if(a.lower()==word): print("两个单词意思一样!") else: print("两个单词意思是不一样的") print('a中存储的单词是否被改变了呢?让我们看一下!') print(a) #输出a中的单词,确定其没有改变多个条件就与中学数学中的“与”、“或”一样了。
A、判断多个条件同时满足,就用“and”将这些条件连接起来:如果每个条件都满足,则整个表达式就为True;如果有一个条件不满足,那么整个表达式就为False。下面用代码举例:
a=10 #将三个数字存储在a、b、c三个变量中。 b=15 c=12 if(c<b and c>a): #对a的数字进行两个条件的判断 print("c中存储的数字在a和b之间!") else: print("c中存储的数字不在a和b之间!")上述代码if后的语句可以用(c<b) and (c>a)代替,提高可读性。
B、如果多个条件只需要一个满足就ok的,那么就用“or”连接这些条件:只要有一个条件满足,那么整个表达式就为True。都不满足,整个表达式才为Fasle。请看例代码:
a=10 #将三个数字存储在a、b、c三个变量中。 b=15 c=20 if(c<b or c>a): #对a的数字进行两个条件的判断,显然c>a print("c中存储的数字在a和b之间!") else: print("c中存储的数字不在a和b之间!")有时候,执行操作前必须检查列表是否包含特定的值。比如你在注册某度云盘时,使用的用户名是唯一的,所以需要检测即将注册的的新的用户名是否和已存在的用户名冲突。此时,即可使用“in”来实现本操作。有时检查不在列表里的效率更高一点,那么可以使用关键字“not in”实现对应操作。
请看里代码:
a=[1,2,3,4,5] #创建一个数字列表 print("数字列表为:",a) if(1 in a): #使用in关键字,对1是否在本数字列表进行判断 print("1在数字列表中!") else: print("1不在数字列表中!") if(10 in a): #使用in关键字,对10是否在本数字列表进行判断 print("10在数字列表中") else: print("10不在数字列表中!")简单在这里提一下:布尔表达式是条件测试的别名,其结果也是True或者False。
在之前演示的例代码中,我也有做过if-else语句的举例:其基本使用语境是满足a,执行a1;否则,执行b1。这里再给出一个参考书中的例代码,供大家理解:
age=17#定义年龄 if age >=18:#大于18岁进行下面两个输出 print("You are old enough to vote") print("Have you registered to vote yet?") else: #小于18岁进行下面两个输出 print("Sorry, you are too young to vote") print("Please register to vote as soon as you turn 18")if-else语句非常适合让Python执行两种操作之一的情况。另外,在写if-else条件语句时 ,有2个需要注意的地方:a、不要丢掉if语句后的“:”(冒号)以及else语句后的“:”(冒号)。b、注意缩进,如果缩进不一致,输出结果和你想象的就不一样了。
如果需要进行多个检查,如“景区根据游客年龄的不同进行分段收费”的操作,就得使用if-elif-else语句了。例代码:
age = 12 if age < 4: print("Your admission cost is $0") elif age < 18: #注意缩进 print("Your admission cost is $5") else: print("Your admission cost is $10")如果这个景区根据游客年龄段进行收费的制度极为详细(每10岁就是一个收费区间)那么,我们在编写代码的时候就可以使用多个“elif”,并且需要注意的是“缩进问题”和“冒号的问题”。虽然我们说的是与if-elif-else的问题,但是在Python中并不要求if-elif结构后面必须有else代码块。在有些情况下,else代码块很有用;而在有些情况下,用一条elif语句来处理特定的情形更清晰。(else可谓是“包罗万象”:只要是不满足if、elif中的条件测试,else中的代码就会执行,这可能就会引入无效甚至是恶意的数据)
通过上述的例代码就可以看出,if-elif-else语句仅适合于只有一个条件满足的情况,一旦条件满足,Python就会跳过余下的条件检查。然而有些情况就需要对所有的条件进行一一检查,此时就是用简单的if语句就好了。例代码如下:
问题大意——检查顾客点的小料是否还有,有的话就显示“添加什么什么小料”,没有的话就跳过,最后打印“披萨做好了”
requested_toppings=['mushrooms','extra cheese'] if 'mushrooms' in requested_toppings: print("Adding mushrooms.") if 'pepperoni' in requested_toppings: print("Adding pepperoni.") if 'extra cheese' in requested_toppings: print("Adding extra cheese.") print("\nFinished making your pizza!")
这个程序运行时就进行了三个独立的条件检验,进而根据每个条件检验的结果,输出。
此小节的学习目标是:学会如何检查列表中的特殊值,并对其做出合适的处理。我们继续使用前面的披萨店的例子:披萨店在制作披萨的过程中,每添加一种配料就打印一条消息。要求创建一个列表,包含顾客点的配料,并使用一个循环指出添加到披萨中的配料。代码如下所示:
requested_toppings=['mushrooms','green peppers','extra cheese'] for requested_topping in requested_toppings: print("Adding "+ requested_topping+". ") print("Finshed making your pizza!")此时,如果披萨店的青椒用完了,那该如何处理?此时可以在for循环语句中包含一条if语句,向顾客表明我们的青椒用完了。代码修改如下:
requested_toppings=['mushrooms','green peppers','extra cheese'] for requested_topping in requested_toppings: if requested_topping=='green peppers': print("Sorry, we are out of green peppers right now. ") else: print("Adding "+ requested_topping+". ") print("Finshed making your pizza!")随着我们学习的深入,我们要逐渐把我们之前规定的假设去除掉。至今为止,有关列表我们做的最大的假设是“列表不为空!”。这在实际生活中是不可能一直存在的,所以我们要去掉这个假设。这个过程就需要我们在对列表进行操作前“判空”(判断列表是不是空的列表)那么我们上面的代码就有如下修改:
requested_toppings=[] if requested_toppings: #如果列表不为空,则执行for循环。 #(这个if语句课以理解为“列表中有东西吗?”有执行循环) for requested_topping in requested_toppings: print("Adding " + requested_topping + ". ") print("Finshed making your pizza! ") else: print("Are you sure you want a plain pizza? ")我们继续深入:顾客的要求是五花八门的,如果有的顾客要求在披萨里加薯条怎么办?我们就需要写代码来对他们的要求一一回应。此时,我们可以定义两个列表,一个是我们可以提供的原材料,一个是顾客提出来的。代码如下:
available_toppings=['mushrooms','olives','green peppers','pepperoni','pineapple','extra cheese'] requested_toppings=['mushrooms','french fries','extra cheese'] for requested_topping in requested_toppings: if requested_topping in available_toppings: print("Adding " + requested_topping + ". ") else: print("Sorry, we do not have "+requested_topping+". ") print("\nFinished making your pizza! ")可能有细心的同学注意到了,在上述代码的第四行,检验顾客提到的小料是否在我们能提供的小料范围时,我们一条if语句就搞定了,而不是像C语言那样,还得针对requested_topping 去遍历列表available_toppings中的每一个元素。另外,学习完本节内容,可能就会 增多对==,!=,>=,<=等符号的使用。PEP 8曾给出建议,要在比较运算符的两侧各添加一个空格,以提高代码的阅读性。