Python使用if语句处理列表(60)

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

大大的图

图片发自简书App

我的图

图片发自简书App

1.检查特殊元素

比萨店在制作比萨时,每添加一种配料都打印一条消息。通过创建一个列表,在其中包含顾客点的配料,并使用一个循环来指出添加到比萨中的配料,可以以极高的效率来编写这样的代码。然而,如果比萨店的青椒用完了,为妥善处理这种情况,可在for循环中包含一条if语句,如果顾客点的是青椒,就指出不能点青椒的原因,剩下的配料按照原方式处理。

图片发自简书App

对应大大的代码,我把第九行的if语句稍作改动,变成了无材料不添加。对应写了一else语句,这样顾客就可以知道在他点的配料里有哪些是可以添加的,有哪些是无法添加的

图片发自简书App

2.确定列表不是空的

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

在制作比萨前先检查顾客点的配料列表是否为空。如果列表是空的,就向顾客确认他是否要点普通比萨;如果列表不为空,就像前面的示例那样制作比萨。

在这里,我们首先创建了一个空列表,其中不包含任何配料,在循环运行前我们检查顾客点的配料列表是否为空。

图片发自简书App

在if语句中将列表名用在条件表达式中时,Python将在列表至少包含一个元素时返回True,并在列表为空时返回False。

当顾客点的配料列表为空时,if语句返回False,跳过了循环直接执行与if相对应的else语句(12行),打印出Are you sure you want a plain pizza?

图片发自简书App

3.使用多个列表

顾客的要求往往五花八门,在比萨配料方面尤其如此。因此我们可以使用两个列表和if语句在满足顾客要求的同时拒绝怪异要求。在大大的代码中定义了两个列表,其中第一个列表requested_toppings是顾客点的配料,第二个列表available_toppings是比萨店供应的配料。对于顾客点的每个配料,都检查它是否是披萨店供应的配料,再决定是否在比萨中添加它。

请注意,如果比萨店供应的配料是固定的,也可使用一个元组来存储它们。

图片发自简书App

4.设置if语句的格式

在条件测试的格式设置方面,PEP 8提供的唯一建议是,在诸如==、 >=和<= 等比较运算符两边各添加一个空格,例如,if age < 4:要比if age<4:好。

这样的空格不会影响Python对代码的解读,而只是让代码阅读起来更容易。

5.小结

本章内容为if语句,通if语句可以对列表中不同元素执行不同的处理。

每条if语句的核心都是一个值为True或False的表达式,这种表达式被称为条件测试。Python根据条件测试的值为True还是False来决定是否执行if语句中的代码。如果条件测试的值为True,Python就执行紧跟在if语句后面的代码;如果为False,Python就忽略这些代码,转而执行elif或else后面的代码,如果这个if语句没有配套的elif或else语句,Python不执行代码。

本章中要熟练掌握if-elif-else语句,但不是所有情况都可以这么写。

(1)Python并不要求if-elif结构后面必须有else代码块。在有些情况下,else代码块很有用;而在其他一些情况下,使用一条elif语句来处理特定情形更清晰。else是一条包罗万象的语句,只要不满足任何if或elif中的条件测试,其中的代码就会执行,这可能会引入无效甚至恶意的数据。如果知道最终要测试的条件,应考虑使用一个elif代码块来代替else代码块。这样,你就可以肯定,仅当满足相应的条件时,你的代码才会执行。

(2)if-elif-else语句仅适用于只有一个条件满足的情况,遇到通过了的测试后,Python就跳过余下测试,如果需要检查你所关心的所有条件,应使用一系列不包含elif和else代码块的简单if语句。在可能有多个条件为True,且你需要在每个条件为True时都采取相应措施时,适合使用这种方法。

使用if语句还可以检查特殊元素,确定列表非空,在多个列表中建立元素之间的联系。

if语句就像循环语句一样非常常见,且其后的缩进写法也同for循环一致。学会了if和for我们已经可以写出很多简单程序了。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,793评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,567评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,342评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,825评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,814评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,680评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,033评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,687评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,175评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,668评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,775评论 1 332
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,419评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,020评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,978评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,206评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,092评论 2 351
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,510评论 2 343

推荐阅读更多精彩内容