九、Python第九课——Python中的if语句与运用

       众所周知,if的英文意思是“如果”,有if的一般是条件语句,在Python中也是如此。程序世界中,我们经常会用到if语句,对当前的状态、某一变量的数值进行判断,从而进行不同的操作。接下来我将会介绍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就忽略这些代码。 

1、检查变量存储的值是否相等 

        Python中的if语句可以很方便的检查两个变量的值是否相等,变量的值包括数值(数字)、字符串、字母等,一般用“==”(两个等号)来对两者(特定值和变量值)进行判定,如果二者“相等”,则返回True,否则返回False。

对于1个等号、2个等号的理解:1个等号是“赋值”:将等号右侧的特定的值赋给等号左侧的变量;2个等号是“判定”:判定2个等号左右两侧的值(数字、字符串、字母)是否相等。同样,可以判断相等,也就可以判断不相等(将“==”替换为“!=”)用感叹号表示不相等的意思。实列代码图下所示:

word="interesting"
a='Interesting'
if(a!=word):
    print("两个单词的大小写不一致!")

2、判定字母或字符串时区别大小写

字母或字符串通常涉及到大小写问题,有的情况区别大小写,如账号密码;有的情况则相反,如单词的简单拼写,大小写无关紧要。所以在检查字母大小写时,可以根据实际情况使用upper、lower等函数对字母或字符串进行大小写转换(转换为临时转换)。下面用代码举例子。

word="interesting"
a='Interesting'
if(a.lower()==word):
    print("两个单词意思一样!")
else:
    print("两个单词意思是不一样的")
print('a中存储的单词是否被改变了呢?让我们看一下!')
print(a)  #输出a中的单词,确定其没有改变

3、检查多个条件 

 多个条件就与中学数学中的“与”、“或”一样了。

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之间!")

4、检查特定值是否在列表中 

有时候,执行操作前必须检查列表是否包含特定的值。比如你在注册某度云盘时,使用的用户名是唯一的,所以需要检测即将注册的的新的用户名是否和已存在的用户名冲突。此时,即可使用“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语句和if-elif-else语句

1、if-else语句

在之前演示的例代码中,我也有做过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、注意缩进,如果缩进不一致,输出结果和你想象的就不一样了。

2、if-elif-else语句

 如果需要进行多个检查,如“景区根据游客年龄的不同进行分段收费”的操作,就得使用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!")

 

这个程序运行时就进行了三个独立的条件检验,进而根据每个条件检验的结果,输出。

三、使用if语句处理列表

       此小节的学习目标是:学会如何检查列表中的特殊值,并对其做出合适的处理。我们继续使用前面的披萨店的例子:披萨店在制作披萨的过程中,每添加一种配料就打印一条消息。要求创建一个列表,包含顾客点的配料,并使用一个循环指出添加到披萨中的配料。代码如下所示:

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曾给出建议,要在比较运算符的两侧各添加一个空格,以提高代码的阅读性。

©️2020 CSDN 皮肤主题: 精致技术 设计师:CSDN官方博客 返回首页