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

目录

​编辑

4.5 元组

4.5.1 定义元组

dimensions.py

4.5.2 遍历元组中的所有值

4.5.3 修改元组变量

4.6 设置代码格式

4.6.1 格式设置指南

4.6.2 缩进

4.6.3 行长

4.6.4 空行

4.6.5 其他格式设置指南

4.7 小结

第5章

if语句

5.1 一个简单示例

cars.py

5.2 条件测试

5.2.1 检查是否相等

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

5.2.3 检查是否不相等

toppings.py

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


4.5 元组

列表非常适合用于存储在程序运行期间可能变化的数据集。列表是可以修改的,这对处理网 站的用户列表或游戏中的角色列表至关重要。然而,有时候你需要创建一系列不可修改的元素, 元组可以满足这种需求。Python将不能修改的值称为不可变的,而不可变的列表被称为元组。

4.5.1 定义元组

元组看起来犹如列表,但使用圆括号而不是方括号来标识。定义元组后,就可以使用索引来 访问其元素,就像访问列表元素一样。

例如,如果有一个大小不应改变的矩形,可将其长度和宽度存储在一个元组中,从而确保它 们是不能修改的:

dimensions.py
1 dimensions = (200, 50)
2 print(dimensions[0])
print(dimensions[1])

我们首先定义了元组dimensions(见1),为此我们使用了圆括号而不是方括号。接下来,我 们分别打印该元组的各个元素,使用的语法与访问列表元素时使用的语法相同(见2):

200
50

下面来尝试修改元组dimensions中的一个元素,看看结果如何:

dimensions = (200, 50)
1 dimensions[0] = 250

1处的代码试图修改第一个元素的值,导致Python返回类型错误消息。由于试图修改元组的 操作是被禁止的,因此Python指出不能给元组的元素赋值:

Traceback (most recent call last):File "dimensions.py", line 3, in <module>dimensions[0] = 250
TypeError: 'tuple' object does not support item assignment

代码试图修改矩形的尺寸时,Python报告错误,这很好,因为这正是我们希望的。

4.5.2 遍历元组中的所有值

像列表一样,也可以使用for循环来遍历元组中的所有值:

dimensions = (200, 50)
for dimension in dimensions:print(dimension)

就像遍历列表时一样,Python返回元组中所有的元素:

200
50

4.5.3 修改元组变量

虽然不能修改元组的元素,但可以给存储元组的变量赋值。因此,如果要修改前述矩形的尺 寸,可重新定义整个元组:

1 dimensions = (200, 50)
print("Original dimensions:")
for dimension in dimensions:print(dimension)
2 dimensions = (400, 100)
3 print("\nModified dimensions:")
for dimension in dimensions:print(dimension) 

我们首先定义了一个元组,并将其存储的尺寸打印了出来(见1);接下来,将一个新元组 存储到变量dimensions中(见);然后,打印新的尺寸(见3)。这次,Python不会报告任何错 误,因为给元组变量赋值是合法的:

Original dimensions:
200
50
Modified dimensions:
400
100 

相比于列表,元组是更简单的数据结构。如果需要存储的一组值在程序的整个生命周期内都 不变,可使用元组。

4.6 设置代码格式

随着你编写的程序越来越长,有必要了解一些代码格式设置约定。请花时间让你的代码尽可 能易于阅读;让代码易于阅读有助于你掌握程序是做什么的,也可以帮助他人理解你编写的代码。

为确保所有人编写的代码的结构都大致一致,Python程序员都遵循一些格式设置约定。学会 编写整洁的Python后,就能明白他人编写的Python代码的整体结构——只要他们和你遵循相同的 指南。要成为专业程序员,应从现在开始就遵循这些指南,以养成良好的习惯。

4.6.1 格式设置指南

若要提出Python语言修改建议,需要编写Python改进提案(Python Enhancement Proposal, PEP)。PEP 8是最古老的PEP之一,它向Python程序员提供了代码格式设置指南。PEP 8的篇幅很 长,但大都与复杂的编码结构相关。

Python格式设置指南的编写者深知,代码被阅读的次数比编写的次数多。代码编写出来后, 调试时你需要阅读它;给程序添加新功能时,需要花很长的时间阅读代码;与其他程序员分享代 码时,这些程序员也将阅读它们。

如果一定要在让代码易于编写和易于阅读之间做出选择,Python程序员几乎总是会选择后 者。下面的指南可帮助你从一开始就编写出清晰的代码。

4.6.2 缩进

