python由0到1的基础第一篇(基础语法、变量类型、运算符)

news2024/11/15 13:55:36

文章目录

  • 前言
    • 编程语言是什么?
    • 编译型语言和解释型语言的区别
      • 编译型语言
      • 解释型语言
      • 编译型语言和解释型语言的差异总结
  • 一、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的缺点

  1. 运行速度慢
  2. 代码加密困难

二、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 的关键字只包含小写字母。

andexecnot
assertfinallyor
brekforpass
classfromprint
continueglobalraise
defifreturm
delimporttry
elifinwhile
elseiswith
exceptlambdayield

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所有关键字
FalseNoneTrue
andasassert
breakclasscontinue
defdelelif
elseexceptfinally
forfromglobal
ifimportin
islambdanonlocal
notorpass
raisereturntry
whilewithyield

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)

在这里插入图片描述

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

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

相关文章

iview form 动态表单

最开始用得网上得 <FormItemlabel"采购方开户行":rules"baseForm.receiptType 12? baseInfoRule.procureBank: [{ required: false }]"><Inputv-model"baseForm.procureBank"placeholder"请输入采购方开户行"style"w…

RISC-V架构——中断处理和中断控制器介绍

1、ARM架构中断机制介绍 本文不是从零开始讲解中断&#xff0c;对于中断的基本知识不再赘述&#xff0c;对中断不是很了解可以先学习ARM中断的文章。参考博客&#xff1a;《ARM架构的外部中断介绍(S5PV210芯片)》&#xff1b; 2、RIAC_V架构的中断控制器架构 &#xff08;1&…

如何运用设计模式中的享元模式

文章目录 &#x1f31f; 如何将设计模式中的享元模式运用到生活当中&#x1f34a; 什么是享元模式&#x1f34a; 生活中的应用&#x1f389; 衣物&#x1f389; 图书馆 &#x1f34a; 总结 &#x1f4d5;我是廖志伟&#xff0c;一名Java开发工程师、Java领域优质创作者、CSDN博…

WORD中的表格内容回车行距过大无法调整行距

word插入表格&#xff0c;编辑内容&#xff0c;换行遇到如下问题&#xff1a; 回车后行距过大&#xff0c;无法调整行距。 解决方法&#xff08;并行&#xff09;&#xff1a; 方法1&#xff1a;选中要调整的内容&#xff0c;菜单路径&#xff1a;“编辑-清除-格式” 方法2&am…

Unity3D 基础——WASD控制物体移动

