Python:核心知识点整理大全10-笔记

目录

5.4 使用 if 语句处理列表

5.4.1 检查特殊元素

toppings.py

5.4.2 确定列表不是空的

5.4.3 使用多个列表

5.5 设置 if 语句的格式

5.6 小结

第6章

字 典

6.1 一个简单的字典

alien.py

6.2 使用字典

6.2.1 访问字典中的值

6.2.2 添加键—值对

6.2.3 先创建一个空字典

有时候,在空字典中添加键—值对是为了方便,而有时候必须这样做。为此,可先使用一对 空的花括号定义一个字典,再分行添加各个键—值对。例如,下例演示了如何以这种方式创建字 典alien_0:

往期快速传送门👆(在文章最后):


5.4 使用 if 语句处理列表

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

5.4.1 检查特殊元素

本章开头通过一个简单示例演示了如何处理特殊值'bmw'——它需要采用不同的格式进行打 印。既然你对条件测试和if语句有了大致的认识,下面来进一步研究如何检查列表中的特殊值, 并对其做合适的处理。

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

toppings.py

requested_toppings = ['mushrooms', 'green peppers', 'extra cheese']
for requested_topping in requested_toppings:print("Adding " + requested_topping + ".")
print("\nFinished making your pizza!")

输出很简单,因为上述代码不过是一个简单的for循环:

Adding mushrooms.
Adding green peppers.
Adding extra cheese.
Finished making your pizza!

然而,如果比萨店的青椒用完了,该如何处理呢?为妥善地处理这种情况,可在for循环中 包含一条if语句:

requested_toppings = ['mushrooms', 'green peppers', 'extra cheese']
for requested_topping in requested_toppings:
1 if requested_topping == 'green peppers':print("Sorry, we are out of green peppers right now.")
2 else:print("Adding " + requested_topping + ".")
print("\nFinished making your pizza!") 

这里在比萨中添加每种配料前都进行检查。1处的代码检查顾客点的是否是青椒,如果是, 就显示一条消息,指出不能点青椒的原因。2处的else代码块确保其他配料都将添加到比萨中。 输出表明,妥善地处理了顾客点的每种配料:

Adding mushrooms.
Sorry, we are out of green peppers right now.
Adding extra cheese.
Finished making your pizza!

5.4.2 确定列表不是空的

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

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

1 requested_toppings = []
2 if requested_toppings:for requested_topping in requested_toppings:print("Adding " + requested_topping + ".")print("\nFinished making your pizza!")
3 else:print("Are you sure you want a plain pizza?")

在这里,我们首先创建了一个空列表,其中不包含任何配料(见1)。在2处我们进行了简 单检查,而不是直接执行for循环。在if语句中将列表名用在条件表达式中时,Python将在列表 至少包含一个元素时返回True,并在列表为空时返回False。如果requested_toppings不为空,就 运行与前一个示例相同的for循环;否则,就打印一条消息,询问顾客是否确实要点不加任何配 料的普通比萨(见3)。

在这里,这个列表为空,因此输出如下——询问顾客是否确实要点普通比萨:

Are you sure you want a plain pizza?

如果这个列表不为空,将显示在比萨中添加的各种配料的输出。

5.4.3 使用多个列表

顾客的要求往往五花八门,在比萨配料方面尤其如此。如果顾客要在比萨中添加炸薯条,该 怎么办呢?可使用列表和if语句来确定能否满足顾客的要求。

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

1 available_toppings = ['mushrooms', 'olives', 'green peppers','pepperoni', 'pineapple', 'extra cheese']
2 requested_toppings = ['mushrooms', 'french fries', 'extra cheese']
3 for requested_topping in requested_toppings:
4 if requested_topping in available_toppings:print("Adding " + requested_topping + ".")
5 else:print("Sorry, we don't have " + requested_topping + ".")
print("\nFinished making your pizza!")

在1处,我们定义了一个列表,其中包含比萨店供应的配料。请注意,如果比萨店供应的配 料是固定的,也可使用一个元组来存储它们。在2处,我们又创建了一个列表,其中包含顾客点 的配料,请注意那个不同寻常的配料——'french fries'。在3处,我们遍历顾客点的配料列表。 在这个循环中,对于顾客点的每种配料,我们都检查它是否包含在供应的配料列表中(见4); 如果答案是肯定的,就将其加入到比萨中,否则将运行else代码块(见5):打印一条消息,告 诉顾客不供应这种配料。

这些代码的输出整洁而详实:

Adding mushrooms.
Sorry, we don't have french fries.
Adding extra cheese.
Finished making your pizza! 

通过为数不多的几行代码,我们高效地处理了一种真实的情形!

