【Python】进制、计算机中的单位、编码、数据类型、索引、字符串切片、字符串的功能方法
一、进制
计算机中底层所有的数据都是以 010101 的形式存在(图片、文本、视频等)。
二进制
八进制
十进制(也就是我们熟知的阿拉伯数字)
十六进制

进制转换

v1 = bin(25) # 十进制转换为二进制
print(v1) # "0b11001"v2 = oct(23) # 十进制转换为八进制
print(v2) # "0o27"v3 = hex(28) # 十进制转换为十六进制
print(v3) # "0x1c"
i1 = int("0b11001", base=2)
print(i1)
i2 = int("0o27", base=8) #
print(i2)
i3 = int("0x1c", base=16)
print(i3)
base代表着参照的进制 ,base>=2,(base也可取0,此时和base取10一样) 比如int ('20',8),代表的就是八进制的‘20’

二、计算机中的单位
由于计算机中本质上所有的东西以为二进制存储和操作的,为了方便对于二进制值大小的表示,所以就搞了一些单位。
b(bit),位
1,1位
10,2位
111,3位
1001,4位
B(byte),字节
8位是一个字节。
10010110,1个字节
10010110 10010110,2个字节
KB(kilobyte),千字节
1024个字节就是1个千字节。
10010110 11010110 10010111 .. ,1KB
1KB = 1024B= 1024 * 8 b
M(Megabyte),兆
1024KB就是1M
1M= 1024KB = 1024 * 1024 B = 1024 * 1024 * 8 b
G(Gigabyte),千兆
1024M就是1G
1 G= 1024 M= 1024 *1024KB = 1024 * 1024 * 1024 B = 1024 *
1024 * 1024 * 8 b
T(Terabyte),万亿字节
1024个G就是1T
...其他更大单位 PB/EB/ZB/YB/BB/NB/DB 不再赘述。
单位的转换
1 B(字节)= 8bit(比特位)
1 KB(千字节) = 1024 B(字节)
1 M(兆字节) = 1024KB(千字节)
1 G = 1024M
1 T = 1024G
三、编码
基本概念:
字符(Character)
在电脑和电信领域中,字符是一个信息单位,它是各种文字和符号的总称,包括各国家文字、标点符 号、图形符号、数字等。比如,一个汉字,一个英文字母,一个标点符号等都是一个字符。
字符集(Character set)
字符集是字符的集合。字符集的种类较多,每个字符集包含的字符个数也不同。比如,常见的字符集有ASCII 字符集、GB2312 字符集、Unicode 字符集等,其中,ASCII 字符集共有 128 个字符,包 含可显示字符(比如英文大小写字符、阿拉伯数字)和控制字符(比如空格键、回车键);GB2312 字 符集是中国国家标准的简体中文字符集,包含简化汉字、一般符号、数字等;Unicode 字符集则包含 了世界各国语言中使用到的所有字符
字符编码(Character encoding)
字符编码,是指对于字符集中的字符,将其编码为特定的二进制数,以便计算机处理。常见的字符编码 有 ASCII 编码,UTF-8 编码,GBK 编码等。一般而言,字符集和字符编码往往被认为是同义的概 念,比如,对于字符集 ASCII,它除了有「字符的集合」这层含义外,同时也包含了「编码」的含 义,也就是说,ASCII 既表示了字符集也表示了对应的字符编码。
总结:

Python相关的编码
v1 = "吕"
# 声明此字符串通过utf-8进行编码 utf-8常用汉字使用三个字节编码
v2 = "吕".encode("utf-8")
# 声明此此字符串通过gbk进行编码 gbk常用汉字使用两个字节编码
v3 = "吕".encode("gbk")# 如果输出不进行解码,则输出对应编码的字符
print(v2)
print(v3)
# 只有通过对对应的字符编码过的字符进行同类型编码格式解码后,才可以看到原始字符串
print(v2.decode("utf-8"))
print(v3.decode("gbk"))

# 如果使用跟编码不同的类型编码方式进行解码的话,就会报错提示
# UnicodeDecodeError: 'gbk' codec can't decode byte 0x95 in position 2: incomplete multibyte sequence
v2 = "吕".encode("utf-8")
print(v2.decode("gbk"))

