网站首页 > 基础教程 正文
通过结合使用if语句和列表,可完成一些有趣的任务:对列表中特定的值做特殊处理;高效的管理不断变化的情形,如餐馆是否还有特定的食材;证明代码在各种情形下都将按预期那样运行。
14.1 检查特殊元素
用户在餐厅点餐,点的配料使用一个列表存储起来,厨师根据配料进行制作:
menu.py
# -*- coding:utf-8 -*-
# 菜单列表
menus = ['egg','sugar','butter']
# 开始制作,循环添加列表内的配料
for menu in menus:
print("汉堡包里面加" + menu)
# 告诉用户做好了
print("\n你点的餐做好了")
输出很简单,因为上述代码只是一个简单的for循环:
汉堡包里面加egg
汉堡包里面加sugar
汉堡包里面加butter
你点的餐做好了
然而,如果餐厅的'egg'用完了,该如何处理呢?没有'egg',制作汉堡包就不能添加这一项了。为了处理这种特殊情况,需要在for循环中添加一条if语句:
# -*- coding:utf-8 -*-
# 菜单列表
menus = ['egg','sugar','butter']
# 开始制作,循环添加列表内的配料
for menu in menus:
if menu == 'egg':
print("对不起,今天鸡蛋买完了")
else:
print("汉堡包里面加" + menu)
# 告诉用户做好了
print("\n你点的餐做好了")
这里在制作汉堡包时,对每种要添加的配料进行检查,如果发现用户点了'egg',就告诉用户,如果点的不是'egg',就将其加入到汉堡包中:
对不起,今天鸡蛋买完了
汉堡包里面加sugar
汉堡包里面加butter
你点的餐做好了
14.2 确定列表不是空的
我们前面处理列表时,都是假设列表不是空的,即至少含有1个元素。但是,在现实情况中,是不能做这种假设的,因为空列表会导致一些错误,因此,必须将列表是否为空考虑进去,在运行for循环前确定列表是否为空很重要。
下面在制作汉堡包前检查用户点的配料列表是否为空。如果列表是空的,就想用户是不是要点普通的汉堡;如果列表不为空,就像前面的示例那样制作汉堡:
# -*- coding:utf-8 -*-
# 菜单列表
menus = [ ]
# 在之前汉堡前 检查用户是否点了配料
if menus:
# 开始制作,循环添加列表内的配料
for menu in menus:
print("汉堡包里面加" + menu)
# 告诉用户做好了
print("\n你点的餐做好了")
# 用户没有添加配料
else:
print("你要点的是没有添加配料的普通汉堡吗?")
首先创建了一个空列表,其中不包含任何配料。在制作汉堡前,先检查先进行检查。if语句中将列表名用在条件表达式中时,Python将在列表至少包含一个元素时返回True,并在列表为空时返回False 。上述代码中,如果列表menus 不为空,则运行与前一个示例相同的for循环;若列表menus 为空,则打印一条消息,询问顾客是不是点的普通汉堡。
在这里,这个列表为空,因此输出一条消息,询问顾客:
你要点的是没有添加配料的普通汉堡吗?
如果这个列表不为,将显示在汉堡中添加各种配料的输出。
14.3 使用多个列表
顾客的要求是五花八门,常常点一下餐厅没有的配料,下面来看看在制作汉堡前如何拒绝顾客怪异的要求。
定义两个列表,其中一个列表包含餐厅供应的配料,另一个列表是顾客点的配料。这次对于menus中的每种配料,都要检查它是否在餐厅供应的配料列表 supply_ingredients 中,如果在 则制作汉堡时才将其添加进去,否则不添加:
# -*- coding:utf-8 -*-
# 餐厅供应的配料列表
supply_ingredients = ['鸡蛋','青菜','辣椒','火腿','培根']
# 顾客点的配料列表
menus = ['火腿','青菜','腊肠','鸡蛋']
# 在之前汉堡前 检查用户是否点了配料
if menus:
# 开始制作,循环添加列表内的配料
for menu in menus:
if menu in supply_ingredients:
print("汉堡包里面加" + menu)
else:
print("对不起,你点的{0}卖完了".format(menu))
# 告诉用户做好了
print("\n你点的餐做好了")
# 用户没有添加配料
else:
print("你要点的是没有添加配料的普通汉堡吗?")
上述代码中,我们定义了一个列表,其中包含了餐厅目前供应的配料。请注意,如果餐厅供应的配料是固定不变的,也可以使用元组来存储它们。在for循环中,对于顾客点的每种配料,都检查它是否包含在供应的配料列表中,如果包含,就将其加入到汉堡中,否则将运行else 代码块,打印消息告诉顾客目前这种配料卖完了。
用户点的配料'腊肠'不在供应的列表中,因此将不添加到汉堡中,代码的具体输出如下:
汉堡包里面加火腿
汉堡包里面加青菜
对不起,你点的腊肠卖完了
汉堡包里面加鸡蛋
你点的餐做好了
通过为数不多的几行代码,我们高效的处理了一种真实的情形!
14.4 设置if语句的格式
在条件测试的格式设置方面,PEP 8提供的唯一建议是,在诸如 ==、>=、<= 等比较运算符两边各加一个空格。例如,下面①的格式就比②更易读:
①
if age <= 18:
②
if age<=18:
这样的空格不会影响Python对代码的解读,而只是让代码阅读起来更容易。
14.5 小结
我们前面讲了条件测试和if语句,以及使用if语句处理列表。在后面的课程中,将开始学习Python字典。字典类似于列表,但能够将不同的信息关联起来。你将学习如何创建和遍历字典,以及如何将字典同列表和if语句结合起来使用。学习字典让你能够模拟更多现实世界的情形。
14.6 实例练习 - 动手试一试
实例1:检查用户名
按下面的说明编写程序,模拟网站确保每位用户的用户名是唯一的。
① 创建一个包含6个用户名的列表,将其命名current_users。
② 再创建一个包含5个用户名的列表,将其命名为new_users,并确保齐总有1-2个用户名也包含在curren_users 中。
③ 变量列表 new_users,对于其中的每个用户名,都检查它是否已被使用。如果是,则打印一条消息,指出需要输入别的用户名;否则,打印消息指出这个用户名未被使用。
④ 确保比较时不区分大小写,例如,若用户名'admin'已被使用,则应拒绝用户名'ADMIN'。
实例2:序数
序数表示位置,如1st 、2nd和3rd。大多数序数都以th结尾,只有1、2、3例外。
① 在一个列表中存储数字1-9
② 遍历这个列表
③ 在循环中使用if - elif - else 结构,以打印每个数字对应的序数。输出内容应为1st、2nd、3rd、4th、5th、6th、7th、8th、9th,但每个序数都要独占一行。
14.7 写在最后
为了方便大家系统性的学习知识和参与项目实战,希望大家关注文章下方的广告区推广的号,是我自己运营的,头条上面很多想做的事情受到了极大的限制,知识内容无法形成结构性,也不方便交流,很多的互动和活动都在那个号上,欢迎加入,感谢支持
猜你喜欢
- 2024-10-21 Python(第五课)条件语句 条件语句 python
- 2024-10-21 Python条件语句 Python条件语句有哪几种
- 2024-10-21 Python入门第4课,if语句进阶学习,巧用“通关”游戏解决难点
- 2024-10-21 Python头条:如果有如果___if语句(上)
- 2024-10-21 简单聊聊Python的if-elif-else语句~#程序员
- 2024-10-21 玩转Python—条件语句使用教程 条件运算python
- 2024-10-21 送给发烧友:Python条件语句的七种写法
- 2024-10-21 python笔记1:一次艰难的判断-if语句
- 2024-10-21 python入门018:if 语句处理列表 python的if语句用法
- 2024-10-21 「文章」16.流程控制语句-if判断语句
- 最近发表
- 标签列表
-
- gitpush (61)
- pythonif (68)
- location.href (57)
- tail-f (57)
- pythonifelse (59)
- deletesql (62)
- c++模板 (62)
- css3动画 (57)
- c#event (59)
- linuxgzip (68)
- 字符串连接 (73)
- nginx配置文件详解 (61)
- html标签 (69)
- c++初始化列表 (64)
- exec命令 (59)
- canvasfilltext (58)
- mysqlinnodbmyisam区别 (63)
- arraylistadd (66)
- node教程 (59)
- console.table (62)
- c++time_t (58)
- phpcookie (58)
- mysqldatesub函数 (63)
- window10java环境变量设置 (66)
- c++虚函数和纯虚函数的区别 (66)