Python 基础语法:基本数据类型(一)

1  理解代码与写代码

1.1  什么是代码

代码是现实世界事物在计算机世界中的映射。

我们用计算机写代码,是为了利用计算机的高性能来解决现实世界中的问题。要用计算机来解决现实的问题,首先需要在计算机的世界里面把现实世界的一些事物和问题刻画出来。那么代码就是现实世界和计算机世界中间的一个桥梁,所以代码是现实世界在计算机世界中的一个映射。

1.2  什么是写代码

写代码很明显的是一个动作,写代码就是将现实世界中的事物用计算机语言来描述。

举个例子,比如画家画画。画家的画的取材是来源于现实世界的,画家会把现实世界里的一些风景和一些事物画到他的画板上,这实际是一种映射。

画家会用光影,图形,颜色,结构等等这样的一些元素来构成他们一张作品,你一看到这张作品,就知道它画的是现实世界里的什么事物,表达现实世界里的什么情绪等等。

在计算机世界的语言里,我们也需要有一些基本数据类型和一些逻辑思维来表现现实世界里的事物和问题。

2  数字类型(number)

在我们的日常生活中,经常会用到数字,所以数字(numbers)是 pytthon 中的一个基本数据类型。在 python 里面啊,numbers 这种数据类型是一个大类,在 numbers 这个大类下面还有整数、小数等等。

2.1  整形(int)与浮点型(float)

2.1.1  整数(int)
a = 20
b = 0
c = -20
print(type(a)) # <class 'int'>
print(type(b)) # <class 'int'>
print(type(c)) # <class 'int'>
2.1.2  浮点数(float)

在很多其他的语言里面,浮点数(也就是数学里的小数)还有进一步的细分,分单精度和双精度。精度越高能表示的数值就越准确,在其他很多的语言里单精度用 float 来表示,双精度用 double 来表示。双精度表示的精度要比单精要更高一些。

在 python 里面没有单精度和双精度之分,python 浮点数的数据类型只有 float,因为 python 里面的 float 支持的精度就是其他语言里面所谓的双精度。