本章的知识点属于理解为主,了解这些基础之后有利于后面知识点的学习,接下来对
本节所有的知识点进行归纳总结:
计算机上所有的东西最终都会转换成为二进制再去运行。
ascii编码、unicode字符集、utf-8编码本质上都是字符与二进制的关系。
ascii,字符和二进制的对照表。
unicode,字符和二进制(码位)的对照表。
utf-8,对unicode字符集的码位进行压缩处理,间接也维护了字符和二进制的对照表。
ucs2和ucs4指的是使用多少个字节来表示unicode字符集的码位。
目前最广泛的编码为:utf-8,他可以表示所有的字符且存储或网络传输也不会浪费资源(对码位进行压缩了)。
二进制、八进制、十进制、十六进制其实就是进位的时机不同。
基于Python实现二进制、八进制、十进制、十六进制之间的转换。
一个字节8位
计算机中常见单位b/B/KB/M/G的关系。
汉字,用gbk编码需要用2个字节;用utf-8编码需要用3个字节。
基于Python实现将字符串转换为字节(utf-8编码)
# 字符串类型
name = "小胖"
print(name) # 小胖
# 字符串转换为字节类型
data = name.encode("utf-8")
print(data) # b'\xe6\xad\xa6\xe6\xb2\x9b\xe9\xbd\x90'
# 把字节转换为字符串
old = data.decode("utf-8")
print(old)
基于Python实现将字符串转换为字节(gbk编码)
# 字符串类型
name = "小胖"
print(name) # 小胖
# 字符串转换为字节类型
data = name.encode("gbk")
# print(data) # b'\xe6\xad\xa6\xe6\xb2\x9b\xe9\xbd\x90'
utf8,中文3个字节
print(data) # b'\xce\xe4\xc5\xe6\xc6\xeb' gbk,中
文2个字节
# 把字节转换为字符串
old = data.decode("gbk")
print(old)
四、数据类型(上)
接下来的课程都是来讲解数据类型的知识点,常见的数据类型:
int,整数类型(整形)
bool,布尔类型
str,字符串类型
list,列表类型
tuple,元组类型
dict,字典类型
set,集合类型
float,浮点类型(浮点型)
长整型
Python3:整型(无限制)
Python2:整型、长整形
在python2中跟整数相关的数据类型有两种:int(型)、long(长整型),他们都是整数只不过能表示的值范围不同。

int,可表示的范围:-9223372036854775808~9223372036854775807
long,整数值超出int范围之后自动会转换为long类型(无限制).
在python3中去除了long只剩下:int(整型),并且 int 长度不在限制。
字符串类型
字符串的功能方法
name = "Hello,welcome to python"
# 正向对应下标 012345678910..."(从左到右,索引值从0开始)
# 负向对应下标 ...-4-3-2-1 (从右到左,索引值从-1开始)# index()方法返回子字符串在字符串中的对应索引 如果这个字符或字符串出现多次,则只返回第一次出现的索引值
print(name.index('H'))# 字符串是一个序列 也就是说字符串是按照从左至右的顺序排列的 字符串的索引是从0开始
print(name.index('e'))

索引
正向索引表示,索引值从0开始,从左至右依次递增
负向索引表示,索引值从-1开始,从右至左依次递减
step大于零,表示从左往右读取;step小于零表,示从右向左读取:
name = 'ABCDEFGHIJKLMN'print(name[-1:-7])
#这里拿不到值 因为步长step是1,代表正向去读取索引name[-1:] & name[:-7]的交集,刚好为空,所以拿不到值;
你也可以这么理解,你正向取的,只能正向读;你负向取的,只能负向读;不能正向取了负向读,这是不行的,也不能负向取了正向读;
想要拿到值就要让step小于1,或者再负向输出一次
print(name[-1:-7:-1])

字符串切片
字符串切片var[start_index:end_index:step] 如果省略end_index和step,则默认截取到整个字符串的末尾,
另外如果指定了截止索引(end_index),则这个截止索引是拿不到的,也就是说切片的索引使用是左包右不包
name2 = 'ABCDEFGH'
print(name2[0:4:1])
print(name2[0:4:2])

