python——数据类型(数字,字符串)

news2024/10/25 8:06:12

(一)基本知识

首先我们需要知道,在python中数据类型大体可以分为两类

       1.基本数据类型:数字和字符串

       2.复合数据类型:列表,元组,字典,集合

(二)基本数据类型

2—1 数字类型

(1)数字类型具体可以分为4种!

  1. 整型(int)
  2. 浮点型(float)
  3. 复数类型(complex)
  4. 布尔类型(bool)

tips:Python中使用type()函数可以查看变量的类型,用法如下:

python和C语言不同的一个点就在于,puthon中的变量是不需要类型定义的,其变量是通过赋值来确定类型!

(2)四种类型的具体解释,以及常见的运算符

1、整型(int):

首先需要明确在python种整型是不分 long,short 等的,整型就是int!!

  • 整型的表示方法:
  • 二进制:Ob 或者 OB 开头,例如:ob1010
  • 八进制:Oo 或者 OO 开头,例如:Oo72
  • 十六进制:Ox 或者 OX 开头,例如:OxA7A
  • 十进制:...

  • 类型转换
  • bin():十进制转换为二进制,输出形式是字符串
  • oct():十进制转换为八进制,输出形式是字符串
  • hex():十进制转换为十六进制,输出形式是字符串
  • int() :接收一个符合整型规范的字符串,并将字符串转换为整型

  • 通过之前详细的C语言的学习,对于内存的概念相信不会太过陌生,而且我们也已经知道,在C语言中,内存分配是时刻需要考虑的点,不同的变量就算是相同的值,也会再一次的开发一块空间,但是在python中这个问题是不需要考虑的,因为python是个动态的语言,拥有自动内存管理的能力,并且多个变量有相同的值,其地址也是相同的

  • Python中当多个变量的值相同时,只是多个变量都指向了同一内存,举例如下:

    a = 6
    b = 6
    c = a
    print(id(a), id(b), id(c))
    

2、浮点型(float)

首先python中的浮点型是双精度的,也就是C语言中的double类型!

  • 浮点型的组成是整数和小数,可以有0;比如:1.2、0.2
  • 可以使用科学计数法; 比如3.14可以写为314e-2(也就是314的-2次方,和C语言类似)
  • 一般是十进制。

  • 使用round(value)这个内置函数,可以返回浮点型四舍五入的值,且不改变原值

3、复数(complex)

在python中是有复数的概念的,这是很特殊的点

  • 表示方法:
  • 使用实部加虚部的方法来表示复数,且复数的虚部必须有 i/j
  • 使用 complex(a,b) 来表示复数,其中 a 为实数,b 为虚数
  • print(a.imag)                          # .imag可以获取复数的虚部
  • print(a.real)                            # .real可以获取复数的虚部
  • print(a.conjugate())               # .conjugate()方法可以获取复数的共轭复数 

4、布尔类型(bool)

  • 本质:
  • python2 中是没有布尔值的,和C语言一样,0 来表示 Flase,1 来表示 True
  • 在 python3 中,True 和 Flase 是布尔类型的两个结果,本质仍然还是 1 和 0

  • 等于 Flase 的情况如下:
  • None、Flase、任何为0的数、空的序列(字符串,元组,列表,字典、类中定义了__bool__ ()的返回值)

  • 等于 True的情况(去除Flase以外)

(3)运算符