a = 20.0
b = 1.2
c = -0.5
print(type(a)) # <class 'float'>
print(type(b)) # <class 'float'>
print(type(c)) # <class 'float'>
2.1.3  一个特殊情况:除(/)和取整(//)
a = 2/2
b = 2//2
c = 1//2
print(a) # 结果:1.0
print(type(a)) # <class 'float'>
print(b) # 结果:1
print(type(b)) # <class 'int'>
print(c) # 结果:0
print(type(c)) # <class 'int'>

这是因为 / 是除法,会自动的转型成一个浮点数。而 // 是取整,也就是数学里的整除,保留商的部分(也就是取整),所以 2/2=1.0,是一个 float,而 2//2=1 是一个 int 。

1÷2=0.5 ,而 1//2=0 是取整,所以,结果的类型也是 int 。

2.1.4  在 Python 里二进制、八进制、十进制、十六进制数的区分
  • 二进制表示符:0b
  • 八进制表示符:0o
  • 十六进制表示符:0x
2.1.5  二进制、八进制、十进制、十六进制的相互转换
  • 使用 bin() 方法,可以把其他进制的数转换为二进制。
  • 使用 int() 方法,可以把其他进制的数转换为十进制。
  • 使用 oct() 方法,可以把其他进制的数转换为八进制。
  • 使用 hex() 方法,可以把其他进制的数转换为十六进制。
print(bin(10)) # 0b1010
print(bin(0o10)) # 0b1000
print(bin(0x10)) # 0b10000print(oct(10)) # 0o12
print(oct(0b10)) # 0o2
print(oct(0x10)) # 0o20print(int(0b10)) # 2
print(int(0o10)) # 8
print(int(0x10)) # 16print(hex(10)) # 0xa
print(hex(0b10)) # 0x2
print(hex(0o10)) # 0x8

2.2  布尔类型(bool)

在 python 里面,布尔类型用来表示真(True)和假(False)。注意:这里的 True 和 False 与其它语言有些不一样,它们的首字母都要大写。

2.1.2.1  为什么布尔类型是数字类型里的一种
print(int(True))   # 1
print(int(False))  # 0print(bool(1))  # True
print(bool(0))  # False

在上面的例子中,布尔类型和整型可以相互转换,可以说明布尔类型是数字类型里的一种。

2.1.2.2  非零的数字表示真(True),0表示假(False)
print(bool(2))    # True
print(bool(-2))   # True
print(bool(0.2))  # True
print(bool(0))    # False
3.1.2.3  其它的数据类型也可以转化为布尔类型
print(bool('python'))  # 字符串:True
print(bool(''))  # 空字符串:False
print(bool([1,3,5]))  # 列表:True
print(bool([]))  # 空列表:False

从上面的例子,我们可以看出:凡是非空的数据类型都是 True,空的数据类型都是 False。

Python里还有个特殊的类型 None,它的布尔类型也是 False 。

print(bool(None))  # False
2.1.3 复数(complex)

在Python中,复数(complex)是数学上表示实数和虚数组合的数。复数的形式通常写作 a + bj,其中 a 是实部,b 是虚部,j 是虚数单位,满足 j^2 = -1

Python中的复数可以使用 complex() 函数来创建,该函数接受两个参数:实部和虚部。例如:

c = complex(4, 3)  # 创建一个复数,实部为4,虚部为3

你也可以直接在代码中用 j 来表示虚数单位,例如:

c = 4 + 3j  # 同样创建了一个复数,实部为4,虚部为3

Python提供了很多内置方法来处理复数,例如:

  • real:返回复数的实部。
  • imag:返回复数的虚部。
  • conjugate():返回复数的共轭(实部不变,虚部取反)。
  • realimag 属性也可以用于赋值,以改变复数的实部或虚部。
c = 4 + 3j  
print(c.real)  # 输出:4.0  
print(c.imag)  # 输出:3.0  # 修改复数的实部和虚部  
c.real = 2  
c.imag = -1  
print(c)  # 输出:(2-1j)  # 获取复数的共轭  
conjugate_c = c.conjugate()  
print(conjugate_c)  # 输出:(2+1j)

复数在Python中有广泛的应用,特别是在科学计算、信号处理、电子工程等领域,它们经常用于解决涉及周期性、波动、旋转等问题的数学模型。Python的标准库(如cmath模块)提供了很多用于处理复数的函数,如正弦、余弦、对数、幂运算等。

3  字符串(string)

在日常生活中,我们经常会用文字来记录事物的名称、或记录事情的发展过程等,这些文字类型的数据,就叫做字符串。在未来的写代码的工作中,无论你从事的是哪个方面的编程,字符串操作必不可少,非常重要。

3.1  Python 如何表示字符串?

Python 中可以用封闭的单引号,双引号和三引号来表示字符串。

单引号、双引号,三引号,它们都有什么不同?

在  Python 中,要表示字符串,必须在文字的外面加上单引号或双引号(英文的)。

print(type('Hello,World!'))  # <class 'str'>
print(type("Hello,World!"))  # <class 'str'>print(type(1))    # <class 'int'>
print(type('1'))  # <class 'str'> 加上单引号或双引号的数字也是字符串print(type(True))    # <class 'bool'>
print(type('True'))  # <class 'str'> 加上单引号或双引号的布尔值也是字符串

如果要想在字符串里显示单引号或双引号,就需要用不同的引号加以区分。

print("let's go.")   # let's go.
print('小明说:"我爱Python"')   # 小明说:"我爱Python"

也可以使用转义字符(\)来显示字符串里的单双引号。但不推荐,一是繁琐,二是看起来并不美观和自然。

print('let\'s go.')   # let's go.
print("小明说:\"我爱Python\"")   # 小明说:"我爱Python"

三引号表示多行字符串。

如果遇到一个很长的字符串,一是屏幕的宽度有限放不下,二是阅读也不方便。所以,在 python 中,建议每行的宽度最大79个字符,如果超过了79个字符,就应该考虑换行了。

但如果用双引号,你尝试回车一下把字符串换行,会提示语法错误。所以 python 用三引号来表示多行字符串,也可以用三个双引号来表示多行字符串,效果是一样的。

print('''小明说:\"我爱Python\"小明说:\"我爱Python\" 小明说:\"我爱Python\"小明说:\"我爱Python\"''')

如果在 Python 的 IDLE 里输入多行字符串,回车后显示的是 '\nhello world\nhello world\n' 这是怎么回事?

>>> '''
... hello world
... hello world
... '''
'\nhello world\nhello world\n'
>>>

这是因为我们在输入多行字符串的时候,不但输入了多行字符,而且还有敲击回车键的动作,敲击回车键这个动作虽然在屏幕上看不到,但它也是像字符一样存在的。Python  IDLE 为了让所有的字符都显示出来,就规定用 \n 来表示回车这个动作。

如果在 Python 的 IDLE 里输入 '\nhello world\nhello world\n' 这个字符串,却不会把 helllo world 进行多行显示。这是因为在这里,Python只会把把 \n 当作一个字符,而不会把它转义为回车键这个功能。

要想把 '\nhello world\nhello world\n' 这个字符串显示为多行字符串的形式,我们可以用 print() 这个函数。

>>>print("\nHello,World\nHello,World\n")Hello,World
Hello,World

单双引号也可以实现字符串换行,只要在第一行的末尾打一个反斜杠。示例如下:

>>>"hello\
world"'helloworld'

关于单双引号和三引号的区别,上面讲的比较零碎,但也比较重要,这也是一些基本常识。

3.2  转义字符

在Python中,转义字符是一种特殊的字符序列。

  • 表示一些无法 "看见" 的字符,如换行符、制表符、回车符等
  • 表示一些与语言本身有冲突的字符,单双引号字符,反斜杠字符本身等

转义字符以反斜杠(\)开头,后跟一个或多个字符。Python中的常见转义字符包括:

  1. \n:换行符,表示新的一行开始。
  2. \t:制表符,表示一个水平制表位置(通常等于8个空格)。
  3. \\:反斜杠字符本身,用于表示文件路径中的目录分隔符等。
  4. \":双引号字符,用于在字符串中包含双引号。
  5. \':单引号字符,用于在字符串中包含单引号。
  6. \r:回车符,表示将光标移动到行首。

注意:在Python中,换行符(\n)和回车符(\r)主要用于控制字符串中的换行和回车动作,以及在文件操作中指定行结束符。不过,需要注意的是,Python中的字符串和文件操作默认使用换行符(\n)作为行结束符,而不是回车符(\r)。

3.3  原始字符串

原始字符串(raw string)是Python中的一种字符串字面量形式,其特点是其中的反斜杠 \ 被视为普通字符,而不是转义字符的开头。这意味着在原始字符串中,你可以直接写入反斜杠而无需使用双反斜杠 \\ 进行转义。

原始字符串通过在字符串字面量前加上小写字母 rR 来定义。例如:


normal_string = "This is a string with an escaped backslash: \\"  raw_string = r"This is a raw string with a literal backslash: \"

原始字符串在处理包含大量反斜杠的字符串时特别有用,例如正则表达式或文件路径。在这些情况下,使用原始字符串可以避免频繁地转义反斜杠。

print('c:\northwind\northwest')
'''
orthwind
orthwest
'''
print('c:\\northwind\\northwest')
# c:\northwind\northwestprint(r'c:\northwind\northwest')
# c:\northwind\northwest

上面的例子中,第一例子里的的反斜杠是普通字符,但 print() 函数却把 \n 当成了换行符。要想正确显示路径,需要对这个普通字符 \ ,进行转义,如 \\。

而第二个例子,使用了 r'c:\northwind\northwest' 这意味着在原始字符串中,可以直接写入反斜杠而无需使用双反斜杠 \\ 进行转义。

print(r'let's go.')

但像上面这个例子,使用原始字符串是不正确的,因为 let's 中的单引号与字符串的单引号产生了矛盾。所以这个单引号需要进行转义 \' 。

3.4  字符串的运算

3.4.1  字符串的拼接

字符串的加法(+)是字符串拼接最常用的一种。

str1 = 'Hello'
str2 = ','
str3 = 'World'
print(str1+str2+str3)  # Hello,World
3.4.2  字符串的重复

字符串的乘法(*)可以实现字符串重复。

str = '我爱你!'
print(str*3)  # 我爱你!我爱你!我爱你!
3.4.3  获取字符串中指定的字符

字符串是由若干个字符组成了,每个字符在字符串中都有一个数字(索引)与它对应,字符串每个字符的索引从左到右分别的0,1,2,3,...

字符的索引也可以用负数表示,最后一个字符用 -1 表示,倒数第二个字符用 -2 表示,以此类推。

str = '我爱你,中国!'print(str[0])  # 我  索引0字符
print(str[-2])  # 国  表示字符串中倒数第二个字符
print(str[0:4])  # 我爱你, 索引0至索引3字符
print(str[:5])  # 我爱你,中 索引0至索引4字符
print(str[3:])  # ,中国! 索引3至末尾的字符

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

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

相关文章

05_Mongooes

Mongooes Mongoose是通过Node来操作MongoDB的一个模块。是基于Node.js的第三方模块。 一、Node.js安装 1.解压 2.创建文件夹 解压路径下&#xff0c;创建两个文件夹 node_global&#xff1a;全局安装位置 node_cache&#xff1a;缓存 3.配置 配置环境变量 在path路径…

毫秒生成的时间戳如何转化成东八区具体时间

假设现在有一个时间是1709101071419L 后端代码实现 Java代码&#xff08;东八区时间&#xff09; 在Java代码中&#xff0c;我们将时区从UTC调整为东八区&#xff08;UTC8&#xff09;&#xff1a; import java.time.Instant; import java.time.ZoneId; import java.time.Z…

FreeRTOS操作系统学习——FreeRTOS工程介绍

FreeRTOS工程介绍 核心文件 FreeRTOS的最核心文件只有2个&#xff1a; FreeRTOS/Source/tasks.cFreeRTOS/Source/list.c 文件功能如下图&#xff1a; 头文件相关 内存管理文件 文件在 Middlewares\Third_Party\FreeRTOS\Source\portable\MemMang 下&#xff0c;它也是放…

JavaScript的`call`方法:实现函数间的调用!

&#x1f90d; 前端开发工程师、技术日更博主、已过CET6 &#x1f368; 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 &#x1f560; 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 &#x1f35a; 蓝桥云课签约作者、上架课程《Vue.js 和 E…

堆和二叉树的动态实现(C语言实现)

✅✅✅✅✅✅✅✅✅✅✅✅✅✅✅✅ ✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨ &#x1f33f;&#x1f33f;&#x1f33f;&#x1f33f;&#x1f33f;&#x1f33f;&#x1f33f;&#x1f33f;&#x1f33f;&#x1f33f;&#x1f33f;&#x1f33f;&#x1f33f;&#x1f33f;&#x1…

CFD一般步骤-常用的软件

CFD&#xff08;计算流体动力学&#xff09;仿真的具体步骤一般包括以下几个方面&#xff1a; **确定几何形状并生成计算网格&#xff1a;**首先&#xff0c;需要确定要分析的流体流动的空间影响区域&#xff0c;并对实际的几何区域进行简化&#xff0c;以减少计算复杂性。使用…

前端 WebSocket 的一些使用

前端 WebSocket 的一些使用 文章目录 前端 WebSocket 的一些使用连接的建立接收消息发送消息关闭连接处理 WebSocket 是一种网络通信协议&#xff0c;用于实现双向通信。在前端中&#xff0c;你可以使用 JavaScript 中的 WebSocket 对象来创建 WebSocket 连接&#xff0c;发送…

Go语言的设计哲学

Go语言的设计哲学 设计哲学之于编程语言&#xff0c;就好比一个人的价值观之于这个人的行为。简单显式组合并发面向工程 设计哲学之于编程语言&#xff0c;就好比一个人的价值观之于这个人的行为。 因为如果你不认同一个人的价值观&#xff0c;那你其实很难与之持续交往下去&a…

BUUCTF-Misc-[SUCTF 2019]Game1

题目链接&#xff1a;BUUCTF在线评测 (buuoj.cn) 下载附件一大堆文件&#xff0c;打开index.html时发现一大串base字符 U2FsdGVkX1zHjSBeYPtWQVSwXzcVFZLu6Qm0To/KeuHg8vKAxFrVQ 写代码和工具解都可以 填进去后错误&#xff0c;发现不是真的flag 查看另外一张照片&#xff0c;…

图像AI换脸软件:AI FaceSwap 中文版

AI FaceSwap 是一款利用人工智能技术进行面部交换的软件。该软件通过先进的人工智能算法&#xff0c;能够将一个人的面部表情、神态和特征准确地映射到另一个人身上&#xff0c;实现面部交换的效果。用户只需要提供两张照片&#xff0c;一张是目标人物的照片&#xff0c;另一张…

数据库进阶——如何提升数据库的安全性,以MySQL和Redis加固为例

目录 引出数据库加固加固思路MySQLRedis Redis冲冲冲——缓存三兄弟&#xff1a;缓存击穿、穿透、雪崩缓存击穿缓存穿透缓存雪崩 总结 引出 数据库进阶——如何提升数据库的安全性&#xff0c;以MySQL和Redis加固为例 数据库加固 加固思路 账号配置 应按照用户分配账号&…

Nginx使用—基础知识

Nginx简介 Nginx优点 高性能、高并发 支持很高的并发&#xff0c;在处理大量并发的情况下&#xff0c;比其他web服务器要高效 轻量且高扩展 功能模块少(源代码仅保留http与核心模块代码&#xff0c;其余不够核心代码会作为插件来安装) 代码模块化&#xff08;易读&#xff0…

C语言:qsort的使用方法

目录 1. qsort是什么&#xff1f; 2. 为什么要使用qsort 3. qsort的使用 3.1 qsort的返回值和参数 3.2 qsort的compare函数参数 3.3 int类型数组的qsort完整代码 4. qsort完整代码 1. qsort是什么&#xff1f; qsort中的q在英语中是quick&#xff0c;快速的意思了&#…

C语言数据类型讲解详细说明

C语言数据类型 C语言中的数据类型可以分为几大类&#xff1a;基本数据类型、非基本数据类型和复合数据类型。接下来&#xff0c;我们将逐一进行详细和生动的讲解&#xff0c;并通过实例代码来辅助理解。 基本数据类型 基本数据类型是C语言中最基本、最原始的数据类型。它们包…

C++基础2:C++基本数据类型和控制结构

此专栏为移动机器人知识体系下的编程语言中的 C {\rm C} C从入门到深入的专栏&#xff0c;参考书籍&#xff1a;《深入浅出 C {\rm C} C》(马晓锐)和《从 C {\rm C} C到 C {\rm C} C精通面向对象编程》(曾凡锋等)。 2.C基本数据类型和控制结构 2.1 C基本数据类型 程序是由算法…

个性化服务的未来:基于API的电商平台数据定制和推荐系统

随着电商行业的快速发展&#xff0c;个性化服务已经成为提升用户体验和增加用户粘性的关键。基于API的电商平台数据定制和推荐系统是实现这一目标的重要技术手段。 未来&#xff0c;个性化服务可能会朝以下几个方向发展&#xff1a; 更精准的用户画像&#xff1a;通过API接口…

C语言中的结构体和c++中的类,有什么区别、作用、联系、优缺点

C语言中的结构体&#xff08;Struct&#xff09;与C中的类&#xff08;Class&#xff09; 区别 基本组成&#xff1a; C语言的结构体&#xff1a;只包含数据成员&#xff0c;不包含成员函数。结构体主要用于封装多个不同类型的数据。C的类&#xff1a;包含数据成员和成员函数。…

C# 中 Replace 字符串操作方法

在 C# 中&#xff0c;Replace 是一个字符串操作方法&#xff0c;用于替换字符串中的指定字符或子字符串。它接受两个参数&#xff1a;要查找和替换的字符串。Replace 方法在源字符串中查找所有匹配的字符或子字符串&#xff0c;并用指定的替换字符串进行替换。 下面是 Replace…

【论文精读】Mask R-CNN

摘要 基于Faster RCNN&#xff0c;做出如下改变&#xff1a; 添加了用于预测每个感兴趣区域(RoI)上的分割掩码分支&#xff0c;与用于分类和边界框回归的分支并行。mask分支是一个应用于每个RoI的FCN&#xff0c;以像素到像素的方式预测分割掩码&#xff0c;只增加了很小的计…

鸿蒙Harmony应用开发—ArkTS声明式开发(通用属性:点击回弹效果)

设置组件点击时回弹效果。 说明&#xff1a; 从API Version 10开始支持。后续版本如有新增内容&#xff0c;则采用上角标单独标记该内容的起始版本。 clickEffect clickEffect(value: ClickEffect | null) 设置当前组件点击回弹效果。 系统能力&#xff1a; SystemCapabilit…