文章目录
- 前言
- 编程语言是什么?
- 编译型语言和解释型语言的区别
- 编译型语言
- 解释型语言
- 编译型语言和解释型语言的差异总结
- 一、Python是什么?Python简介
- 1.1Python是什么?
- 1.2Python简介
- 1.2.1Python优点
- 1.2.2Python的缺点
- 二、Python能干什么?
- 2.1Web应用开发
- 2.2自动化运维
- 2.3人工智能领域
- 2.4网络爬虫
- 2.5科学计算
- 2.6游戏开发
- 三、Python基础语法
- 3.1交互式编程
- 3.2脚本式编程
- 3.3Python标识符
- 3.4Python保留字符
- 3.5单行注释与多行注释
- 单行注释
- 多行注释
- 四、Python变量类型
- 4.1变量赋值
- 4.1.1多个变量赋值
- 4.2变量值的使用规则
- 4.3标准数据类型
- 4.3.1Numbers(数字)
- 4.3.1.1int整数类型
- 4.3.1.2float浮点数类型
- 4.3.2bool布尔类型
- 4.3.3str字符串类型
- 4.3.4list列表类型
- 4.3.5tuple元组
- 4.3.6dict字典
- 4.4数据类型的基本操作
- 4.4.1下标(索引)
- 4.4.1.1正向与反向递增序号
- 4.4.2切片
- 五、Python运算符
- 5.1算术运算符
- 5.1.1运算符“+”
- 5.1.2运算符“-”
- 5.1.3运算符“*”
- 5.1.4运算符“/”
- 5.1.5运算符“//”
- 5.1.6运算符“%”
- 5.1.7运算符“**”
- 5.2比较运算符
- 5.2.1运算符“==”
- 5.2.2运算符“!=”
- 5.2.3运算符“>”
- 5.2.4运算符“<”
- 5.2.5运算符“>=”
- 5.2.6运算符“<=”
- 5.3赋值运算符
- 5.3.1运算符“=”
- 5.3.2运算符“+=”
- 5.3.3运算符“-=”
- 5.3.4运算符“*=”
- 5.3.5运算符“/=”
- 5.3.6运算符“%=”
- 5.3.7运算符“**=”
- 5.3.8运算符“//=”
- 5.4逻辑运算符
- 5.4.1运算符“and”
- 5.4.2运算符“or”
- 5.4.3运算符“not”
- 5.5成员运算符
- 5.5.1运算符“in”
- 5.5.2运算符“not in”
- 5.6身份运算符
- 5.6.1运算符“is”
- 5.6.2运算符“is not”
前言
编程语言是什么?
程序指的就是一系列指令,用来告诉计算机做什么,而编写程序的关键在于,我们需要用计算机可以理解的语言来提供这些指令,可以简单的理解为一种计算机和人都能识别的语言。
一种计算机语言让程序员能够准确地定义计算机所需要使用的数据,并精确地定义在不同情况下所应当采取的行动。
为了有效避开所有影响给计算机传递指令的因素,计算机科学家设计了一些符号,这些符号各有其含义,且之间无二义性,通常称它们为编程语言。编程语言中的每个结构,都有固定的使用格式(称为语法)以及精确的含义(称为语义)。换句话说,编程语言指定了成套的规则,用来编写计算机可以理解的指令。习惯上,我们将这一条条指令称为计算机代码,而用编程语言来编写算法的过程称为编码。
至今,计算机科学家已经开发了成百上千种编程语言,且随着时间演变,这些编程语言又产生
了多个不同的版本。但无论是哪个编程语言,也无论有多少个版本,虽然它们在细节上可能有所不同,无疑它
们都有着固定的、无二义性的语法和语义。
编译型语言和解释型语言的区别
我们编写的源代码是人类语言,我们自己能够轻松理解;但是对于计算机硬件(CPU),源代码就是天书,根本无法执行,计算机只能识别某些特定的二进制指令,在程序真正运行之前必须将源代码转换成二进制指令。
所谓的二进制指令,也就是机器码,是 CPU 能够识别的硬件层面的“代码”,简陋的硬件(比如古老的单片机)
只能使用几十个指令,强大的硬件(PC 和智能手机)能使用成百上千个指令。
然而,究竟在什么时候将源代码转换成二进制指令呢?不同的编程语言有不同的规定:
- 有的编程语言要求必须提前将所有源代码一次性转换成二进制指令,也就是生成一个可执行程序(Windows 下
的 .exe),比如 C 语言、C++、Golang、Pascal(Delphi)、汇编等,这种编程语言称为编译型语言,使用
的转换工具称为编译器。 - 有的编程语言可以一边执行一边转换,需要哪些源代码就转换哪些源代码,不会生成可执行程序,比如 Python、
JavaScript、PHP、Shell、MATLAB 等,这种编程语言称为解释型语言,使用的转换工具称为解释器
简单理解,编译器就是一个“翻译工具”,类似于将中文翻译成英文、将英文翻译成俄文。但是,翻译源代码是一个复杂的过程,大致包括词法分析、语法分析、语义分析、性能优化、生成可执行文件等五个步骤,期间
涉及到复杂的算法和硬件架构。
编译型语言
对于编译型语言,开发完成以后需要将所有的源代码都转换成可执行程序,比如 Windows 下的.exe 文件,可执行程序里面包含的就是机器码。只要我们拥有可执行程序,就可以随时运行,不用再重新编译了,也就是
“一次编译,无限次运行”。
在运行的时候,我们只需要编译生成的可执行程序,不再需要源代码和编译器了,所以说编译型语言可以脱离开发环境运行。
编译型语言不能跨平台表现在两个方面:
-
可执行程序不能跨平台
(可执行程序不能跨平台很容易理解,因为不同操作系统对可执行文件的内部结构有着截然不同的要求,彼此之间也不能兼容。不能跨平台是天经地义,能跨平台反而才是奇葩。比如,不能将 Windows 下的可执行程序拿到 Linux 下使用,也不能将 Linux 下的可执行程序拿到 Mac OS 下使用(虽然它们都是类 Unix 系统)。
另外,相同操作系统的不同版本之间也不一定兼容,比如不能将 x64 程序(Windows 64 位程序)拿到 x86 平台(Windows 32 位平台)下运行。但是反之一般可行,因为 64 位 Windows 对 32 位程序作了很好的兼容性处理。)
-
源代码不能跨平台
(不同平台支持的函数、类型、变量等都可能不同,基于某个平台编写的源代码一般不能拿到另一个平台下编译。)
解释型语言
对于解释型语言,每次执行程序都需要一边转换一边执行,用到哪些源代码就将哪些源代码转换成机器码,用不到的不进行任何处理。每次执行程序时可能使用不同的功能,这个时候需要转换的源代码也不一样。
因为每次执行程序都需要重新转换源代码,所以解释型语言的执行效率天生就低于编译型语言,甚至存在数量级的差距。计算机的一些底层功能,或者关键算法,一般都使用 C/C++ 实现,只有在应用层面(比如网站开发、批处理、小工具等)才会使用解释型语言
在运行解释型语言的时候,我们始终都需要源代码和解释器,所以说它无法脱离开发环境。
当我们说“下载一个程序(软件)”时,不同类型的语言有不同的含义:
- 对于编译型语言,我们下载到的是可执行文件,源代码被作者保留,所以编译型语言的程序一般是闭源的。
- 对于解释型语言,我们下载到的是所有的源代码,因为作者不给源代码就没法运行,所以解释型语言的程序一般是开源的。
相比于编译型语言,解释型语言几乎都能跨平台,“一次编写,到处运行”是真是存在的,而且比比皆是。那么,为什么解释型语言就能快平台呢?
这一切都要归功于解释器!
我们所说的跨平台,是指源代码跨平台,而不是解释器跨平台。解释器用来将源代码转换成机器码,它就是一个可执行程序,是绝对不能跨平台的。
编译型语言和解释型语言的差异总结
类型 | 原理 | 优点 | 缺点 | 语言 |
---|---|---|---|---|
编译型语言 | 通过专门的编译器,将所有源代码一次性转换成特定平台(Windows、Linux 等)执行的机器码(以可执行文件的形式存在)。 | 编译一次后,脱离了编译器也可以运行,并且运行效率高。 | 可移植性差,不够灵活。 | C、C++、Pascal、Object Pascal和Delphi等 |
解释型语言 | 由专门的解释器,根据需要将部分源代码临时转换成特定平台的机器码。 | 跨平台性好,通过不同的解释器,将相同的源代码解释成不同平台下的机器码。 | 一边执行一边转换,效率很低。 | Python、JavaScript、Perl、Shell,甚至Basic语言等都有着解释器来执行。 |
一、Python是什么?Python简介
1.1Python是什么?
编程语言有“高低”之分,而高级语言又有很多种,比如 C++、Java、C#、PHP、JavaScript 等,Python 也是其中之一。从本节开始,我们将正式开始学习 Python 这门高级编程语言,但是在此之前,我们有必要先讨论一下“Python 是什么”。
Python 英文原意为“蟒蛇”,直到 1989 年荷兰人 Guido van Rossum (简称 Guido)发明了一种面向对象的解释型编程语言,并将其命名Python,才赋予了它表示一门编程语言的含义。
说道 Python,它的诞生是极具戏曲性的,据 Guido 的自述记载,Python 语言是他在圣诞节期间为了打发时间开发出来的,之所以会选择 Python 作为该编程语言的名字,是因为他是一个叫 Monty Python 戏剧团体的忠
实粉丝。
Python 语言是在 ABC 教学语言的基础上发展来的;遗憾的是,ABC 语言虽然非常强大,但却没有普及应用,Guido 认为是它不开放导致的。
基于这个考虑,Guido 在开发 Python 时,不仅为其添加了很多 ABC 没有的功能,还为其设计了各种丰富而强大的库,利用这些 Python 库,程序员可以把使用其它语言制作的各种模块(尤其是 C 语言和 C++)很轻松地
联结在一起,因此 Python 又常被称为“胶水”语言。
这里的库和模块,简单理解就是一个个的源文件,每个文件中都包含可实现各种功能的方法(也可称为函数)。从整体上看,Python 语言最大的特点就是简单,该特点主要体现在以下 2 个方面:
- Python 语言的语法非常简洁明了,即便是非软件专业的初学者,也很容易上手。
- 和其它编程语言相比,实现同一个功能,Python 语言的实现代码往往是最短的。
看似 Python 是“不经意间”开发出来的,但丝毫不比其它编程语言差。事实也是如此,自 1991 年Python 第一个公开发行版问世后:
- 2004 年起 Python 的使用率呈线性增长,不断受到编程者的欢迎和喜爱;
- 2010 年,Python 荣膺 TIOBE 2010 年度语言桂冠;
- 2017 年,IEEE Spectrum 发布的 2017 年度编程语言排行榜中,Python 位居第 1 位。
1.2Python简介
python是一种面向对象的、解释型的、通用的、开源的脚本编程语言,它之所以非常流行,个人认为主要有三个原因:
- Python 简单易用,学习成本低,看起来非常优雅干净;
- Python 标准库和第三库众多,功能强大,既可以开发小工具,也可以开发企业级应用;
- Python 站在了人工智能和大数据的风口上,站在风口上,猪都能飞起来。
1.2.1Python优点
1)语法简单
2) Python 是开源的
3) Python 是免费的
4) Python 是高级语言
5) Python 是解释型语言,能跨平台
6) Python 是面向对象的编程语言
7) Python 功能强大(模块众多)
8) Python 可扩展性强
1.2.2Python的缺点
- 运行速度慢
- 代码加密困难
二、Python能干什么?
2.1Web应用开发
Python 经常被用于 Web 开发,尽管目前 PHP、JS 依然是 Web 开发的主流语言,但 Python 上升势头更猛劲。尤其随着 Python 的 Web 开发框架逐渐成熟(比如 Django、flask、TurboGears、web2py 等等),程序员
可以更轻松地开发和管理复杂的 Web 程序。
例如,通过 mod_wsgi 模块,Apache 可以运行用 Python 编写的 Web 程序。Python 定义了 WSGI 标准应用接口来协调 HTTP 服务器与基于 Python 的 Web 程序之间的通信。
2.2自动化运维
很多操作系统中,Python 是标准的系统组件,大多数 Linux 发行版以及 NetBSD、OpenBSD 和 Mac OS X 都集成了 Python,可以在终端下直接运行 Python。
有一些 Linux 发行版的安装器使用 Python 语言编写,例如 Ubuntu 的 Ubiquity 安装器、Red Hat Linux 和Fedora 的 Anaconda 安装器等等。
另外,Python 标准库中包含了多个可用来调用操作系统功能的库。例如,通过 pywin32 这个软件包,我们能访问 Windows 的 COM 服务以及其他 Windows API;使用 IronPython,我们能够直接调用 .Net Framework。
通常情况下,Python 编写的系统管理脚本,无论是可读性,还是性能、代码重用度以及扩展性方面,都优于普通的 shell 脚本。
2.3人工智能领域
人工智能是项目非常火的一个研究方向,如果要评选当前最热、工资最高的 IT 职位,那么人工智能领域的工程师最有话语权。而 Python 在人工智能领域内的机器学习、神经网络、深度学习等方面,都是主流的编程语言。
可以这么说,基于大数据分析和深度学习发展而来的人工智能,其本质上已经无法离开 Python 的支持了,原因至少有以下几点:
- 目前世界上优秀的人工智能学习框架,比如 Google 的 TransorFlow(神经网络框架)、FaceBook 的PyTorch(神经网络框架)以及开源社区的 Karas 神经网络库等,都是用 Python 实现的;
- 微软的 CNTK(认知工具包)也完全支持 Python,并且该公司开发的 VS Code,也已经把 Python 作为第一级语言进行支持。
- Python 擅长进行科学计算和数据分析,支持各种数学运算,可以绘制出更高质量的 2D 和 3D 图像。
2.4网络爬虫
Python 语言很早就用来编写网络爬虫。Google 等搜索引擎公司大量地使用 Python 语言编写网络爬虫。
从技术层面上将,Python 提供有很多服务于编写网络爬虫的工具,例如 urllib、Selenium 和 BeautifulSoup 等,还提供了一个网络爬虫框Scrapy。
2.5科学计算
自1997 年,NASA 就大量使用 Python 进行各种复杂的科学运算。
并且,和其它解释型语言(如 shell、js、PHP)相比,Python 在数据分析、可视化方面有相当完善和优秀的库,例如 NumPy、SciPy、Matplotlib、pandas 等,这可以满足 Python 程序员编写科学计算程序。
2.6游戏开发
很多游戏使用 C++ 编写图形显示等高性能模块,而使用 Python 或 Lua 编写游戏的逻辑。和 Python 相比,Lua 的功能更简单,体积更小;而Python 则支持更多的特性和数据类型。
除此之外,Python 可以直接调用 Open GL 实现 3D 绘制,这是高性能游戏引擎的技术基础。事实上,有很多Python 语言实现的游戏引擎,例如 Pygame、Pyglet 以及 Cocos 2d 等。
三、Python基础语法
3.1交互式编程
交互式编程不需要创建脚本文件,是通过 Python 解释器的交互模式进来编写代码。
Windows 上在安装 Python 时已经安装了交互式编程客户端,提示窗口如下(这里我使用的是python IDLE Shell 3.12.0版本):
接下来,就使用程序员第一次接触编程时的Hello, World!来进行一次示例:
print("Hello,World")
Hello,World
3.2脚本式编程
通过脚本参数调用解释器开始执行脚本,直到脚本执行完毕。当脚本执行完成后,解释器不再有效。
让我们写一个简单的 Python 脚本程序。所有 Python 文件将以 .py 为扩展名。
1)编辑一个test.py的文件,.py文件中写入print(“Hello,World!”)。
2)打开cmd,在cmd中使用命令来运行脚本。
如上图所示,名为test.py的脚本在Windows上以脚本的方式被运行。
3.3Python标识符
在 Python 里,标识符由字母、数字、下划线组成。
在 Python 中,所有标识符可以包括英文、数字以及下划线(_),但不能以数字开头。
Python 中的标识符是区分大小写的。
以下划线开头的标识符是有特殊意义的。以单下划线开头 _foo 的代表不能直接访问的类属性,需通过类提供的接口进行访问,不能用 from xxx import * 而导入。
以双下划线开头的 __foo 代表类的私有成员,以双下划线开头和结尾的 foo 代表 Python 里特殊方法专用的标识,如 init() 代表类的构造函数。
3.4Python保留字符
下面的列表显示了在Python中的保留字。这些保留字不能用作常数或变数,或任何其他标识符名称。
所有 Python 的关键字只包含小写字母。
and | exec | not |
---|---|---|
assert | finally | or |
brek | for | pass |
– | – | – |
class | from | |
continue | global | raise |
– | – | – |
def | if | returm |
del | import | try |
– | – | – |
elif | in | while |
else | is | with |
– | – | – |
except | lambda | yield |
3.5单行注释与多行注释
- 注释:指在程序代码中对程序代码进行解释说明的文字。
- 作用:可以用来写一写代码说明,帮助他人和未来的自己理解代码的意思。
单行注释
单行注释:只为某一句代码进行注释说明代码的作用,用途。
此次示例使用pycharm来进行演示:
(同样,注释不是只能写在代码的很后面,写在代码的上一行和下一行都是可以的,唯独不能写在代码的前面,否则会将代码也给注释掉。)
快捷键:CTRL + /或SHIFT + #
a = input("请输入您的名字") # input为输入,a为变量
print(a) #输出显示变量a的值
多行注释
多行注释:指一次性注释程序的多行的内容。通常可以为python文件、模块、函数或类等功能描述信息
语法格式:
3个连续的成对单引号''' 或者 3个连续的双引号 注释多行内容
"""
这是一段注释内容,可忽略
"""
四、Python变量类型
变量是存储在内存中的值,这就意味着在创建变量时会在内存中开辟一个空间。
基于变量的数据类型,解释器会分配指定内存,并决定什么数据可以被存储在内存中。
因此,变量可以指定不同的数据类型,这些变量可以存储整数,小数或字符。
4.1变量赋值
Python 中的变量赋值不需要类型声明。
每个变量在内存中创建,都包括变量的标识,名称和数据这些信息。
每个变量在使用前都必须赋值,变量赋值以后该变量才会被创建。
等号 = 用来给变量赋值。
等号 = 运算符左边是一个变量名,等号 = 运算符右边是存储在变量中的值。例如:
在这段代码中,a就是变量名,10就是存储在变量中的值,运行后的结果就是a = 10
a = 10
b = 30
print(a,b)
通俗来讲:
变量就是计算机中用于存储数据的盒子,以后想改想用这个数据了,直接拿这个盒子将数据放入变量的过程叫做 赋值。
4.1.1多个变量赋值
python不止允许单个变量的赋值,同时也允许多个变量赋值,例如:
a = b =c =1
print(a,b,c)
对于上面的这段代码,可以这么理解:
- a = 1 ,也就是a的变量值是1
- a = b,a将变量值1同时赋值给了b,所以b的变量值也是1
- 同理,b = c,c的变量值自然也就是1
- 运行后得出的结果自然也就变量值都为1
示例2:(这个示例是突然想到的,并不能算为多个变量赋值)
a = 1
b = 2
c = a
print(a,b,c)
- a的变量值是1
- b的变量值是2
- c的变量值是a
- 而a的变量值是1,既然c的变量值是a,那么c的变量值也是1
- 也就是运行后的结果:1、2、1
4.2变量值的使用规则
Python的程序是从上到下执行的,变量必须先定义,后调用,否则报错。
变量名定义规则:
- 变量名只能由字母、数字、下划线的任意组合 ,且不能数字开头
python3支持中文作为变量名 , 最好不要用中文定义变量名
2a = 15
- 关键字不能声明为变量名
1)关键字是Python语言中一些已经被赋予特定意义的单词
2)python所有关键字
False | None | True |
---|---|---|
and | as | assert |
– | – | – |
break | class | continue |
– | – | – |
def | del | elif |
else | except | finally |
– | – | – |
for | from | global |
if | import | in |
– | – | – |
is | lambda | nonlocal |
not | or | pass |
raise | return | try |
– | – | – |
while | with | yield |
4.3标准数据类型
在内存中存储的数据可以有多种类型。
例如,一个人的年龄可以用数字来存储,他的名字可以用字符来存储。
Python 定义了一些标准类型,用于存储各种类型的数据。
Python有五个标准的数据类型:
- Numbers(数字)
- String(字符串)
- List(列表)
- Tuple(元组)
- Dictionary(字典)
4.3.1Numbers(数字)
Python支持四种不同的数字类型:
- int(有符号整型)
- long(长整型,也可以代表八进制和十六进制)
- float(浮点型)
- complex(复数)
4.3.1.1int整数类型
整数:指没有小数的部分
Python中的整数包括 正整数、0、负整数
整数通常记录:身份证,年龄,序号,年份,人数 等整数相关动态
a = 1
b = 2
ID number = 41230579520156347x
age = 18
c = -1
4.3.1.2float浮点数类型
浮点数类型也就是小数类型,如:1.23,3.1415926
浮点数包括 正数,0.0 ,负数
用来记录:人的身高,体重,薪资等小数相关的动态
stature = 1.88
weight = 120.59
在Python中,常有两种方法来表示小数
- 十进制模式(1.123)
- 指数模式 (科学计数法)
4.3.2bool布尔类型
用来表示真和假的类型,一个布尔值只有True、False两种值(请注意大小写)
True -》真 -》条件满足或成立
False -》假 -》条件不满足或不成立
总结:bool类型就是用于代表某个事情的 真(对) 或 假(错)
a = input("请输入一个数字:")
b = input(("请输入一个数字:"))
print(a > b )
4.3.3str字符串类型
字符串是以 单引号、双引号、三引号括起来的任意文本
单引号和双引号只是一种表示方式,它们没有区别
a = '小明'
b = "小飞"
c = """小刚"""
print(a,b,c)
字符串只能进行 “相加” 和 “相乘” 运算:
- 相加: 其实就是简单的字符拼接(注意:字符串只能和字符串相加)
a = '小明'
b = "小飞"
c = """小刚"""
print(a + b + c)
- 相乘: 相当于字符串和自己相加了5次(注意:字符串只能和数字相乘)
a = '小明'
b = "小飞"
c = """小刚"""
print(a * 5)
4.3.4list列表类型
List(列表) 是 Python 中使用最频繁的数据类型。
列表可以完成大多数集合类的数据结构实现。它支持字符,数字,字符串甚至可以包含列表(即嵌套)。
列表用 [ ] 标识,是 python 最通用的复合数据类型。
列表中值的切割也可以用到变量 [头下标:尾下标] ,就可以截取相应的列表,从左到右索引默认 0 开始,从右到左索引默认 -1 开始,下标可以为空表示取到头或尾。
- 列表创建1:
l = ['小飞',10,'0.12','abc']
print(l)
print(type(l))
- 列表创建2
l = list(range(1,11)) #包头不包尾
print(l)
print(type(l))
- 列表创建3
l = list(range(0,11,2)) #包头不包尾
print(l)
print(type(l))
0为start 开始,11为stop 结束,2为步长
4.3.5tuple元组
元组是另一个数据类型,类似于 List(列表)。
元组用 () 标识。内部元素用逗号隔开。但是元组不能二次赋值,相当于只读列表。
元组是不可更改的
- 元组创建1
t = (1,2,3,'小飞','abc')
print(t)
print(type(t))
- 元组创建2
t = tuple(range(1,11))
print(t)
print(type(t))
- 元组创建3
t = tuple(range(0,11,2))
print(t)
print(type(t))
4.3.6dict字典
字典(dictionary)是除列表以外python之中最灵活的内置数据结构类型。列表是有序的对象集合,字典是无序的对象集合。
两者之间的区别在于:字典当中的元素是通过键来存取的,而不是通过偏移存取。
字典用"{ }"标识。字典由索引(key)和它对应的值value组成。
t = dict({'name':'小明','age':'18'})
print(t)
print(type(t))
4.4数据类型的基本操作
4.4.1下标(索引)
下标(Index)是Python中用于访问列表、元组、字符串等序列类型元素的一种方式。通过使用方括号和整数索引,我们可以访问序列中的特定位置的元素。下标从0开始,表示序列的第一个元素,依次递增。
注意:
下标必须是整数,不能是浮点数或其他非整数类型。
如果下标超出了序列的范围,会引发IndexError异常。例如,对于空列表
[ ],任何非零的下标都会引发异常。
Python中的字符串是不可变的,因此可以通过下标来修改字符串中的单个字符。但是,这样做实际上是创建了一个新的字符串对象,而不是在原始字符串上进行修改。
4.4.1.1正向与反向递增序号
访问的下标必须属于列表的下标范围,如果列表不存在这个下标,就会报错。
- 示例1:
list1 = ['小明',1,'a',1.2,'1','1.2']
print(list1[3])
(这个列表中一共6个字符,但是按照下标则为0,1,2,3,4,5
也就对应[‘小明’,1,‘a’,1.2,‘1’,‘1.2’])
- 示例2
list1 = ['小明',1,'a',1.2,'1','1.2']
print(list1[3:6])
(这一个示例取出的是下标3和下标6中间字符,包头不包尾)
- 示例3
list1 = ['小明',1,'a',1.2,'1','1.2']
print(list1[0:6:2])
(按照步长2来进行取值,步长2可以理解为夸两个值取一个值)
- 示例4
list1 = ['小明',1,'a',1.2,'1','1.2']
print(list1[-1:-6:-2])
4.4.2切片
切片(Slice)是Python中一种非常强大的功能,它允许你从序列(如字符串、列表、元组等)中提取一部分元素。切片操作通过指定起始索引和结束索引来实现,其中起始索引是包含的,而结束索引是不包含的。切片操作可以用于字符串、列表和元组等序列类型。
- 语法规则:
序列[start: end:step=1] 来截取响应的字符串
start : 开始的下标
end : 结束的下标(包头不包尾)
step : 步长 默认为1
start如果为空,则默认从头开始切
如果 步长是正数
头在左边
如果 步长是负数
头在右边
end如果为空,则默认切到最后
如果 步长是正数
尾巴在右边
如果 步长是负数
尾巴在左边
list1 = ['小明',1,'a',1.2,'1','1.2']
list2 = list1[1:3:1]
print(list2)
五、Python运算符
Python语言支持以下类型的运算符:
- 算术运算符
- 比较(关系)运算符
- 赋值运算符
- 逻辑运算符
- 位运算符
- 成员运算符
- 身份运算符
5.1算术运算符
算术运算符:就是用来完成基本的算术运算的符号
5.1.1运算符“+”
两个对象相加,int类型相加与数学中的加法运算一样,str类型相加则是将两个字符串拼接在一起。
如:int类型相加。
a = 10
b = 20
c = a + b
print(c)
str类型相加。
a = "10"
b = "20"
c = a + b
print(c)
注意:int类型无法与str类型相加。
5.1.2运算符“-”
得到负数或是一个数减去另一个数,“-”只能用于int类型。
a = 30
b = 15
c = a - b
print(c)
5.1.3运算符“*”
两个数相乘或是返回一个被重复若干次的字符串,可用于int类型,也可以用于str类型。
如:int类型的使用。
a = 30
b = 15
c = a * b
print(c)
str类型的使用。
a = '小飞'
b = '小雷'
c = a * 5 + b * 5
print(c)
5.1.4运算符“/”
除法(和数学中的规则一样)
a = 15
b = 4
print(a / b)
5.1.5运算符“//”
取整除 - 返回商的整数部分(向下取整)
a = 15
b = 4
print(a // b)
5.1.6运算符“%”
取余 - 返回除法的余数
a = 15
b = 4
print(a % b)
5.1.7运算符“**”
幂运算/次方运算,即返回 x 的 y 次方
a = 4
b = 4
print(a ** b)
5.2比较运算符
5.2.1运算符“==”
比较对象是否相等。int类型与str类型都可以使用。
# int类型
a = 10
b = 10
print(a == b)
# str类型
c = "小飞"
d = "小红"
print(d == c)
5.2.2运算符“!=”
比较两个对象是否不相等,同样int和str类型都可以使用。
# int类型
a = 10
b = 10
print(a != b)
# str类型
c = "小飞"
d = "小红"
print(d != c)
5.2.3运算符“>”
返回x是否大于y,与数学中的大于号对等。
# int类型
a = 10
b = 10
print(a > b)
# str类型
c = "小飞"
d = "a"
print(c > d)
5.2.4运算符“<”
返回x是否小于y。
# int类型
a = 10
b = 10
print(a < b)
# str类型
c = "小飞"
d = "a"
print(c < d)
5.2.5运算符“>=”
返回x是否大于等于y。
# int类型
a = 10
b = 10
print(a >= b)
# str类型
c = "小飞"
d = "a"
print(c >= d)
5.2.6运算符“<=”
返回x是否小于等于y。
# int类型
a = 10
b = 10
print(a <= b)
# str类型
c = "小飞"
d = "a"
print(c <= d)
5.3赋值运算符
5.3.1运算符“=”
简单的赋值运算符
c = a + b 将 a + b 的运算结果赋值为 c
a = 10
b = 20
c = a + b
print(c)
此外,链式赋值和交叉赋值同样都是赋值的方式。
# 链式赋值
a = b =c =10
print(a,b,c)
# 交叉赋值
e,f,g = 10,20,30
print(e,f,g)
5.3.2运算符“+=”
加法赋值运算符。
x += y 的等价形式为 x = x + y。
a = 1
a += 10
print(a)
5.3.3运算符“-=”
减法赋值运算符。
x -= y 的等价形式为 x = x - y。
a = 10
a -= 1
print(a)
5.3.4运算符“*=”
乘法赋值运算符。
x *= y 的等价形式为 x = x * y。
a = 10
a *= 2
print(a)
5.3.5运算符“/=”
除法赋值运算符。
x /= y 的等价形式为 x = x / y。
a = 10
a /= 2
print(int(a))
5.3.6运算符“%=”
取余赋值运算符。
x %= y 的等价形式为 x = x % y。
a = 10
a %= 2
print(a)
5.3.7运算符“**=”
幂赋值运算符。
x **= y 的等价形式为 x = x ** y。
a = 10
a **= 2
print(a)
5.3.8运算符“//=”
取整除赋值运算符。
x //= y 的等价形式为 x = x // y。
a = 10
a //= 3
print(a)
5.4逻辑运算符
5.4.1运算符“and”
布尔"与" - 如果 x 为 False,x and y 返回 False,否则它返回 y 的计算值。
当 a 和 b 两个表达式都为真时,a and b 的结果才为真,否则为假。
a = int(input('请输入一个数字:')) > 100
b = input('请输入是否是幸运数字:') == '是'
print(a and b )
5.4.2运算符“or”
布尔"或" - 如果 x 是非 0,它返回 x 的计算值,否则它返回 y 的计算值。
当 a 和 b 两个表达式都为假时,a or b 的结果才是假,否则为真。
a = int(input('请输入一个数字:')) > 100
b = input('请输入是否是幸运数字:') == '是'
print(a or b )
5.4.3运算符“not”
布尔"非" - 如果 x 为 True,返回 False 。如果 x 为 False,它返回 True。
如果 a 为真,那么 not a 的结果为假;如果 a 为假,那么 not a 的结果为真。相当于对 a 取反。
a = int(input('请输入一个数字:')) > 100
b = input('请输入是否是幸运数字:') == '是'
print(not a )
5.5成员运算符
5.5.1运算符“in”
如果在指定的序列中找到值返回 True,否则返回 False。
x 在 y 序列中 , 如果 x 在 y 序列中返回 True。
a = "小明在睡觉"
print(a in "小明在睡觉")
5.5.2运算符“not in”
如果在指定的序列中没有找到值返回 True,否则返回 False。
x 不在 y 序列中 , 如果 x 不在 y 序列中返回 True。
a = "小明在睡觉"
print(a not in "小明在睡觉")
5.6身份运算符
5.6.1运算符“is”
is 是判断两个标识符是不是引用自一个对象。
x is y, 类似 id(x) == id(y) , 如果引用的是同一个对象则返回 True,否则返回 False
a = [1,2,3]
b = a
print(a is b)
5.6.2运算符“is not”
is not 是判断两个标识符是不是引用自不同对象 。
x is not y , 类似 id(a) != id(b)。如果引用的不是同一个对象则返回结果 True,否则返回 False。
a = [1,2,3]
b = a
c = [4,5,6]
print(a is not c)