其实学习过C语言之后,对于python中的运算符应该问题不大!以下为python中常见的一些算法:

  • 基本运算符

  •  + :用于两个数的求和,也可以用于字符串的连接,这个在后续会细讲
  •  -  :求差值
  •  *  :求乘积,也可以直接作用字符串,列表等
  •  /  :求商,和C语言不同的是,/ 不管两边的操作数是整数还是小数,求出来的就是浮点数
  •  // :整数除法,这个 // 就和c语言中的 / 很类似,比如 7 // 3 结果就是 2
  • % :求余数,也就是 模
  •  ** :指数:比如 2**3 就是2的三次方
  • 一个内置函数 divmod()可以同时返回 商 和 余数  :比如 divmod(13,3) ,即返回 (4,1)

  • 逻辑运算符:

  • or :表示 “或” 也就是C语言中的 &&
  • and :表示“与”也就是C语言中的 || 
  • not:表示 “非” 也就是C语言中的 !
  • python中也有逻辑运算符 “短路问题” 具体可以看之前的C语言讲解,此处不再细说
  • 比较运算符

  • 和C语言类似,真返回 ‘True’,假返回‘Flase’(C语言中是1和0)
  • >, <, >=, <=, ==, !=...

  • 位运算符
  • &        |         ^        ~       <<      >>
  • <<:左移,如 3<<2 也就是相当于乘以 2**2(具体原理可以看C语言相关部分)
  • >>:右移,相当于除2

  • 同一运算符

  •  is :比较地址!,也就是判断对象是否一致
  • == :比较值 
  • 提示:在 python 会对整数进行缓存处理,也就是一个整数在内存中的一片空间可以分配给多个变量,所以 如果有 a b 两个变量存放的是同一个值,那么a b的地址是相同的!但是这种情况是有限制的。                                                                                          在命令行模式中:只有[-5,256]之间的整数才会进行缓存,底层实现为数组;                   在文件模式下:所有的数都会进行缓存

  • 成员运算符

  • in :判断一个数是否在这个序列中,如:a = 'b'   b = 'boy'   a is b(True)
  • in not :字面意思,也就不在的话返回 True

  • 优先级问题

  • ** 的优先级最高
  • ~ 次之
  • <<,>>小于 * / % 以及 + -
  • 位和算术运算符 > 比较运算符 > 赋值运算符 > 逻辑运算符

2—2 字符串

(1)基本知识

1、在python中,是不支持 单字符类型的,就算是单字符也会被认定为字符串

2、字符串是不可以被修改的

3、unicode字符集

                python3中,支持unicode,可以表示世界上任何书面上的语言(ASCII码是其子集)

4、两个内置函数:

        ord()——可以将字符转成相对应的 unicode码

        chr()——将十进制数转成对应的字符

示例:a = ' a'

           ord(a)  #结果就是97

1、使用  ' '(单引号) 或者   ''  '' (双引号)——可以两者一同使用的来添加一些特殊符号

        示例:"my name is 'zxh' "  #结果为:my name 'is' zxh

2、''' ''' (三引号,可以是三个单的也可以是三个双的)——可以进行块引用,也就是跨行

1、空字符串 :就是引号内部没有字符,python中允许有空的字符串,长度位0

2、内置函数 len() ——作用就是计算字符串的长度(可以在类中对其重写)

(2)字符串操作

1、转义字符

和C语言是大致一样的,但是在python中 当 \ 单独放在某一行的末尾,其意思就是续航,在打印的时候打印在一行

        示例:

d = 'acacu\
     ach'
print(d)
acacu     ach

其余的转义字符就和C语言基本一致!

2、拼接/复制/不换行打印/输入字符

1.拼接:首先需要明确的是,字符串拼接的时候必须是同一类型!!(对于整型 + 会计算出值)

  • 示例:'aa' + 'bb' #结果为 'aabb'
  • 直接放在一起 示例:'aa''bb'  #结果为 'aabb'

2.复制:即直接使用 * 来进行字符串的复制

        示例:'aaa'*10  #结果就是字符串变为10个 'aaa'

3.不换行打印:

python中,print函数和C语言printf的一个不同点在于,print其默认尾部有一个换行字符

不换行方法:

        使用 end=' ' 的格式  #末尾打印''中的字符(包括空格)

        示例:print('abc',end=' ')

                   print('de')

        结果就是 'abc de'

4.input()输入字符串

        示例:name = input()  #其作用和C语言中的scanf函数类似,但是不同点在于,使用input()输入的不管是什么都会是str类型()也就是字符串类型

        错误写法:

input()虽然可以输入一个数字,但是也是 str类型,但是 b = 10 是一个int 类型,两个不同类型不可以进行运算

3、替换\提取\切片

1.replace()#字符串的替换

        问题:是否可以直接修改字符串呢?

        先看代码:

a = 'my name is zxh'
print(id(a))
a = 'my name id xxx'
print(id(a))
1695406139696
1695406567728

(1)我们发现经过修改之后,地址不一样了!所以可以得出结论,字符串是不可以修改的,即使两次的变量名称相同,也只是在内存重新开辟了一块空间