5.5 设置 if 语句的格式

本章的每个示例都展示了良好的格式设置习惯。在条件测试的格式设置方面,PEP 8提供的唯一 建议是,在诸如==、>=和<=等比较运算符两边各添加一个空格,例如,if age < 4:要比if age<4:好。 这样的空格不会影响Python对代码的解读,而只是让代码阅读起来更容易。

5.6 小结

在本章中,你学习了如何编写结果要么为Ture要么为False的条件测试。你学习了如何编写 简单的if语句、if-else语句和if-elif-else结构。在程序中,你使用了这些结构来测试特定的条 件,以确定这些条件是否满足。你学习了如何在利用高效的for循环的同时,以不同于其他元素 的方式对特定的列表元素进行处理。你还再次学习了Python就代码格式方面提出的建议,这可确 保即便你编写的程序越来越复杂,其代码依然易于阅读和理解。

在第6章,你将学习Python字典。字典类似于列表,但让你能够将不同的信息关联起来。你 将学习如何创建和遍历字典,以及如何将字典同列表和if语句结合起来使用。学习字典让你能够 模拟更多现实世界的情形。

第6章

字 典

6.1 一个简单的字典

来看一个游戏,其中包含一些外星人,这些外星人的颜色和点数各不相同。下面是一个简单 的字典,存储了有关特定外星人的信息:

alien.py

alien_0 = {'color': 'green', 'points': 5}
print(alien_0['color'])
print(alien_0['points'])

字典alien_0存储了外星人的颜色和点数。使用两条print语句来访问并打印这些信息,如 下所示:

green
5 

与大多数编程概念一样,要熟练使用字典,也需要一段时间的练习。使用字典一段时间后, 你就会明白为何它们能够高效地模拟现实世界中的情形。

6.2 使用字典

在Python中,字典是一系列键—值对。每个键都与一个值相关联,你可以使用键来访问与之 相关联的值。与键相关联的值可以是数字、字符串、列表乃至字典。事实上,可将任何Python对 象用作字典中的值。

在Python中,字典用放在花括号{}中的一系列键—值对表示,如前面的示例所示:

alien_0 = {'color': 'green', 'points': 5} 

键—值对是两个相关联的值。指定键时,Python将返回与之相关联的值。键和值之间用冒号 分隔,而键—值对之间用逗号分隔。在字典中,你想存储多少个键—值对都可以。

最简单的字典只有一个键—值对,如下述修改后的字典alien_0所示:

alien_0 = {'color': 'green'} 

这个字典只存储了一项有关alien_0的信息,具体地说是这个外星人的颜色。在这个字典中, 字符串'color'是一个键,与之相关联的值为'green'。

6.2.1 访问字典中的值

要获取与键相关联的值,可依次指定字典名和放在方括号内的键,如下所示:

alien_0 = {'color': 'green'}
print(alien_0['color']) 

这将返回字典alien_0中与键'color'相关联的值:

green

字典中可包含任意数量的键—值对。例如,下面是最初的字典alien_0,其中包含两个键— 值对:

alien_0 = {'color': 'green', 'points': 5} 

现在,你可以访问外星人alien_0的颜色和点数。如果玩家射杀了这个外星人,你就可以使 用下面的代码来确定玩家应获得多少个点:

alien_0 = {'color': 'green', 'points': 5}
1 new_points = alien_0['points']
2 print("You just earned " + str(new_points) + " points!")

上述代码首先定义了一个字典,然后从这个字典中获取与键'points'相关联的值(见1), 并将这个值存储在变量new_points中。接下来,将这个整数转换为字符串,并打印一条消息,指出玩家获得了多少个点(见2):

You just earned 5 points

如果你在有外星人被射杀时都运行这段代码,就会获取该外星人的点数。

6.2.2 添加键—值对

字典是一种动态结构,可随时在其中添加键—值对。要添加键—值对,可依次指定字典名、用 方括号括起的键和相关联的值。

下面在字典alien_0中添加两项信息:外星人的x坐标和y坐标,让我们能够在屏幕的特定位 置显示该外星人。我们将这个外星人放在屏幕左边缘,且离屏幕上边缘25像素的地方。由于屏幕 坐标系的原点通常为左上角,因此要将该外星人放在屏幕左边缘,可将x坐标设置为0;要将该外 星人放在离屏幕顶部25像素的地方,可将y坐标设置为25,如下所示:

alien_0 = {'color': 'green', 'points': 5}
print(alien_0)
1 alien_0['x_position'] = 0
2 alien_0['y_position'] = 25
print(alien_0)

