首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

简单的if语句

if语句

编程时经常需要检查一系列条件,并据此决定采取什么措施,在python中,if语句让你能够检查程序的当前状态,并据此采取相应的措施,接下来将学习一下条件测试,以检查感兴趣的任何条件,学习简单的if语句,以及创建一系列复杂的if语句来确定当前到底处于什么情形,把学到的应用于列表,以编写for循环,以一种方式处理列表中的大多数元素,并以另一种不同的方式处理包含特定值得元素。

1.一个简单的示例

下面是一个简单的示例,演示了如何使用if语句来正确地处理特殊情形,假设你有一个汽车列表,并想将其中每辆汽车的名称都打印出来,对于大多数汽车,都应以首字母大写的方式打印出来,但对于汽车名为‘bmw’,应以全大写的方式打印出来,下面的代码遍历一个列表,并以首字母大写的方式打印其中的汽车名,但对于汽车名为‘bmw’,以全大写的方式打印:

cars=['audi','bwm','subaru','toyota']

for car in cars:

if car=='bwm'

print(car.upper())

else:

print(car.title())

打印结果如下:

Audi

BMW

Subaru

Toyota

上述示例涵盖了本次将介绍的很多概念,下面先来介绍可用来在程序中检查条件的测试。

2. 条件测试

每条if语句的核心都是一个值为True或False的表达式,这种表达式被称为条件测试,python根据条件测试的值为True还是False来决定是否执行if语句中的代码,如果条件测试的值为True,python将执行紧跟在if语句后面的代码,如果为False,python就会忽略这些代码。

检查是否相等

大多数条件测试都将一个变量的当前值同特定值进行比较,最简单的条件测试检查变量的值是否与特定的值相等:

car='bmw'

print(car=='bmw')

打印结果如下:

Ture

上述例子中,我们首先使用=将car的值设置为bmw,接下来,使用两个==检查car的值是否为bmw,这个相等运算符在它两边的值相等时返回True,否则返回False,上述例子测试,说明两边的值都相等,因此返回Ture.

如果car的值不等于bmw,上述测试将返回False:

car='audi'

print(car=='bmw')

打印结果如下:

False

一个等号是陈述,对于上述例子中,=我们可以理解为将变量car的值设置为audi,两个==是发问,可理解为,变量car的值是bmw吗?是则返回Ture,否则返回False。

检查是否相等时不考虑大小写

在python中检查是否相等时区分大小写,例如,两个大小写不同的值会被视为不相等:

car='Audi'

print(car=='audi')

打印结果如下:

False

如果大小写很重要,这种行为有其优点,但如果大小写无关紧要,而只想检查变量的值,可将变量的值转换为小写,再进行比较:

car='Audi'

print(car.lower()=='audi')

打印结果如下:

True

上述例子中说明,无论值Audi的大小写如何,上述测试都将返回True,因为该测试不区分大小写,函数lower()不会修改存储在变量car中的值,因此进行这样的比较时不会影响原来的变量:

car='Audi'

print(car.lower()=='audi')

print(car)

打印结果如下:

True

'Audi'

上述示例中,我们首先将首字母大写的Audi存储在变量car中,然后我们获取变量car的值时将其转换为小写,然后我们将结果与字符串小写的audi进行比较,因此返回的结果为True,最近我们再次打印car的值,得出Audi,说明这个条件测试并不会影响存储在变量car中的值。

网站采用类似的方式让用户输入的数据符合特定的格式,例如,网站可能使用类似的测试来确保用户名是独一无二的,而并非只是与另外一个用户名的大小写不同,用户提交新的用户名时,将它转换为小写,然后与既有用户名的小写版本进行比较,执行这种检查时,如果有用户名join,不管大小写,再次提交一个JOIn时都将遭到拒绝。

检查是否不相等

要判断两个值是否不等,可结合使用惊叹号和等号(!=),其中的惊叹号表示不,在很多程序中也是如此。

下面再使用一条if语句来演示如何使用不等运算符,我们将把要求的某菜系配料存储在一个变量中,再打印一条消息,指出顾客要求的配料是否是小银鱼:

ingredients='薯条'

if ingredients !='小银鱼':

print('顾客要求的配料不是小银鱼')

打印结果:

顾客要求的配料不是小银鱼

你编写大多数的条件表达式都检查两个值是否相等,但有时候检查两个值是否不等的效率更高。

比较数字

检查数值非常简单,例如,下面的代码检查一个人是否满18岁:

age=18

print(age==18)

打印结果如下:

True

你还可以检查两个数字是否不等,例如,下面的代码在提供的答案不正确时打印一条消息:

answer=17

if answer !=40:

print('判断结果是对的')

打印结果如下:

判断结果是对的

上述判断中,answer是不等于42的,所以条件满足,则缩进的代码得到执行。