PEP 8建议每级缩进都使用四个空格,这既可提高可读性,又留下了足够的多级缩进空间。 在字处理文档中,大家常常使用制表符而不是空格来缩进。对于字处理文档来说,这样做的 效果很好,但混合使用制表符和空格会让Python解释器感到迷惑。每款文本编辑器都提供了一种 设置,可将输入的制表符转换为指定数量的空格。你在编写代码时应该使用制表符键,但一定要 对编辑器进行设置,使其在文档中插入空格而不是制表符。

在程序中混合使用制表符和空格可能导致极难解决的问题。如果你混合使用了制表符和空 格,可将文件中所有的制表符转换为空格,大多数编辑器都提供了这样的功能。

4.6.3 行长

很多Python程序员都建议每行不超过80字符。最初制定这样的指南时,在大多数计算机中, 终端窗口每行只能容纳79字符;当前,计算机屏幕每行可容纳的字符数多得多,为何还要使用79 字符的标准行长呢?这里有别的原因。专业程序员通常会在同一个屏幕上打开多个文件,使用标 准行长可以让他们在屏幕上并排打开两三个文件时能同时看到各个文件的完整行。

PEP 8还建议 注释的行长都不超过72字符,因为有些工具为大型项目自动生成文档时,会在每行注释开头添加 格式化字符。 PEP 8中有关行长的指南并非不可逾越的红线,有些小组将最大行长设置为99字符。在学习期间,你不用过多地考虑代码的行长,但别忘了,协作编写程序时,大家几乎都遵守PEP 8指南。 在大多数编辑器中,都可设置一个视觉标志——通常是一条竖线,让你知道不能越过的界线在什 么地方。


注意 附录B介绍了如何配置文本编辑器,以使其:在你按制表符键时插入四个空格;显示一条 垂直参考线,帮助你遵守行长不能超过79字符的约定。


4.6.4 空行

要将程序的不同部分分开,可使用空行。你应该使用空行来组织程序文件,但也不能滥用; 只要按本书的示例展示的那样做,就能掌握其中的平衡。例如,如果你有5行创建列表的代码, 还有3行处理该列表的代码,那么用一个空行将这两部分隔开是合适的。然而,你不应使用三四 个空行将它们隔开。

空行不会影响代码的运行,但会影响代码的可读性。Python解释器根据水平缩进情况来解读 代码,但不关心垂直间距。

4.6.5 其他格式设置指南

PEP 8还有很多其他的格式设置建议,但这些指南针对的程序大都比目前为止本书提到的程 序复杂。等介绍更复杂的Python结构时,我们再来分享相关的PEP 8指南。

4.7 小结

在本章中,你学习了:如何高效地处理列表中的元素;如何使用for循环遍历列表,Python 如何根据缩进来确定程序的结构以及如何避免一些常见的缩进错误;如何创建简单的数字列表, 以及可对数字列表执行的一些操作;如何通过切片来使用列表的一部分和复制列表。你还学习了 元组(它对不应变化的值提供了一定程度的保护),以及在代码变得越来越复杂时如何设置格式, 使其易于阅读。

在第5章中,你将学习如何使用if语句在不同的条件下采取不同的措施;学习如何将一组较 复杂的条件测试组合起来,并在满足特定条件时采取相应的措施。你还将学习如何在遍历列表时, 通过使用if语句对特定元素采取特定的措施。

第5章

if语句

5.1 一个简单示例

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

cars.py

cars = ['audi', 'bmw', 'subaru', 'toyota']
for car in cars:
1 if car == 'bmw':print(car.upper())else:print(car.title()) 

这个示例中的循环首先检查当前的汽车名是否是'bmw'(见)。如果是,就以全大写的方式 打印它;否则就以首字母大写的方式打印:

Audi
BMW
Subaru
Toyota 

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

5.2 条件测试

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

5.2.1 检查是否相等

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

1 >>> car = 'bmw'
2 >>> car == 'bmw'
True

我们首先使用一个等号将car的值设置为'bmw'(见1),这种做法你已见过很多次。接下来, 使用两个等号(==)检查car的值是否为'bmw'。这个相等运算符在它两边的值相等时返回True, 否则返回False。在这个示例中,两边的值相等,因此Python返回True。 如果变量car的值不是'bmw',上述测试将返回False:

1 >>> car = 'audi'
2 >>> car == 'bmw'
False

一个等号是陈述;对于1处的代码,可解读为“将变量car的值设置为'audi'”。两个等号是 发问;对于2处的代码,可解读为“变量car的值是'bmw'吗?”。大多数编程语言使用等号的方 式都与这里演示的相同。

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

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

>>> car = 'Audi'
>>> car == 'audi'
False 

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

>>> car = 'Audi'
>>> car.lower() == 'audi'
True

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