using System.Collections; using System.Collections.Generic; using UnityEngine;public class MotionControl : MonoBehaviour {public float speed 3f; //定义一个速度// Start is called before the first frame updatevoid Start(){}// Update is called once per fram…

一文读懂MT4:从小白到专家,MT4教程全解析!

亲爱的读者&#xff0c;欢迎来到这篇全面解析MT4交易平台的文章。无论你是刚刚接触金融交易&#xff0c;还是已经有一定经验的投资者&#xff0c;这篇文章都将为你提供深入浅出的MT4使用指南。通过阅读本文&#xff0c;你将能够全面了解并掌握MT4交易平台的使用技巧和操作方法。…

JAVA 链式编程和建造者模式的使用(lombok的使用)

0.说明 0.1 链式编程 链式编程的原理是返回一个this对象&#xff0c;也就是返回对象本身&#xff0c;从而达到链式效果。这样可以减少一些代码量&#xff0c;是java8新增的内容。 此处主要介绍在新建对象使用链式编程更加方便的创建对象。链式编程的一些常见用法可以看这个&a…

使用scapy 分析报文

比wireshark 更 happy udp 就简易的多&#xff0c;tcp 可能在设置bpf 时 多加几个条件 由于协议分析是手写的,所以可以对数据包的交互记录到excel 中再次进行分析

2024年天津中德应用技术大学专升本物流管理专业课考试大纲

天津中德应用技术大学物流管理专业&#xff08;高职升本科&#xff09;2024年专业基础考试大纲 一、试卷类型 物流管理专业升本专业课考试共1套试卷&#xff0c;总分200分&#xff0c;考试时间为2小时。内容包含仓储与配送管理40%、物流基础30%&#xff0c;运输管理30%&#…

双十一期间高预算广告增加,开发者如何精细化运营才能达到抢量增收目标?

随着双十一时间节点的临近&#xff0c;“双十一”大促也迎来了推广高峰&#xff0c;通常&#xff0c;大家总是认为推广高峰就是媒体收益高峰&#xff0c;但很多在变现的开发者都深有体会的是&#xff0c;广告主的投放高峰并不意味着收益高峰&#xff0c;很多开发者总结以往经验…

博通BCM575系列RDMA网卡驱动bnxt_re分析(一)

简介 整个BCM系列驱动分成以太网部分(bnxt_en.ko)和RDMA部分(bnxt_re.ko), 两个模块之间通过内核的auxiliary_bus进行管理.我们主要分析下bnxt_re驱动. 代码结构 这个驱动的核心是 qplib_fp.c, 这个文件主要包含了驱动的数据路径, 包括Post Send, Post Recv, Poll CQ流程的实…

项目管理-2023西电网课课后习题答案-第四章

文章目录 第四章答案1-1011-20 [✅] 第一章答案[✅] 第二章答案[✅] 第三章答案[✅] 第四章答案[✅] 第五章答案 第四章答案 1-10 11-20

在 history 模式下,为什么刷新页面会出现404?

1、原因 因为浏览器在刷新页面时&#xff0c;它会向服务器发送 GET 请求&#xff0c;但此时服务器并没有配置相应的资源来匹配这个请求&#xff0c;因此返回 404 错误。 2、解决方案 为了解决这个问题&#xff0c;我们需要在服务器端进行相关配置&#xff0c;让所有的路由都指…

质子 8.0-4 发布,支持更多 Linux 上的 Windows 游戏

导读Valve 近日发布了 Proton 8.0-4&#xff0c;这是 Steam Play 基于 Wine 和其他组件的开源兼容工具的最新版本&#xff0c;可让 Linux 用户玩 Windows 游戏。 在 Proton 8.0-3 发布两个半月后&#xff0c;Proton 8.0-4 正式支持更多 Windows 游戏在 Linux 上运行&#xff0c…

怎么禁止U盘拷贝电脑资料

怎么禁止U盘拷贝电脑资料 现如今U盘已经成为了人们日常传输文件的主要方式之一&#xff0c;U盘在给我们提供便利的同时&#xff0c;也带来了一些安全隐患&#xff0c;比如U盘可以轻松地复制电脑文件&#xff0c;这可能会导致机密信息泄露。因此&#xff0c;本文将介绍一些方法…

2023-10学习笔记

1.sql注入 不管是上一篇博客&#xff0c;通过java代码执行sql 还是我们常用的Mybatis的#{}和${} 都会提到sql注入的问题 1.1啥是sql注入 应该知道是说传入无关的参数&#xff0c;比如本来是想要一个where条件查询参数 但是你拼了一个drop 比如 原来的sql select * from…

经典卷积神经网络 - ResNet

ResNet是一种残差网络&#xff0c;咱们可以把它理解为一个子网络&#xff0c;这个子网络经过堆叠可以构成一个很深的网络。 我们一直在加深神经网络&#xff0c;但是加深不一定只会带来好处。 残差块 串联一个层改变函数类&#xff0c;我们希望能扩大函数类残差块加入快速通…

Unity的碰撞检测(三)

温馨提示&#xff1a;本文基于前一篇“Unity的碰撞检测(二)”继续探讨两个游戏对象具备刚体的碰撞检测&#xff0c;阅读本文则默认已阅读前文。 &#xff08;一&#xff09;测试说明 在基于两个游戏对象都具备碰撞器和刚体且属性一致的条件下&#xff0c;若二者刚体的BodyType…

常用数据分析可视化图表解析之【雷达图】

雷达图&#xff08;Radar Chart&#xff09; 基础介绍 雷达图是一种常用的数据可视化图表&#xff0c;通过使用多边形的边和顶点来表示多个变量或维度的数据。每个变量或维度对应于雷达图的一个轴&#xff0c;数据值则通过距离中心点的距离来表示。 雷达图可以直观地展示不同…

为何各大厂现在只招测试开发了?

近期闲着无聊晚上有空会刷下boss&#xff0c;发现现在各种互联网大厂绝大部分测试相关岗位都变成了测试开发工程师&#xff0c;这就是说就算最后是被拉去做业务测试&#xff0c;也得具备测试开发的能力了&#xff0c;这是间接把行业门槛变高了&#xff1f;&#xff1f;那不会测…