条件语句中可包含各种数学比较,如大于,小于,大于等于,小于等于:

age=18

print(age=18)

print(age>18)

print(age

print(age>=18)

print(age

打印结果如下:

True

False

False

True

True

在if语句中可使用各种数学比较,这让你能够直接检查关心的条件。

检查多个条件

你可能同时检查多个条件,例如,有时候你需要在两个条件都为True时才执行相应的操作,而有时候你只需要求一个条件为True时就执行相应的操作,在这些情况下,关键字and和or可助你一臂之力。

使用and检查多个条件

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

例如,要检查是否两个人都不小于21岁,可使用下面的测试:

age_0=22

age_1=18

print(age_0>=21 and age_1>=21)

打印结果如下:

False

上述测试中,我们检查两个变量的值是否都大于21,显然,左边通过测试了,而右边没有通过测试,所以返回结果为False。

age_0=22

age_1=22

print(age_0>=21 and age_1>=21)

打印结果如下:

True

上述测试中,我们检查两个变量的值是否都大于21,显然,都通过了测试,所以返回结果为True。

使用or检查多个条件

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

下面再次检查两个人的年龄,但检查的条件是至少有一个人的年龄不小于21岁:

age_0=22

age_1=18

print(age_0>=21 or age_1>=21)

打印结果如下:

True

上述中描述了,使用or,只要满足一个条件都返回为True。

age_0=22

age_1=22

print(age_0>=23 or age_1>=23)

打印结果如下:

False

只有两个都不满足条件才返回False。

检查特定值是否包含在列表中:

request=['mush','onions','pine']

print('mush' in request)

打印结果如下:

True

上述例子中体现了,关键字in让python检查列表reques是否包含mush,返回的结果为True,说明包含。

request=['mush','onions','pine']

print('hello' in request)

打印结果如下:

False

上述例子中体现了,关键字in让python检查列表reques是否包含hello,返回的结果为False,说明不包含。

检查特定值是否不包含在列表中:

有些时候,确定特定值未包含在列表中很重要,在这种情况下,可使用关键字not in。例如,如果有一个列表,其中包含了被禁止在论坛上发表评论的用户,就可在允许用户提交评论钱,检查他是否被禁言:

users=['andrew','caro','david']

user='marie'

if user not in users:

print(user+',该名字没有在被禁言的名单中')

打印结果如下:

marie,该名字没有在被禁言的名单中

布尔表达式

随着你对编程的了解越来越深入,将遇到术语布尔表达式,它不过是条件测试的别名,与条件表达式一样,布尔表达式的结果要么是Ture,要么是False。

布尔值通常用于记录条件,如游戏是否运行正常,或用户是否可以编辑网站的特定内容:

game_active=True

can_edit=False

在跟踪程序状态或程序中重要的条件方面,布尔值提供了一种高效的方式。

3.if语句

理解条件测试后,就可以开始编写if语句了, if语句有很多种,选择使用哪种取决于要测试的条件数,前面讨论条件测试时,列举了多个if语句示例,下面更深入地讨论这个主题。

简单的if语句

最简单的if语句只有一个测试和一个操作:

if conditonal_test:

do something

在第一行中,可包含任何测试条件,而在紧跟在测试后面的缩进代码块中,可执行任何操作。

如果条件测试的结果为True,python就会执行紧跟在if语句后面的代码,否则python将忽略这些代码。

假设有一个表示某人年龄的变量,而你想知道这个人是否够投票的年龄,可使用如下代码:

age=19

if age>=18:

print('满足投票年龄')

打印结果如下:

满足投票年龄

在上述中,python检查变量age的值是否打印或等于18,答案是肯定的,因此python执行缩进的print语句,否则将忽略。

在紧跟if语句后面的代码行中,可根据需要包含任意数量的代码行,下面再一个人够投票的年龄时在打印一行输出,问他是否登记了:

age=19

if age>=18:

print('满足投票年龄')

print('请问你是否登记过')

打印结果如下:

满足投票年龄

请问你是否登记过

上述例子中,条件都测试通过了,而两条print语句都缩进了,因此他们都将执行,如果age这个值小于18,这个程序将不会有任何输出。

if-else语句

经常需要在条件测试通过了时执行一个操作,并在没有通过时执行另一个操作,在这种情况下,可使用python提供的if-else语句,if-else语句块类似于简单的if语句,但其中的else语句让你能够指定条件测试未通过时要执行的操作。

下面的代码在一个人够投票的年龄时显示与前面的相同的消息,同时在这个人不够投票的年龄也显示一条消息:

age=17

if age>=18:

print('满足投票年龄')

print('请问你是否登记过')

else:

print('对不起,你不满足投票的年龄')

print('只有满18岁以上的才能参与投票')

打印结果如下:

对不起,你不满足投票的年龄

只有18岁以上的才能参与投票

如果条件测试通过了,就执行第一个缩进的代码,如果测试结果没有通过就执行第二个缩进的代码,上述中,修改了age=17,明显不大于18,所以测试未通过,所以执行第二个缩进的代码。

if-elif-else结构

经常需要检查超过两个的情形,为此,可使用python提供的if-elif-else结构,python只执行if-elif-else结构中的一个代码块,它依次检查每个条件测试,直到遇到通过了的条件测试,测试通过后,python将执行紧跟在它后面的代码,并跳过余下的测试。

在现实世界中,很多情况下需要考虑的情形都超过两个,例如,来看一个根据年龄段收费的游乐场:

要求:

4岁以下的儿童免费;

4~18岁收费5元;

18岁(含)以上收费10元;

下面的代码确定一个人所属的年龄段,并打印一条包含门票价格的消息:

age=12

print('你可以免费入场')

elif age

print('你需要支付5元的门票价格')

else:

print('你需要支付10元的门票价格')

打印结果如下:

你需要支付5元的门票价格

上述例子中,首先测试了这个人是否小于4岁,如果小于4岁将执行第一个缩进代码,显然不对,则忽略第一个缩进代码,然后进入下一行测试,测试这个人是否小于18岁,显然,这个人小于18岁,所以直接打印第二个缩进代码块,并忽略后面的else代码块,如果上面上来测试都不满足条件,python才会执行else代码块中的代码。

为了让代码更加简洁,可不在if-elif-else代码块中打印门票价格,而只在其中设置门票价格,并在它后面添加一条简单的print语句:

age=12

price=0

elif age

price=5

else:

price=10

print('你需要支付门票:'+str(price)+'元。')

打印结果如下:

你需要支付门票:5元。

上述例子中,根据人的年龄设置变量price的值,在if-elif-else结构中设置prince的值后,一条没有缩进的代码print语句会根据这个变量的值打印一条消息,指出门票的价格。

这个示例输出的结果与前一个示例相同,但if-elif-else结构的作用更小,它只确定门票的价格,而不是在确定门票价格的同时打印一条消息,除效率高外,这些修订后的代码还更容易修改,要调整输出消息内容,只需要修改一条而不是三条print语句。

使用多个elif代码块

可根据需要使用任意数量的elif代码块,例如,假设前述游乐场要给老年人打折,可再添加一个条件测试,判断顾客是否符合打折条件,下面假设对于65岁(含)以上的老人,可以半价(即5元门票)购买门票:

age=80

price=0

elif age

price=5

elif age

price=10

else:

price=5

print('你需要支付门票:'+str(price)+'元。')

打印结果如下:

你需要支付门票:5元。

上述示例表明,elif可以根据需要不断增加的,修改了变量值为88,python进行逐条测试,到新增的是否小于65进行判断,显然还是不满足,所以还是执行else的代码块。

省略else代码块

python并不需要if-elif结构后面必须跟else代码块,在有些情况下,else代码块很有用,而在其它一些情况下,使用一条elif语句来处理特定的情形更清晰:

age=80

price=0

elif age

price=5

elif age

price=10

elif age>=65:

price=5

print('你需要支付门票:'+str(price)+'元。')

打印结果如下:

你需要支付门票:5元。

通过上述的例子可以看出,缺少else代码块也可以正常运行,根据条件一条条进行测试,直到最后一个age>=65,测试通过,则执行下面缩进的语句块。

else是一条包罗万象的语句,只要不满足任何if和else中的条件测试,其中的代码就会执行,这可能会引入无效甚至恶意的数据,如果知道最终要测试的条件,应考虑使用一个elif代码来代替else代码块,这样,你就可以肯定,仅当满足相应的条件时,你的代码才会执行。

测试多个条件

if-elif-else机构功能强大,但仅适合用于只有一个条件满足的情况,遇到通过了的测试后,python就会跳过下面的测试,这种行为很好,效率很高,让你能够测试一个特定的条件。

然而,有时候必须检查你关心的所有条件,在这种情况下,应使用一系列不包含elif和else代码块的简单if语句 ,在可能有多个条件为True,且你需要在每个条件为True时都采取相应措施,适合使用这种方法。

下面来看披萨店示例,如果顾客点了两种配料,就需要确保在其披萨中包含这些配料:

request=['火腿',辣椒']

if '火腿' in request:

print('顾客添加了火腿')

if '薯条' in request:

print('顾客添加了薯条')

if '辣椒' in request:

print('顾客添加了辣椒')

print('这是顾客要的披萨')

打印结果:

顾客添加了火腿

顾客添加了辣椒

这是顾客要的披萨

上述例子中,我们首先创建了一个列表,其中包含顾客点的配料,下面第一个if语句检查顾客是否点了配料火腿,如果点了,就打印一条确认信息,第二个if语句检查顾客是否点了配料薯条,如果点了也打印一条确认信息,第三条if语句检查顾客是否点了辣椒,如果点了也打印一条确认信息。

结果表明,执行第一个if语句的时候,确认了顾客是点了火腿的,所以打印了一条确认信息,然后继续执行下一条if语句,显然顾客没有点薯条,所以没有打印确认信息,然后再往下执行第三条if语句,顾客是点了辣椒的,所以也打印了第三条确认信息,最后执行缩进外的代码块,print。

如果上述例子换成if-elif-else就不会正常运行,因为有一个测试通过后,就会跳过余下的测试。

4.使用if语句处理列表

通过结合使用if语句和列表,可完成一些有趣的任务,对列表中特定的值做特殊处理,高效地管理不断变化的情形,如餐馆是否还有特定的食材,证明代码在各种情形下都将按预期那样运行。

检查特殊元素

继续使用前面披萨店的示例,这家披萨店制作披萨时,每添加一种配料都打印一条消息,通过创建一个列表,在其中包含顾客点的配料,并使用一个循环来指出添加到披萨中的配料,可以以极高的效率编写这样的代码:

request=['火腿','薯条','辣椒']

for requests in request:

print('顾客添加了:'+requests+'.')

print('以上就是顾客需要的披萨配料')

打印结果如下:

顾客添加了:火腿.

顾客添加了:薯条.

顾客添加了:辣椒.

以上就是顾客需要的披萨配料

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

request=['火腿','薯条','辣椒']

for requests in request:

if requsets=='薯条':

print('对不起,没有该配料了')

else

print('顾客添加了:'+requests+'.')

print('以上就是顾客需要的披萨配料')

打印结果如下:

顾客添加了:火腿.

对不起,没有该配料了

顾客添加了:辣椒.

以上就是顾客需要的披萨配料

上述示例中,if语句会进行检查顾客是否点了薯条,如果有点,则打印一条消息,提示该配料没有了,else代码块确保顾客点的其它配料都要加到披萨中。

确定列表不是空的

以上的示例中,列表都做了简单的假设,至少都包含了一个元素,我们马上就要让用户来提供存储在列表中的信息,因此列表不能再假设循环运行时列表是空的,鉴于此,在运行for循环确定列表是否为空很重要。

下面再制作披萨前检查顾客点的配料列表是否为空,如果列表为空,就像顾客确认他是否要点普通披萨,如果列表不为空,就像前面那样制作披萨:

request=[]

if request:

for requests in request:

print('顾客添加了:'+requests+'.')

print('以上就是顾客需要的披萨配料')

else:

print('你确定要点普通的披萨吗?')

打印结果如下:

你确定要点普通的披萨吗?

上述示例中,我们首先创建了一个空的列表,然后先用if语句进行简单的检查,而不是直接用for循环,在if语句中将列表名用在表达式中时,python将在列表至少包含一种元素时返回True,并在为空是返回False,如果列表不为空,就运行和上一个示例相同的for循环,否则就打印一条消息,询问顾客是否确定要点普通的披萨。

使用多个列表

顾客的要求往往五花八门,披萨配料尤其如此,如果顾客要在配料中添加果汁,我们怎么判断,可使用列表和if语句来确定能否满足顾客的要求。

来看看在制作披萨前如何拒绝顾客怪异的要求,下面的示例定义了两个列表,其中第一个为披萨店供应的配料,第二个为顾客点的配料,这次对于request中的每个元素,都检查他是否是披萨店供应的配料,在决定是否在披萨中添加他:

available_request=['火腿','薯条','辣椒']

user_request=['火腿','果汁','辣椒']

for uesr_requests in uesr_request:

if uesr_requests in available_request:

print('顾客添加了,'+uesr_requests+'。')

else:

print('对不起,没有你点的配料:'+uesr_requests+'。')

print('以上就是你的披萨配料')

打印结果如下:

顾客添加了,火腿。

对不起,没有你点的配料:果汁。

顾客添加了,辣椒。

上述示例中,我们定义了一个列表,其中为披萨店提供的配料,请注意,披萨店的配料是固定的,也可以使用元组来存储他们,然后我们在创建了一个列表,其中包含顾客点的配料,请注意那个果汁,再然后,我们遍历顾客点的配料列表,在这个循环中,对于顾客点的每种配料,我们都检查它是否包含在供应的配料列表中,如果是,就将其加入到披萨中,否则,将运行else代码块,告诉顾客,没有该配料。

小结

通过上面的了解,学习了如何编写结果要么为True要么为False的条件测试,如何编写简单的if语句,if-else语句和if-elif-else结构,在程序中,使用这些结构来测试特定的条件,以确定这些条件是否满足,还有了解了如何在利用高效的for循环的同时,以不同于其它元素的方式对特定的列表元素进行处理。

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180316G18QUD00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券