step指定间隔索引的长度
step表示每一个都取,step为2,表示隔一个取一个,隔一个取一个
name = "Hello,welcome to python"print(name[0:4])
print(name[0:5])

从左开始,H的索引值是0,e的索引值是1,第一个l的索引值是2,第二个l的索引值是3,o的索引值是4,但是因为他是左包右不包的,所以你如果写成[0:4]的话,他是取不到o的,所以他要给截止索引值加一,相当于是[0:5],这样才可以取到完整的Hello
name = 'ABCDEFGHHIJKLMN'
# 也可以指定起始索引
print(name[2:6])# 同理也可以省略起始索引,省略起始索引相当于从0开始
print(name[:5])# 也可以起始索引跟截止索引都省略,代表输出整个字符串,跟直接输出字符串效果一样
print(name[:])
print(name)

count()方法
# count()方法用来去做字符或者字符串出现次数的一个统计
my_string = "China is a country!"
print(my_string.count('i'))
print(my_string.count('a'))
print(my_string.count('a', 0, 5)) #指定在索引值范围为0~5中统计字符a出现的次数

find()方法
my_string = "China is a country!"# find()方法用来去查询子字符串在某字符串中出现的第一次的索引位置
print(my_string.find('a', 0, 12))
和index()方法英语只查询子字符在某字符第一次出现位置的索引值
replace()方法
my_string = "China is a country!"# replace()函数可以用来去做子字符串的一个替换 常用
print(my_string.replace('China', 'USA'))

split()方法
# split()方法可以实现按照分隔符去进行切分字符串,并生成对应的列表 默认分隔符为空格 也可以自己指定分隔符print(my_string.split())print(my_string.split('a'))

join()方法
# join()方法用来把列表或者其他序列拼接起来print('='.join(['hello', 'world']))print('='.join(['hello''world']))print('-'.join('nihao'))
如果想指定拼接符,必须使用,隔开,否则没有效果

strip()方法
# strip()方法去除字符串两边的空白;lstrip()去除左边空白 rstrip()去除右边的空白new_string = ' This a test string 'print(new_string.strip())print(new_string.lstrip())print(new_string.rstrip())

isalpha()方法
# isalpha()方法用来判断是否为纯字母my_name = 'nebula'print(my_name.isalpha())my_name1 = 'nebula1'print(my_name1.isalpha())

isdigit()方法
# isdigit()方法用来判断是否为纯数字my_name = 'nebula'print(my_name.isdigit())

isdecimal()方法
# isdecimal()判断这个字符串是否是十进制的数字 不常用print('11'.isdecimal())

istitle()方法
# istitle()方法代表判断这个字符串是否是英文的标题 也就是说每个单词首字母大写 不常用print('Hello World'.istitle())print('Hello world'.istitle())print('Hello1 World'.istitle())print('1Hello World'.istitle())

注意不能整个字符串都为大写字母,否则输出False
isspace()方法
# isspace()方法用来判断是否是空白print(' asdf'.isspace())print(' '.isspace())

snumberic()方法
# isnumberic()方法用来判断是否为数字化的字符串 跟isdigit等效 不常用print('1234565'.isnumeric())print('12sd333'.isnumeric())print('1.2'.isnumeric())

只能为整数,如果有小数,输出False
isalnum()方法
# isalnum()方法用来判断是否为字母跟数字的组合print('123sdf'.isalnum())print('123,abcsd'.isalnum())

islower()方法
# islower()方法用来判断是否为纯小写print('lower'.islower())
print('Lower'.islower())

isupper()方
# isupper()方法用来判断是否为纯大写print('UPPER'.isupper())
startswith()方法
# startswith()方法用来判断字符串是否以某个字符开头print('Abcd'.startswith('A'))print('Abcd'.startswith('b'))

endswith()方法
# endswith()方法用来判断字符串是否以某个字符结尾print('abctxt'.endswith('txt'))

upper()方法
# upper()方法用来转化字母为大写 lower()方法用来转化字母为小写print('lower'.upper().lower())