1 >>> car = 'Audi'
2 >>> car.lower() == 'audi'
True
3 >>> car
'Audi'

在1处,我们将首字母大写的字符串'Audi'存储在变量car中;在2处,我们获取变量car的 值并将其转换为小写,再将结果与字符串'audi'进行比较。这两个字符串相同,因此Python返回 True。从3处的输出可知,这个条件测试并没有影响存储在变量car中的值。

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

5.2.3 检查是否不相等

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

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

toppings.py

requested_topping = 'mushrooms'
1 if requested_topping != 'anchovies':print("Hold the anchovies!") 

1处的代码行将requested_topping的值与'anchovies'进行比较,如果它们不相等,Python 将返回True,进而执行紧跟在if语句后面的代码;如果这两个值相等,Python将返回False,因此 不执行紧跟在if语句后面的代码。

由于requested_topping的值不是'anchovies',因此执行print语句:

Hold the anchovies! 

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


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

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

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

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

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

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

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

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

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

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

相关文章

以企业架构为中心的SABOE数字化转型五环法

文章目录 01 传统企业数字化转型面临诸多挑战02 SABOE数字化转型五环法为企业转型破除迷雾 01 传统企业数字化转型面临诸多挑战 即将过去的2023年&#xff0c;chatGPT大模型、数据资产入表等事件的发生&#xff0c;标志着数字经济正在加速发展。数字经济是人类社会继农业经济、…

二进制、八进制、十进制、十六进制之间转换 原码、反码、补码

进制之间转换 二进制转十进制八进制转十进制十六进制转十进制十进制转二进制十进制转八进制十进制转十六进制二进制转八进制二进制转十六进制八进制转二进制十六进制转二进制原码、反码、补码 对于整数&#xff0c;有四种表示方式&#xff1a; 二进制&#xff1a;0,1&#xff…

Vue:用IDEA开发Vue,标签语法爆红问题处理

一、场景描述 我在IDEA中&#xff0c;学习Vue课程。 入门学习时&#xff0c;是在html文件中&#xff0c;script引入vue.js文件方式。 此时&#xff0c;在html文件中用v-标签&#xff0c;爆红。 二、解决办法 打开 菜单栏 File - Settings 选择 Editor - Files Type&#xf…

一文了解什么是Selenium自动化测试?

一、Selenium是什么&#xff1f; 用官网的一句话来讲&#xff1a;Selenium automates browsers. Thats it&#xff01;简单来讲&#xff0c;Selenium是一个用于Web应用程序自动化测试工具。Selenium测试直接运行在浏览器中&#xff0c;就像真正的用户在操作浏览器一样。支持的浏…

Hanlp自然语言处理如何再Spring Boot中使用

一、HanLP HanLP (Hankcs NLP) 是一个自然语言处理工具包&#xff0c;具有功能强大、性能高效、易于使用的特点。HanLP 主要支持中文文本处理&#xff0c;包括分词、词性标注、命名实体识别、依存句法分析、关键词提取、文本分类、情感分析等多种功能。 HanLP 可以在 Java、Py…

2023 年山东省职业院校技能大赛(高等职业教育) “信息安全管理与评估”样题

2023 年山东省职业院校技能大赛&#xff08;高等职业教育&#xff09; “信息安全管理与评估”样题 目录 任务 1 网络平台搭建&#xff08;50 分&#xff09; 任务 2 网络安全设备配置与防护&#xff08;250 分&#xff09; 模块二 网络安全事件响应、数字取证调查、应用程序安…

OneNote for Windows10 彻底删除笔记本

找了超多方法&#xff0c;都没有用&#xff0c;我的OneNote都没有文件选项&#xff0c;要在OneDrive中删除&#xff0c;但是一直登不进&#xff0c;然后又找到一个方法&#xff1a; 在网页中打开Office的控制面板 "Sign in to your Microsoft account" 在“最近”一…

DNF 单机联网 搭建教程(附视频)

更多游戏搭建&pvf修改教程请见: DNF教程 注意&#xff1a;请不要将游戏进行商业化&#xff0c;一切后果概不负责。仅供单机&#xff0c;好友之间进行娱乐&#xff01;&#xff01; 注意&#xff1a;请不要将游戏进行商业化&#xff0c;一切后果概不负责。仅供单机&#…

【EI会议征稿】第三届电气、电力与电网系统国际会议(ICEPGS 2024)

第三届电气、电力与电网系统国际会议&#xff08;ICEPGS 2024&#xff09; 2024 3rd International Conference on Electrical, Power and Grid Systems 第三届电气、电力与电网系统国际会议&#xff08;ICEPGS 2024&#xff09;将于2024年1月26-28日在马来西亚吉隆坡隆重举行…