我们首先定义了前面一直在使用的字典,然后打印这个字典,以显示其信息快照。在处, 我们在这个字典中新增了一个键—值对,其中的键为'x_position',而值为0。在处,我们重 复这样的操作,但使用的键为'y_position'。打印修改后的字典时,将看到这两个新增的键— 值对:

{'color': 'green', 'points': 5}
{'color': 'green', 'points': 5, 'y_position': 25, 'x_position': 0} 

这个字典的最终版本包含四个键—值对,其中原来的两个指定外星人的颜色和点数,而新增 的两个指定位置。注意,键—值对的排列顺序与添加顺序不同。Python不关心键—值对的添加顺序, 而只关心键和值之间的关联关系。

6.2.3 先创建一个空字典

有时候,在空字典中添加键—值对是为了方便,而有时候必须这样做。为此,可先使用一对 空的花括号定义一个字典,再分行添加各个键—值对。例如,下例演示了如何以这种方式创建字 典alien_0:

alien_0 = {}
alien_0['color'] = 'green'
alien_0['points'] = 5
print(alien_0)

这里首先定义了空字典alien_0,再在其中添加颜色和点数,得到前述示例一直在使用的 字典:

{'color': 'green', 'points': 5} 

使用字典来存储用户提供的数据或在编写能自动生成大量键—值对的代码时,通常都需要先 定义一个空字典。


Python:核心知识点整理大全1-笔记-CSDN博客

Python:核心知识点整理大全2-笔记-CSDN博客

Python:核心知识点整理大全3-笔记-CSDN博客

Python:核心知识点整理大全4-笔记-CSDN博客

Python:核心知识点整理大全5-笔记-CSDN博客

Python:核心知识点整理大全6-笔记-CSDN博客

Python:核心知识点整理大全7-笔记-CSDN博客

Python:核心知识点整理大全8-笔记-CSDN博客

Python:核心知识点整理大全9-笔记-CSDN博客

往期快速传送门👆(在文章最后):

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/210846.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

智能优化算法应用:基于蜉蝣算法3D无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用&#xff1a;基于蜉蝣算法3D无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用&#xff1a;基于蜉蝣算法3D无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.蜉蝣算法4.实验参数设定5.算法结果6.参考文献7.MA…

JAVA+SSM+springboot+MYSQL企业物资库存进销存管理系统

。该系统从两个对象&#xff1a;由管理员和员工来对系统进行设计构建。主要功能包括首页、个人中心、员工管理、项目信息管理、仓库信息管理、供应商管理、项目计划管理、物资库存管理、到货登记管理、物资出库管理、物资入库管理等功能进行管理。本企业物资管理系统方便员工快…

linux 定时任务

使用 crontab Usage: crontab [-u user] [-e|-l|-r] Crontab 的格式说明如下: * 逗号(‘,’) 指定列表值。如: “1,3,4,7,8″ * 中横线(‘-’) 指定范围值 如 “1-6″, 代表 “1,2,3,4,5,6″ * 星号 (‘*’) 代表所有可能的值 */15 表示每 15 分钟执行一次 # Use the ha…

C++编程法则365天一天一条(24)RTTI运行时类型信息typeid和type_info

文章目录 基本用法编译时或运行时判定 基本用法 typeid 是 C 的一个运算符&#xff0c;它用于获取表达式的类型信息。它返回一个 std::type_info 对象引用&#xff0c;该对象包含有关表达式的类型的信息。 要使用 typeid 运算符&#xff0c;需要包含 <typeinfo> 头文件…

关于振动试验

这是试验的说明&#xff08;来自gbt4710-2009&#xff09; 这是试验的参数&#xff1a; 一、试验方向&#xff1a; 振动试验中有几个方向 除有关规范另有规定外&#xff0c;应在产品的三个互相垂直方向上进行振动试验。 一般定义产品长边为X轴向&#xff0c;短边为Y轴向&…

飞书面试题汇总

面试相关经验 Interview | JavaGuide(Java面试 学习指南) 同学1 7次面试 编程题汇总&#xff1a; 有序链表找中位数 &#xff08;飞书1面&#xff09; m个有序数组合并 &#xff08;飞书1面&#xff09; 海量数据寻找TopK&#xff08;口述&#xff09; &#xff08;飞书…

Android 10(Q) 以上普通 APP 隐藏应用图标问题探究及解决方案

1、实验环境 aosp 版本 10.0 系统 aosp 版本 13.0 系统 2、验证结果 2.1 方式一 APP AndroidManifest.xml 中通过 activity-alias 配置带 LAUNCHER 属性 category&#xff0c;并且 android:enabled“true” 10.0 系统中可安装后正常显示 icon&#xff0c;通过 setComponen…