removesuffix()方法
# removesuffix()方法是移除字符串的后缀print('testtxt'.removesuffix('txt'))

removeprefix()方法
# removeprefix()方法是移除字符串的前缀print('text.txt'.removeprefix('text'))
capitalize()方法
# capitalize()方法实现将字符串首字母转化成大写 不常用print('this is a page'.capitalize())

zfill()方法
# zfill用来指定特定的长度,当字符串长度不够时,使用0在字符串左侧进行填充补齐长度 不常用print('hello'.zfill(10))

casefold()方法
# casefold()方法返回适合无大小写比较的字符串版本。 等同于lower()方法 不常用print('AbcD'.casefold())

partition()方法
# partition()方法实现将按照指定的字符串的分隔符进行分割字符串,生成一个三个部分元组,类似于split() 不常用print('Hello my world hhh'.partition(' '))print('Hello,my world hhh'.partition('H'))

splitlines()方法
# splitlines()方法可以实现将字符串按照换行符进行切割,生成多个元素组成的一个列表poem = """春眠不觉晓,处处闻啼鸟,夜来风雨声,花落知多少。"""print(poem.splitlines())

swapcase()方法
# # swapcase()方法是交换大小写 不常用
# print('AbCdef'.swapcase())

相关文章:

【Python】进制、计算机中的单位、编码、数据类型、索引、字符串切片、字符串的功能方法
一、进制计算机中底层所有的数据都是以 010101 的形式存在(图片、文本、视频等)。二进制八进制十进制(也就是我们熟知的阿拉伯数字)十六进制进制转换v1 bin(25) # 十进制转换为二进制 print(v1) # "0b11001"v2 oct(23…...
基于android的无人健身房
需求信息: 1:客户登录:首次登陆必须注册,用户注册完成后可以进入软件查看自己的金额、会员等级、消费和健身时长。 2:计费功能:用户通过软件扫描二维码后即可进入健身房,软件显示欢迎进入健身房…...
带你Java基础入门
首先我们都知道的,Java是一种高级计算机语言,是可以编写跨平台应用软件、完全面向对象的程序设计语言。相对于零基础小白如何更加快速的入门java?小编给大家整理了java300集自学教程视频,非常适合零基础的小伙伴,一周时间实现快速…...