12 位多通道国产芯片ACM32F403/F433 系列,支持 MPU 存储保护功能,应用于工业控制,智能家居等产品中

ACM32F403/F433 芯片的内核基于 ARMv8-M 架构&#xff0c;支持 Cortex-M33 和 Cortex-M4F 指令集。芯片内核 支持一整套DSP指令用于数字信号处理&#xff0c;支持单精度FPU处理浮点数据&#xff0c;同时还支持Memory Protection Unit &#xff08;MPU&#xff09;用于提升应用的…

PHP基础(1)

PHP是一种服务器端脚本语言&#xff0c;是一种用于开发动态Web应用程序的最流行和广泛使用的语言之一。它的全称为“Hypertext Preprocessor”&#xff0c;是一种开源的、可嵌入HTML的脚本语言&#xff0c;可以嵌入到HTML中&#xff0c;也可以直接作为命令行脚本运行。PHP脚本在…

Error: Failed to resolve vue/compiler-sfc——vite项目启动报错——npm run serve

运行项目时&#xff0c;报错如下&#xff1a; Error: Failed to resolve vue/compiler-sfc 根据报错信息的提示&#xff1a;vue的版本必须大于3.2.25&#xff0c;经过查看package.json文件&#xff0c;可以看到vue的版本为3.2.36&#xff0c;是满足条件的。 因此考虑缓存问题&…

Redis数据已经删除了,为什么内存占用还是很高?

Redis数据已经删除了&#xff0c;为什么内存占用还是很高&#xff1f; Redis做了数据删除操作&#xff0c;为什么使用top命令时&#xff0c;还是显示Redis占了很多内存&#xff1f; 没做相关功课的人觉得这个问题有问题&#xff0c;删了数据还说占着内存&#xff0c;面试官不…

uniapp实战 —— 可滚动区域 scroll-view (自适配高度,下拉刷新)

自适配高度 自定义的顶部导航栏&#xff0c;可参考博文 https://blog.csdn.net/weixin_41192489/article/details/134852124 如图可见&#xff0c;在页面滚动过程中&#xff0c;顶部导航栏和底栏未动&#xff0c;仅中间的内容区域可滚动。 整个页面的高度设置为 100%&#xf…

论文阅读《High-frequency Stereo Matching Network》

论文地址&#xff1a;https://openaccess.thecvf.com/content/CVPR2023/papers/Zhao_High-Frequency_Stereo_Matching_Network_CVPR_2023_paper.pdf 源码地址&#xff1a; https://github.com/David-Zhao-1997/High-frequency-Stereo-Matching-Network 概述 在立体匹配研究领域…

HDFS Java API 基本操作实验

文章目录 一、实验环境二、实验内容&#xff08;一&#xff09;数据准备&#xff08;二&#xff09;编程环境准备&#xff08;三&#xff09;使用Hadoop API操作HDFS文件系统&#xff08;四&#xff09;使用Hadoop API Java IO流操作HDFS文件系统 三、实验步骤&#xff08;一&…

CSS import 规则

导入 “navigation.css” 样式到当前的样式表&#xff1a; import “navigation.css”; /* 使用字符串 / 或者 import url(“navigation.css”); / 使用 url 地址 */ 属性定义及使用说明 CSS import 用于从其他样式表导入样式规则。 import 规则必须在 CSS 文档的头部&#xff…

数据结构:栈(Stack)的各种操作(入栈,出栈,判断栈非空,判断栈已满,附源码)

前言&#xff1a;在前面的文章中&#xff0c;我们讲解了顺序表&#xff0c;单链表&#xff0c;双向链表。而我们今天要分享的栈则是基于之前的数据结构上搭建的&#xff0c;但是相较于顺序表和链表来说&#xff0c;栈的实现就非常简单了。 目录 一.栈(Stack)的概念 二.栈的数…

【算法题】数字字符串组合倒序 (js)

解法&#xff1a; const str "I am an 20-years out--standing * -stu- dent";function solution(str) {const arr str.split(" ");const newArr arr.map((str) > {if (/[a-zA-Z0-9-]/.test(str)) {if (/-{2}/g.test(str)) {return str.replace(/-…

Tair(2):Tair安装部署

1 安装相关依赖库 yum install -y gcc gcc-c make m4 libtool boost-devel zlib-devel openssl-devel libcurl-devel yum&#xff1a;是yellowdog updater modified 的缩写&#xff0c;Linux中的包管理工具gcc&#xff1a;一开始称为GNU C Compiler&#xff0c;也就是一个C编…