(2)repalce的作用是将原字符串的某一个字符替代位特定的一个字符,但是也是新建了一个对象

        

a = 'my name is zxh'
print(id(a))
a =a.replace('zxh','xxx')
print(a)
print(id(a))
2825495554352
my name is xxx
2825495641072

2.[]——索引来提取字符串中的字符

 (1)和c语言中的字符数组很类似

 (2)索引也就是每一个字符的下标从 0 开始

a = 'my name is zxh'
print(a[0])
m

3.切片

(1)基本语法 :字符串[strat:end:step]

        start:字符串从哪一个位置开始切片——默认从索引为0的字符开始

        end:从哪个位置结束——默认到最后一个字符索引的后一个

        step:步长是多少 —— 默认为1

示例:

d = 'abcdefghigk'[:]
print(d)
abcdefghigk

上述代码,由于三个都是默认值,所以提取整个字符串

d = 'abcdefghigk'[2:6:1]
print(d)
cdef

上述代码,由于start = 2,end = 6,step = 1,所以提取从索引2的字符到索引为5的字符(包头不包尾

(2)注意:

               [::-1] : step为-1 ,说明是从右往左提取,此操作相当于将字符串倒序

3、split()分割/join()合并/查找

(1)split()分隔

        示例:

a = 'my name is zxh'
b = a.split()
print(b)

['my', 'name', 'is', 'zxh']

上述代码显露出来的信息就是:

split()就是将字符串以其()内的字符进行分隔,默认为 空白字符 ,()内的字符会被删除;并且分隔后的子字符串存放在列表中

(2)join()合并

作用与split()相反!

        示例:

c = ['aa','bb']
d ='*'.join(c)
print(d)

aa*bb
通过上述代码我们可以明白 join()的作用原理:

将多个子字符串可以通过 ‘特定’的字符连接

(3)查找

1、len() ——可以用来求出长度

2、startwith() —— 可以判断字符串是否以()中的字符串开头

a = 'my name is zxh'
print(a.startswith('m'))
True

3、endwith() —— 判断结尾

4、find() —— 第一次出现某个字符的位置

5、rfind() —— 最后一次出现某个字符的位置

6、count() —— 某一个字符出现的次数

7、isalnum —— 判断字符串是否全是数字或者字母

...

重点来说一下以下几个函数

(1)strip —— 去除首尾

示例:

a = 'my name is zxh'
b = a.strip('m')
print(b)
y name is zxh

可以 使用 lstrip()  或者 rstrip() 仅仅去除左边或者右边的字符串

(2)大小写转换的函数

1、capitalized()首字母大写

a = 'my name is Zxh'
print(id(a))
#首字母大写
a = a.capitalize()
print(a)
print(id(a))
1420499331376
My name is zxh
1420499763120

2、title()所有单词的首字母大写

a = 'my name is Zxh'
print(id(a))
#每个单词的首字母大写
a = a.title()
print(a)
print(id(a))
1448522066224
My Name Is Zxh
1448522497968

3、upper()全大写

a = 'my name is Zxh'
print(id(a))
#全大写
a = a.upper()
print(a)
print(id(a))
1365391026480
MY NAME IS ZXH
1365391458224

4、lower()全小写

a = 'my name is Zxh'
print(id(a))
#全小写
a = a.lower()
print(a)
print(id(a))
1472785459504
my name is zxh
1472785546224

5、swapcase()小——大,大——小

a = 'my name is Zxh'
print(id(a))
#小——大 大——小
a = a.swapcase()
print(a)
print(id(a))
2318668179760
MY NAME IS zXH
2318668266480

通过代码我们发现这产生新的对象(id不同)五种操作都会

4、格式排版

(1)center()——中心对齐

a = 'ab'
print(a.center(10,'*'))
****ab****

10:只保留10个字符;

* :表示空白的地方使用 * 来补齐

若字符总长度超过了center()中规定的长度,则相当于无作用

(2)ljust——左对齐——同上

(3)rjust——右对齐——同上


(4)format格式化

a = '我的名字是{0},年龄是{1}' #此处的{0}和{1}即对应format中的第一和第二个字符串
b = a.format('zxh',18)
print(b)

#结果:我的名字是zxh,年龄是18

除此之外:也可以对应变量名称来具体赋值,如下:

a = '我的名字是{name},年龄是{age}'
b = a.format(age = 18,name = 'zxh')
print(b)

结果和上述相同,但是这里不是一一对应的关系,而是具体的名称具体赋值

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

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

相关文章

LabVIEW水质监测系统

在面对全球性的海洋污染问题时&#xff0c;利用先进技术进行水质监测成为了保护海洋环境的关键手段之一。开发了一种基于LabVIEW的海洋浮标水质监测系统&#xff0c;该系统能够实时监测并评估近海水域的水质状况&#xff0c;旨在为海洋保护和污染防治提供科技支持。 项目背景 …

【数据结构】专栏开篇 | 1024程序员节

专栏说明&#xff1a;本专栏用于数据结构复习&#xff0c;文章中出现的代码由C语言实现&#xff0c;在专栏中会涉及到部分OJ题目&#xff0c;如对你学习有所帮助&#xff0c;可以点赞鼓励一下博主喔~~~&#x1f493; 博客主页&#xff1a;Duck Bro 博客主页系列专栏&#xff1a…

关于bp抓不到本地包

关于bp抓不到本地包 关于bp抓不到本地包 关于bp抓不到本地包 pikachu练习时&#xff0c;发现用bp抓本地&#xff08;127.0.0.1&#xff09;数据包时&#xff0c;竟然直接放行访问。 是因为系统默认127.0.0.1无法使用代理&#xff0c;因此bp才抓不到本地数据包&#xff0c;需要…

vue中为什么data属性在实例中可以定义成对象,而在组件中定义成对象会抛出错误

在vue组件中将data属性定义成对象会报错 为什么data属性在实例中可以定义成对象&#xff0c;而在组件中定义成对象则会抛出错误&#xff1f; Vue 实例中的 data 属性&#xff1a; 当 data 被定义在一个单一的 Vue 实例中时&#xff0c;这个实例通常是全局唯一的&#xff0c…

数据结构笔记(其七)--树(二叉树)

目录 1.知识总览 2.二叉树的基本概念 &#xff08;1&#xff09;.满二叉树 &#xff08;2&#xff09;.完全二叉树 &#xff08;3&#xff09;.二叉排序树 &#xff08;4&#xff09;.平衡二叉树 3.二叉树常考点 i.叶子结点与二分支结点的数量关系 ii.第i 层的最多结点数&…

如何禁止上班期间浏览无关网站?

禁止员工在上班期间浏览无关网页主要是为了提升工作效率和生产力&#xff0c;确保员工能够专注于工作任务。同时&#xff0c;这种做法有助于降低网络安全风险&#xff0c;防止恶意软件和钓鱼攻击&#xff0c;减少数据泄露和法律风险&#xff0c;维护公司的专业形象&#xff0c;…

【前端开发入门】JavaScript快速入门--js变量

目录 引言一、为什么要定义变量二、定义变量的一些技巧1. 解构赋值1.1 Object解构赋值1.2 Array解构赋值1.3 总结规律 2. 字符串拼接 三、变量作用域四、总结 引言 本系列教程旨在帮助一些零基础的玩家快速上手前端开发。基于我自学的经验会删减部分使用频率不高的内容&#xf…

Unity引擎:游戏开发的核心力量

目录 引言 Unity引擎的发展历程 早期发展 跨平台支持 Unity引擎的核心特性 易用性 社区支持 跨平台能力 Unity在游戏开发中的应用 移动游戏 独立游戏 3A游戏 Unity的未来展望 高级图形和渲染技术 扩展现实&#xff08;XR&#xff09;支持 云服务和多人游戏 结论…

C#判断点是否在多边形内

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家&#xff01;人工智能学习网站 前言&#xff1a; 大家好&#xff0c;我是上位机马工&#xff0c;硕士毕业4年年入40万&#xff0c;目前在一家自动化公司担任…

在不支持AVX的linux上使用PaddleOCR

背景 公司的虚拟机CPU居然不支持avx, 默认的paddlepaddle的cpu版本又需要有支持avx才行,还想用PaddleOCR有啥办法呢? 是否支持avx lscpu | grep avx 支持avx的话,会显示相关信息 如果不支持的话,python运行时导入paddle会报错 怎么办呢 方案一 找公司it,看看虚拟机为什么…

logdata-anomaly-miner:一款安全日志解析与异常检测工具

关于logdata-anomaly-miner logdata-anomaly-miner是一款安全日志解析与异常检测工具&#xff0c;该工具旨在以有限的资源和尽可能低的权限运行分析&#xff0c;以使其适合生产服务器使用。 为了确保 logdata-anomaly-miner的正常运行&#xff0c;推荐安装了python > 3.6的…

通过异地组网工具+RustDesk实现虚拟局域网使用远程桌面RDP

通过异地组网工具RustDesk实现虚拟局域网使用远程桌面RDP 预期效果 常见的远程桌面工具就不多说&#xff0c;麻烦而且不好用 QQ 使用普及率高 卡顿、延迟高 TeamViewer 功能强大、兼容性好 官方查询商业用途频繁 向日葵 安全性高、支持多种设备 强制登录、免费用户限速、限…

10. mapreduce实现wordcount

一. mapreduce 概述 mapreduce是一个并行计算框架&#xff0c;它起源于Google的MapReduce论文&#xff0c;它主要用于离线海量数据计算。 优点&#xff1a;海量数据离线处理&#xff0c;开发简单&#xff0c;部署方便缺点&#xff1a;仅适用于批处理&#xff0c;不支持实时数…

二极管那些事儿

一.发光二极管&#xff08;LED&#xff09; 1.压降很大&#xff08;2~3v&#xff09; 二.普通二极管&#xff08;eg:1N4007&#xff09; 1.一般用于整流和续流 2.比较廉价 3.一般压降0.7v 4.可用于防反接电路如下&#xff1a; 三&#xff1a;肖特基 1.开关速度第一&#…

UE5之5.4 第一人称示例代码阅读1 FirstPersonProjectile

既然如此&#xff0c;这几个文件都看看 先看看FirstPersonProjectile头文件 定义了几个函数 然后是两个component 这个projectilemovement应该是控制物理运动的 看看CPP文件 sphere那个就创建了一个subobject&#xff0c;初始化了一下&#xff0c;然后这里 CollisionComp-&g…

【C++差分数组】P10903 商品库存管理

本文涉及知识 C差分数组 洛谷 P10903 商品库存管理 题目简述&#xff1a; 有n中商品&#xff0c;编号[1,n]。有m中操作 ope[i]{LI,RI}&#xff0c;将编号LI到LR的商品都加1。 有m个查询&#xff0c;第i个查询 &#xff0c;执行所有ope[i],i ≠ \neq  i 后为0的商品数。 1…

基于PID控制器和四象限DC-DC功率转换器的永磁直流电机速度控制系统simulink建模与仿真

目录 1.课题概述 2.系统仿真结果 3.核心程序与模型 4.系统原理简介 5.完整工程文件 1.课题概述 基于PID控制器和四象限DC-DC功率转换器的永磁直流电机速度控制系统simulink建模与仿真。系统包括电流PI控制器&#xff0c;速度PI控制器&#xff0c;四象限DC-DC功率转换器&am…

Leetcode3. 无重复字符的最长子串

问题描述&#xff1a; 给定一个字符串 s &#xff0c;请你找出其中不含有重复字符的 最长 子串 的长度。 示例 1: 输入: s "abcabcbb" 输出: 3 解释: 因为无重复字符的最长子串是 "abc"&#xff0c;所以其长度为 3。示例 2: 输入: s "bbbbb&q…

Ubuntu 24.04 系统上配置 Node.js 运行环境

本文我们重点介绍两种安装 Node.js 的方法。第一种方法使用 NVM (Node VersionManager)&#xff0c;这是安装和管理多个 Node.js 版本的最好和最快的方法。第二种方法使用官方包存储库在 Ubuntu 上安装 Node.js&#xff0c;一次只允许安装一个版本。 必备条件 A running Ubun…

Java学习Day52:金酬外护遭魔毒,圣显幽魂救本原(验证码补全,新增预约逻辑)

1.验证码补全 //发送验证码sendValidateCode() {/*** 1.手机号不能为空* 2.手机号符合规范* 3.发送一分钟后才可再次发送*///获取手机号let telephone this.orderInfo.telephone;//验证手机号不能空if (telephone undefined){this.$message.error("请输入手机号");…