作者|弗拉德来源|我有一份汽车清单,想打印其中每辆车的名称。对于大多数汽车,名称应以首字母大写打印,但对于汽车名称“bmw”,则应全部大写。以下代码遍历列表并打印其中首字母大写的汽车名称,但对于汽车名称“bmw”,它以全部大写形式打印:car_list=['bmw','audi','toyota','honda']forcarincar_list:ifcar=='bmw':print(car.upper())else:print(car.title())在这种情况下,如果汽车的名称等于bmw,upper()方法将结果以大写形式输出,如果不等于bmw,则以大写形式输出第一个字母。输出结果如下:BMWAudiToyotaHonda条件语句每个if语句的核心是一个表达式,其值为True或False,这个表达式称为条件语句。Python根据条件是True还是False来决定是否执行if语句中的代码。如果条件的计算结果为真,Python会立即执行if语句之后的代码;如果为False,则Python不执行代码。检查相等性大多数条件测试将变量的当前值与特定值进行比较。最简单的条件检查变量的值是否等于某个值:car='bmw'print(car=='bmw')True我们首先使用等号将car的值设置为bmw。接下来,使用两个等号==检查car的值是否为bmw。如果它两边的值相等,这个相等运算符返回True,否则返回False。本例中两边的值相等,所以返回True。如果变量car的值不是bmw,上面的判断会返回False:car='audi'print(car=='bmw')False第一个等号会将变量car的值设置为audi。两个等号是问“变量carbmw的值是?”。大多数编程语言使用等号的方式与本例相同。在Python中检查是否相等时使用if区分大小写时不考虑大小写,例如两个大小写不同的值被认为不相等:car='Audi'print(car=='audi')FalseifCasematters,这种行为有其优点。但是如果大小写无关紧要而你只想检查变量的值,你可以在比较之前将变量的值转换为小写:car='Audi'print(car.lower()=='audi')True不管值Audi的大小写,上面的判断都会返回True,因为判断是不区分大小写的。函数lower()不会修改存储在变量car中的值,因此在进行此类比较时不会影响原始变量:car='Audi'print(car.lower()=='audi')Trueprint(car)'Audi'检查不等式判断两个值是否不相等,用感叹号和等号!=组合,感叹号表示不,很多编程语言都是这样。让我们使用另一个if语句来演示如何使用不等运算符。我们将苹果存储在一个变量中,客户想要购买橙子,并输出客户不想要苹果:fruit='Apple'if(fruit!='Orange'):print('donotneed'+fruit)比较fruit和Orange的值,如果不相等,Python返回True,接着执行if语句后面的代码;如果两个值相等,Python返回False,因此no立即执行if语句之后的代码。由于fruit的值不是Orange,因此执行print语句。我们写的大多数条件表达式检查两个值是否相等,但有时检查两个值是否不相等会更高效。比较数字校验值很简单,比如下面的代码校验一个人是不是18岁:age=18print(age==18)True也可以校验两个数字是否不相等,比如代码belowdoesnotwhentheprovidedanswerisnotPrintamessagewhenitiscorrect:answer=17ifanswer!=42:print("那不是正确的答案。请再试一次!")条件语句可以包含各种数学比较,例如小于、小于或等于、大于、大于或等于:age=19print(age<21)Trueprint(age<=21)Trueprint(age>21)Falseprint(age>=21)False各种数学比较可以在if语句中使用,使用起来非常简单。检查多个条件您可能希望同时检查多个条件,例如我们需要在两个条件都为真时执行相应的操作,而有时您只需要在一个条件为真时执行相应的操作。在这些情况下,关键字and和or可以为我们节省很多。1、使用and来判断多个条件判断两个条件是否为True,可以使用关键字and,将两个条件判断合二为一;如果每个判断都通过,则整个表达式为True;如果至少判断失败,则整个表达式为False。例如,要检查两个人是否不小于21,请使用以下语句:age_0=22age_1=18print(age_0>=21andage_1>=21)Falseage_1=22print(age_0>=21andage_1>=21)没错,我们定义了两个变量age_0和age_1来存储年龄。首先我们检查两个变量是否都大于等于21,左边一个通过,右边一个不通过,所以整个条件表达式的结果都是False。接下来我们将age_1改为22,使得age_1的值大于21,所以两个判断都通过,导致整个条件表达式的结果为True。为了提高可读性,每个判断都可以用一对单独的括号括起来,但这不是必需的。如果使用括号,则判断结果如下:(age_0>=21)and(age_1>=21)2.使用or来检查多个条件关键字or也可以让你检查多个条件,但只要有至少满足一个条件,才能通过整个判断。仅当两个测试均未通过时,表达式才使用或求值为False。下面再次检查两个人的年龄,但前提是其中至少一个人不小于21岁:age_0=22age_1=18print(age_0>=21orage_1>=21)Trueage_0=18print(age_0>=21orage_1>=21)False同样,我们先定义两个变量,用于存储年龄。age_0的测试通过,因此整个表达式的计算结果为True。接下来我们把age_0改成18,在接下来的判断中,两次判断都失败了,所以整个表达式的结果都是False。检查列表中是否包含特定值有时需要在执行操作之前检查列表是否包含特定值。要确定特定值是否已包含在列表中,请使用关键字in。您可以为水果店编写代码,首先创建用户想要购买的水果列表,然后检查是否包含特定水果在该列表中:fruits=['apple','banana','cherry']print('apple'infruits)Trueprint('orange'infruits)false关键字可以帮助我们检查fruits是否包含apple和orange。这种判断非常有用,它可以帮助我们在创建列表后轻松检查特定值是否包含在列表中。检查特定值是否未包含在列表中有时,确定特定值是否未包含在列表中也很重要。在这种情况下,可以使用关键字notin。例如,如果您有一个禁止在论坛上发表评论的用户列表,您可以在允许他们提交评论之前检查用户是否被禁止:banned_users=['andrew','carolina','david']user='marie'ifusernotinbanned_users:print(user.title()+",youcanpostaresponseifyouwish.")如果user的值不在banned_users列表中,Python将返回True,然后执行indentationEntered这行代码。用户marie不在banned_users列表中,因此她将看到一条邀请她发表评论的消息:Marie,如果您愿意,可以发表回复。布尔表达式与条件表达式相同,布尔表达式的结果为True或False。布尔值通常用来记录条件,比如游戏是否正在运行,或者用户是否可以编辑网站的特定内容:game_active=Truecan_edit=False布尔值判断是一种高效的判断方式。if语句一旦你理解了条件语句,你就可以开始写if语句了。在前面讨论条件语句时,给出了几个if语句的例子,下面将更深入地讨论这个话题。If-else语句通常需要在条件语句通过时执行一个操作,否则执行另一个操作。在这种情况下,您可以使用Python提供的if-else语句。if-else块类似于简单的if语句,但其中的else语句允许您指定在不满足条件时要执行的操作。以下代码在某人达到可以投票的年龄时显示与之前相同的消息,如果此人还没有达到投票的年龄,也会显示一条消息:age=17ifage>=18:print("Youareoldenoughtovote!")print("你登记投票了吗?")else:print("抱歉,你还太小,不能投票。")print("请在年满18岁后尽快登记投票!")条件语句通过,第一个缩进的打印语句块被执行。如果判断结果为False,则执行下面的else代码块。这次年龄小于18,条件判断失败,所以执行else代码块中的代码。上面的代码之所以有效,是因为只有两种情况:要么足够大可以投票,要么不够大。if-else结构非常适合您希望Python执行以下两件事之一的情况。在这个简单的if-else结构中,始终执行两个操作之一。if-elif-else结构往往需要检查两种以上的情况,可以使用Python提供的if-elif-else结构。Python只执行if-elif-else结构中的一个代码块,依次检查每一个条件判断,直到遇到通过的条件判断。判断通过后,Python会执行紧跟其后的代码,跳过其余的判断。在现实世界中,有很多情况需要考虑两种以上的情况。比如我们看一个按年龄段收费的游乐场:4岁以下儿童免费;4-18岁5元;18周岁(含z及以上)10元。如果只用一个if语句,如何确定票价呢?下面的代码用于确定一个人所属的年龄组,并打印一条包含入场费的消息:age=12ifage<4:print("Youradmissioncostis$0.")elifage<18:print("Youradmissioncostis¥5.")else:print("Youradmissioncostis¥10.")firstif检查一个人是否未满4岁,如果是,则打印适当的消息,并跳过其余的检查。elif代码行实际上是另一个if测试,只有在前一个测试失败时才会运行。在这里,我们知道这个人不小于4岁,因为第一次测试失败了。如果此人未满18岁,Python将打印相应的消息并跳过else代码块。如果if判断和elif判断都不通过,Python会运行最后一个else代码块中的代码。在这个例子中,第一个if的结果是False,所以no执行它的代码块。但是第二次判断的结果为True(12小于18),所以它的代码块会被执行。输出的是一句话,向用户指出票价:Youradmissioncostis¥5。只要年龄超过17岁,前两个判断就会失败。此时会执行else代码块,表示票价为10元。为了让代码更简洁,不在if-elif-else代码块中打印门票价格,直接在里面设置门票价格,在后面加上简单的打印语句:age=12ifage<4:price=0elifage<18:price=5else:price=10print("Youradmissioncostis¥"+str(price)+".")使用多个elif块使用任意多的elif块,例如,假设上述play如果店家要给老人打折,可以再加一个条件判断顾客是否满足打折条件。以下假设65岁(含)以上老人可半价购票(5元):ag??e=12ifage<4:price=0elifage<18:price=5elifage<65:price=10else:price=5print("你的入场费是¥"+str(price)+".")这些代码大部分都没有改变。第二个elif代码块检查确定年龄小于65岁,然后将票价设置为全票价——10元。省略else代码块Python不需要else代码块在if-elif结构之后。在某些情况下,else块很有用,而在其他情况下,使用elif语句来处理特定情况会更清楚:age=12ifage<4:price=0elifage<18:price=5elifage<65:price=10elifage>=65:price=5print("Youradmissioncostis¥"+str(price)+".")第三个elif代码块设置客户年龄超过65岁(含)时的价格为$5,即比使用else块更清楚一点。这样修改后,每个代码块只有在相应的判断通过后才会执行。else是一个包罗万象的语句,只要不满足if或elif中的条件,就会执行其中的代码,这可能会引入无效甚至恶意数据。如果您知道最终条件,则应考虑使用elif块而不是else块。这样,您可以确保您的代码仅在满足相应条件时才会执行。判断多个条件的if-elif-else结构很强大,但只适用于只满足一个条件的情况。遇到passed判断后,Python会跳过剩下的判断。这种行为很好而且高效。但是,有时必须检查您关心的所有条件。在这种情况下,应该使用一系列没有elif和else块的简单if语句。这种方法适用于可能有多个条件为True,需要在每个条件都为True时采取相应动作的情况。我们再看看前面水果店的例子。如果客户要求两种水果,您需要确保它们都包含在货架上:requested_fruits=['pear','banana']if'apple'inrequested_fruits:print("Addingapple.")if'pear'inrequested_fruits:print("Addingpear.")if'banana'inrequested_fruits:print("Addingbanana.")print("\nFinishedaddingyourfruits!")我们首先创建一个列表,其中包含请求的水果客户。第一个if语句检查客户是否想要一个苹果,如果是,则打印一条确认消息。第二个if检查水果梨的代码也是一个简单的if语句,不是elif语句,也不是else语句,所以不管前面判断通过与否,都会进行这个判断。第三个if中的代码检查客户是否订购了香蕉;无论前两个判断的结果如何,这些代码都会被执行。这三个单独的判断是在程序每次运行时进行的。3在这个例子中,检查了每个条件,所以梨和香蕉输出将被添加到列表中:Addingpear.Addingbanana.Finishedaddingyourfruits!如果换成这样的if-elif-else结构,代码将无法正常运行,因为有一个判断pass:requested_fruits=['pear','banana']if'apple'inrequested_fruits:print("Addingapple.")elif'pear'inrequested_fruits:print("Addingpear.")elif'banana'inrequested_fruits:print("Addingbanana.")print("\nFinishedaddingyourfruits!")第一个检查检查苹果是否包含在列表中,它通过了,所以将它添加到购物车苹果。然而,Python将跳过其余的if-elif-else检查以查看列表是否包含pear和banana。结果,将添加客户要求的第一个水果,但不会添加其他水果:Addingpear.Finishedaddingyourfruits!总之,如果只想执行一段代码,就使用if-elif-else结构,如果要运行多个代码块,就使用一系列独立的if语句。使用if语句处理列表通过将if语句与列表结合使用,您可以完成一些有趣的任务:对列表中的特定值进行特殊处理;所有情况都将按预期工作。检查特殊元素我们从一个简单的例子开始,展示如何处理特殊值bmw-它需要以不同的格式打印。既然你对条件判断和if语句有了一个大致的了解,那么让我们仔细看看如何检查列表中的特殊值并进行适当的处??理。继续前面的水果列表示例。每次将水果刀添加到购物车时打印一条消息。通过创建客户需要购买的水果列表,并使用循环指示谁加入了购物车,可以非常高效地编写如下代码:requested_fruits=['apple','pear','banana']forfruitinrequested_fruits:print("Adding"+fruit+".")print("\nFinishedaddingyourfruits!")输出很简单,因为上面的代码无非就是一个简单的for循环:Addingapple.添加梨。添加香蕉。完成添加水果!但是,如果水果店的苹果卖完了怎么办?要正确处理这种情况,您可以在for循环中包含一个if语句:weareapplerightnow.")else:print("Adding"+fruit+".")print("\nFinishedaddingyourfruits!")这里,检查添加到购物车的每个水果。if代码判断顾客是否要苹果,如果是,则显示没有苹果了。else块确保可以将其他水果添加到购物车:对不起,我们现在是苹果。加入梨。加入香蕉。添加完水果!确保列表不为空到目前为止,对于每个处理过的列表,做一个简单的假设,它们都至少包含一个元素。但在运行for循环之前确定列表是否为空很重要。接下来,在给客户添加购物车时,首先判断在线商品列表是否为空。如果列表为空,则询问客户是否要订购蔬菜,如果列表不为空,则像前面的示例一样添加到购物车:requested_fruits=[]ifrequested_fruits:forfruitinrequested_fruits:print("Adding"+fruit+".")print("\nFinishedaddingyourfruits!")else:print("Areyousureyouwantsomevegetables?")在这里,我们首先创建一个不包含任何水果的空列表。首先,我们做了一个判断,而不是直接执行for循环。当我们直接评估一个列表时,如果列表包含至少一个元素,Python将返回True,如果列表为空,则返回False。如果requested_fruits不为空,运行与前面示例相同的for循环,否则,打印消息Here,thislistisempty,所以输出如下-询问客户是否想要蔬菜:Areyousureyouwantsome蔬菜?如果这个列表不为空,水果将被添加到购物车。家庭作业:10-1检查两个数字是否相等、不等于、大于、小于、大于或等于和小于或等于。10-2请创建一个名为brush_color的画笔变量并将其设置为'green'、'yellow'或'red'。编写一个if语句来检查笔是否为绿色,如果是,则打印一条消息。10-3按照习题10-2设置画笔的颜色,写一个if-else结构。如果笔是绿色的,则打印一条消息。如果笔不是绿色,则打印另一条消息。10-4将练习10-3中的if-else结构更改为if-elif-else结构。如果笔为绿色,则执行以下逻辑以打印一条消息,即绿色。如果刷子是黄色的,打印一条消息,它是黄色的。如果刷子是红色的,打印一条消息,表明它是红色的。10-5不同的人生阶段:设置变量age的值,然后写一个if-elif-else结构,根据age的值判断自己处于哪个人生阶段。如果一个人的年龄小于2岁,则打印一条消息,说明他是一个婴儿。如果一个人的年龄是2-4岁,打印一条消息说明他是一个蹒跚学步的孩子。如果一个人的年龄是4(含)-13岁,则打印一条消息说明他是一个孩子。如果一个人的年龄是13(含)-20,就打印一条消息说明他是青少年。如果一个人的年龄是20(含)-65,就打印一条消息说明他是成年人。如果一个人的年龄超过65岁(含),则打印一条消息,说明他是一位老人。如果你想查看作业答案,你可以去我的Githu仓库