idea中run和debug是灰色的

【现象】idea中run和debug是灰色的 点击 旁边的Add Configuration…一看都是空白 【解决方法】&#xff1a; npm点开之后 【结果】

文本转图像 学习笔记

VQGAN (Vector Quantized Generative Adversarial Network) 是一种基于 GAN 的生成模型&#xff0c;可以将图像或文本转换为高质量的图像。 VQ &#xff08;Vector Quantization&#xff09;是一种数据压缩技术&#xff0c;是指将连续数据表示为离散化的向量。输入的图像或文本…

转换NC或HDF数据时候转出数据无坐标信息的处理方法

有时候我们在转换NC或HDF数据时&#xff0c;有时候会出现没有坐标信息的情况&#xff01;如下图&#xff1a; 这种情况一般是原始数据将坐标信息存储在说明文件中以便后期做生成坐标信息的处理、或坐标存储的形式比较特殊&#xff0c;造成工具无法读取&#xff01;这种数据处理…

Python迭代器与生成器研究记录

Python迭代器与生成器研究记录 前言 迭代器肯定是可迭代对象&#xff0c;但是可迭代对象不一定是迭代器&#xff0c;生成器一定是迭代器&#xff0c;但是迭代器不一定是生成器 生成器是特殊的迭代器&#xff0c;所以生成器一定是迭代器&#xff0c;迭代器一定是可迭代对象 我…

YOLOv8分割训练及分割半自动标注

YOLOv8是基于目标检测算法YOLOv5的改进版,它在YOLOv5的基础上进行了优化和改进,加入了一些新的特性和技术,如切片注意力机制、骨干网络的选择等。 本文以yolov8-seg为基准,主要整理分割训练流程及使用v8分割模型进行半自动标注的过程。 一、v8-seg训练 1.1 环境配置 github…

【Altera】平台设计器互连会回压 AXI 接口怎么办

说明 实现 AXI 接口的所有组件都具有发行或接受能力设置。每当互连检测到管理器&#xff08;主管理器&#xff09;发出的事务多于管理器的发行容量设置时&#xff0c;互连将通过断言 AxREADY 向管理器背压。每当互连检测到从属&#xff08;从站&#xff09;接收的事务多于从属的…

实用篇 | 一文快速构建人工智能前端展示streamlit应用

----------------------- &#x1f388;API 相关直达 &#x1f388;-------------------------- &#x1f680;Gradio: 实用篇 | 关于Gradio快速构建人工智能模型实现界面&#xff0c;你想知道的都在这里-CSDN博客 &#x1f680;Streamlit :实用篇 | 一文快速构建人工智能前端展…

Activity从下往上弹出视差效果实现

其实这篇文章是转至简书上的大佬的&#xff0c;加上我自己的代码实践了下发现可行&#xff0c;于是就分享下 先看效果 介绍: 其实有很多方法都可以实现这种效果&#xff0c;popwindow&#xff0c;Dialog&#xff0c;BottomSheetDialogFragment&#xff0c;BottomSheetDialog等…

Linux 安装 Gitea.md

### 从官网下载git 和 gitea Git下载地址: https://mirrors.edge.kernel.org/pub/software/scm/git/ 下载 git-2.43.0.tar.gz: https://mirrors.edge.kernel.org/pub/software/scm/git/git-2.43.0.tar.gz Gitea下载地址: https://dl.gitea.com/gitea/ 下载 linux-arm64 的二进…

链表OJ—相交链表

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言 1、相交链表的题目&#xff1a; 方法讲解&#xff1a; 图文解析&#xff1a; 代码实现&#xff1a; 总结 前言 世上有两种耀眼的光芒&#xff0c;一种是正在升…

15.Java程序设计-基于SSM框架的微信小程序校园求职系统的设计与实现

摘要&#xff1a; 本研究旨在设计并实现一款基于SSM框架的微信小程序校园求职系统&#xff0c;以提升校园求职流程的效率和便捷性。通过整合微信小程序平台和SSM框架的优势&#xff0c;本系统涵盖了用户管理、职位发布与搜索、简历管理、消息通知等多个功能模块&#xff0c;为…

爱智EdgerOS之深入解析AI图像引擎如何实现AI视觉开发

一、前言 AI 视觉是为了让计算机利用摄像机来替代人眼对目标进行识别&#xff0c;跟踪并进一步完成一些更加复杂的图像处理。这一领域的学术研究已经存在了很长时间&#xff0c;但直到 20 世纪 70 年代后期&#xff0c;当计算机的性能提高到足以处理图片这样大规模的数据时&am…