VNCTF 2023 - Web 象棋王子|电子木鱼|BabyGo Writeups
象棋王子 签到题,jsfuck解密 丢到console得到flag 电子木鱼 后面两道都是代码审计,这题是rust,题目给出了源码,下载下来看 关键代码: 由于限制,quantity只能为正数 功德也只能是正数(负数的…...
「JVM 编译优化」插入式注解处理器(自定义代码编译检查)
JDK 的编译子系统暴露给用户直接控制的功能相对很少,除了虚拟机即时编译的若干参数,便只有 JSR-296 中定义的插入式注解处理器 API; 文章目录1. 目标2. 实现3. 运行与测试4. 其他应用案例1. 目标 前端编译器在讲 Java 源码编译成字节码时对源…...

一文彻底理解大小端和位域 BIGENDIAN LITTLEENDIAN
一文彻底理解大小端和位域 为什么有大小端 人们一直认为大道至简,就好像物理学上的世界追求使用一个理论来统一所有的现象。为什么cpu存在大小端之分,一言以蔽之,这两种模式各有各的优点,其各自的优点就是对方的缺点,…...

面试准备知识点与总结——(虚拟机篇)
目录JVM的内存结构JVM哪些部分会发生内存溢出方法区、永久代、元空间三者之间的关系JVM内存参数JVM垃圾回收算法1.标记清除法2.标记整理3.标记复制说说GC和分代回收算法三色标记与并发漏标的问题垃圾回收器项目中什么时候会内存溢出,怎么解决类加载过程三个阶段何为…...

spring cloud 集成 seata 分布式事务
spring cloud 集成 seata 分布式事务 基于 seata-server 1.6.x 序言 下载 seata-server 准备一个数据库 seata 专门为 seata-server 做存储,如, 可以指定 branch_tabledistributed_lockglobal_tablelock_table 准备一个业务库,比如存放定单ÿ…...

k8s篇之概念介绍
文章目录时光回溯什么是K8SK8S不是什么一、K8S构成组件控制平面组件(Control Plane Components)kube-apiserveretcdkube-schedulerkube-controller-managercloud-controller-managerNode 组件kubeletkube-proxy容器运行时(Container Runtime&…...
JavaScript学习第1天:浏览器组成、JS的组成、变量、数据类型转化、运算符、while和do...while循环
目录一、浏览器的组成二、JS的组成三、变量1、同时声明多个变量2、声明变量特殊情况四、数据类型1、数据类型2、 isNaN()方法3、字符串转义符4、字符串拼接5、特殊拼接五、数据类型转换1、转化为字符串2、转化为数字型3、转化为布尔值六、运算符1、递增和递减运算符2、逻辑运算…...

【Flutter入门到进阶】Dart进阶篇---Dart多线程异步原理
1 Isolate 1.1 什么是Isolate 1.1.1 概念 线程?异步?隔离?到底什么意思? Isolate中文意思是隔离,从使用角度来说是Dart的线程,但是从本质虚拟机的实现角度来讲Isolate是一组封装。 isolate可以理解为dar…...

WEB系列(二)-----------XSS
XSS原理及基础 定义 恶意攻击者会往Web页面里插入JS代码,当用户点击网页时.镶嵌的JS代码就会执行,从而达到恶意的特殊目的. 原因 程序对输入和输出的控制不够严格,导致payload输出到前段时被浏览器当做有效代码执行从而产生危害。 分类 存储型反射型DOM型 测…...

[python入门㊾] - python异常中的断言
目录 ❤ 断言的功能与语法 ❤ 常用断言 ❤ 常用的断言表达方式 ❤ 异常断言 ❤ 正则断言 ❤ 检查断言装饰器 ❤ 断言的功能与语法 Python assert(断言)用于判断一个表达式,在表达式条件为 False 的时候触发异常 断言可以在条件…...

一文告诉你什么是财务数据治理?
大家好,我是梦想家Alex,今天是周末,就不给大家分享技术文了~应出版社老师推荐,文末给大家送几本DAMA中国主席力荐,20位行业专家历时2年共同打造的《财务数据治理实战》,将数据治理理论应用于财务…...

MySQL数据库调优————ORDER BY语句
ORDER BY调优的核心原理,原则是利用索引的有序性跳过排序环节 关于ORDER BY语句的一些尝试 我们使用employees表进行尝试,索引情况如下 在执行计划的结果中,Extra里如果存在,Using filesort则表示,排序没有使用到索…...

Linux命令之grep
Linux grep是一个非常强大的文本搜索工具。按照给定的正则表达式对目标文本进行匹配检查,打印匹配到的行。grep命令可以跟其他命令一起使用,对其他命令的输出进行匹配。 grep语法如下: grep [options] [pattern] content 文本检索 grep可以对…...

一起学 pixijs(4):如何绘制文字md
大家好,我是前端西瓜哥,今天我们来学 pixijs 如何绘制文字。pixijs 版本为 7.1.2。 使用原生的 WebGL 来绘制文字是非常繁琐的,pixijs 对此进行了高层级的封装,提供了 Text 类和 BitMapText 类来绘制文字。 Text 最基本的写法&…...

mac m1设备上安装Qt并使用qt编程遇到的问题以及解决方式
# 简介: 首先在M1平台上的程序可以看到有两种架构,分别是intel的(x86-64)和苹果的m1(arm64架构),根据苹果的介绍,当在m1上面运行intel程序的时候使用的是转译的方式运行的ÿ…...

tensorflow 学习笔记(二):神经网络的优化过程
前言: 学习跟随 如何原谅奋力过但无声的 tensorflow 笔记笔记。 本章主要讲解神经网络的优化过程:神经网络的优化方法,掌握学习率、激活函数、损失函数和正则化的使用,用 Python 语言写出 SGD、Momentum、Adagrad、RMSProp、Ada…...

【Java】《Java8 实战》 CompletableFuture 学习
文章目录前言1. 并发(Concurrent) 和 并行(Parallel)1.1 并发的来源1.2 并发技术解决了什么问题2. 并行的来源2.1 并行解决了什么问题3. CompletableFuture 简介4. CompletableFuture 简单应用5. CompletableFuture 工厂方法的应用6. CompletableFuture join() 方法7. 使用 Par…...

Flask RESTful 示例
目录 1. 环境准备2. 安装依赖3. 修改main.py4. 运行应用5. API使用示例获取所有任务获取单个任务创建新任务更新任务删除任务 中文乱码问题: 下面创建一个简单的Flask RESTful API示例。首先,我们需要创建环境,安装必要的依赖,然后…...

C++初阶-list的底层
目录 1.std::list实现的所有代码 2.list的简单介绍 2.1实现list的类 2.2_list_iterator的实现 2.2.1_list_iterator实现的原因和好处 2.2.2_list_iterator实现 2.3_list_node的实现 2.3.1. 避免递归的模板依赖 2.3.2. 内存布局一致性 2.3.3. 类型安全的替代方案 2.3.…...
OpenLayers 分屏对比(地图联动)
注:当前使用的是 ol 5.3.0 版本,天地图使用的key请到天地图官网申请,并替换为自己的key 地图分屏对比在WebGIS开发中是很常见的功能,和卷帘图层不一样的是,分屏对比是在各个地图中添加相同或者不同的图层进行对比查看。…...

智能分布式爬虫的数据处理流水线优化:基于深度强化学习的数据质量控制
在数字化浪潮席卷全球的今天,数据已成为企业和研究机构的核心资产。智能分布式爬虫作为高效的数据采集工具,在大规模数据获取中发挥着关键作用。然而,传统的数据处理流水线在面对复杂多变的网络环境和海量异构数据时,常出现数据质…...
Python ROS2【机器人中间件框架】 简介
销量过万TEEIS德国护膝夏天用薄款 优惠券冠生园 百花蜂蜜428g 挤压瓶纯蜂蜜巨奇严选 鞋子除臭剂360ml 多芬身体磨砂膏280g健70%-75%酒精消毒棉片湿巾1418cm 80片/袋3袋大包清洁食品用消毒 优惠券AIMORNY52朵红玫瑰永生香皂花同城配送非鲜花七夕情人节生日礼物送女友 热卖妙洁棉…...
省略号和可变参数模板
本文主要介绍如何展开可变参数的参数包 1.C语言的va_list展开可变参数 #include <iostream> #include <cstdarg>void printNumbers(int count, ...) {// 声明va_list类型的变量va_list args;// 使用va_start将可变参数写入变量argsva_start(args, count);for (in…...

Ubuntu Cursor升级成v1.0
0. 当前版本低 使用当前 Cursor v0.50时 GitHub Copilot Chat 打不开,快捷键也不好用,当看到 Cursor 升级后,还是蛮高兴的 1. 下载 Cursor 下载地址:https://www.cursor.com/cn/downloads 点击下载 Linux (x64) ,…...

Linux中《基础IO》详细介绍
目录 理解"文件"狭义理解广义理解文件操作的归类认知系统角度文件类别 回顾C文件接口打开文件写文件读文件稍作修改,实现简单cat命令 输出信息到显示器,你有哪些方法stdin & stdout & stderr打开文件的方式 系统⽂件I/O⼀种传递标志位…...
绕过 Xcode?使用 Appuploader和主流工具实现 iOS 上架自动化
iOS 应用的发布流程一直是开发链路中最“苹果味”的环节:强依赖 Xcode、必须使用 macOS、各种证书和描述文件配置……对很多跨平台开发者来说,这一套流程并不友好。 特别是当你的项目主要在 Windows 或 Linux 下开发(例如 Flutter、React Na…...
命令行关闭Windows防火墙
命令行关闭Windows防火墙 引言一、防火墙:被低估的"智能安检员"二、优先尝试!90%问题无需关闭防火墙方案1:程序白名单(解决软件误拦截)方案2:开放特定端口(解决网游/开发端口不通)三、命令行极速关闭方案方法一:PowerShell(推荐Win10/11)方法二:CMD命令…...