当前位置: 首页 > news >正文

【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"))

本章的知识点属于理解为主,了解这些基础之后有利于后面知识点的学习,接下来对

本节所有的知识点进行归纳总结:

  1. 计算机上所有的东西最终都会转换成为二进制再去运行。

  1. ascii编码、unicode字符集、utf-8编码本质上都是字符与二进制的关系。

  1. ascii,字符和二进制的对照表。

  1. unicode,字符和二进制(码位)的对照表。

  1. utf-8,对unicode字符集的码位进行压缩处理,间接也维护了字符和二进制的对照表。

  1. ucs2和ucs4指的是使用多少个字节来表示unicode字符集的码位。

  1. 目前最广泛的编码为:utf-8,他可以表示所有的字符且存储或网络传输也不会浪费资源(对码位进行压缩了)。

  1. 二进制、八进制、十进制、十六进制其实就是进位的时机不同。

  1. 基于Python实现二进制、八进制、十进制、十六进制之间的转换。

  1. 一个字节8位

  1. 计算机中常见单位b/B/KB/M/G的关系。

  1. 汉字,用gbk编码需要用2个字节;用utf-8编码需要用3个字节。

  1. 基于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)
  1. 基于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存在大小端之分,一言以蔽之,这两种模式各有各的优点,其各自的优点就是对方的缺点&#xff0c…...

面试准备知识点与总结——(虚拟机篇)

目录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 准备一个业务库,比如存放定单&#xff…...

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程序的时候使用的是转译的方式运行的&#xff…...

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…...

Leetcode 3576. Transform Array to All Equal Elements

Leetcode 3576. Transform Array to All Equal Elements 1. 解题思路2. 代码实现 题目链接:3576. Transform Array to All Equal Elements 1. 解题思路 这一题思路上就是分别考察一下是否能将其转化为全1或者全-1数组即可。 至于每一种情况是否可以达到&#xf…...

FFmpeg 低延迟同屏方案

引言 在实时互动需求激增的当下,无论是在线教育中的师生同屏演示、远程办公的屏幕共享协作,还是游戏直播的画面实时传输,低延迟同屏已成为保障用户体验的核心指标。FFmpeg 作为一款功能强大的多媒体框架,凭借其灵活的编解码、数据…...

安宝特方案丨XRSOP人员作业标准化管理平台:AR智慧点检验收套件

在选煤厂、化工厂、钢铁厂等过程生产型企业,其生产设备的运行效率和非计划停机对工业制造效益有较大影响。 随着企业自动化和智能化建设的推进,需提前预防假检、错检、漏检,推动智慧生产运维系统数据的流动和现场赋能应用。同时,…...

条件运算符

C中的三目运算符(也称条件运算符,英文:ternary operator)是一种简洁的条件选择语句,语法如下: 条件表达式 ? 表达式1 : 表达式2• 如果“条件表达式”为true,则整个表达式的结果为“表达式1”…...

定时器任务——若依源码分析

分析util包下面的工具类schedule utils: ScheduleUtils 是若依中用于与 Quartz 框架交互的工具类,封装了定时任务的 创建、更新、暂停、删除等核心逻辑。 createScheduleJob createScheduleJob 用于将任务注册到 Quartz,先构建任务的 JobD…...

Spring Boot面试题精选汇总

🤟致敬读者 🟩感谢阅读🟦笑口常开🟪生日快乐⬛早点睡觉 📘博主相关 🟧博主信息🟨博客首页🟫专栏推荐🟥活动信息 文章目录 Spring Boot面试题精选汇总⚙️ **一、核心概…...

如何理解 IP 数据报中的 TTL?

目录 前言理解 前言 面试灵魂一问:说说对 IP 数据报中 TTL 的理解?我们都知道,IP 数据报由首部和数据两部分组成,首部又分为两部分:固定部分和可变部分,共占 20 字节,而即将讨论的 TTL 就位于首…...

基于IDIG-GAN的小样本电机轴承故障诊断

目录 🔍 核心问题 一、IDIG-GAN模型原理 1. 整体架构 2. 核心创新点 (1) ​梯度归一化(Gradient Normalization)​​ (2) ​判别器梯度间隙正则化(Discriminator Gradient Gap Regularization)​​ (3) ​自注意力机制(Self-Attention)​​ 3. 完整损失函数 二…...

scikit-learn机器学习

# 同时添加如下代码, 这样每次环境(kernel)启动的时候只要运行下方代码即可: # Also add the following code, # so that every time the environment (kernel) starts, # just run the following code: import sys sys.path.append(/home/aistudio/external-libraries)机…...

苹果AI眼镜:从“工具”到“社交姿态”的范式革命——重新定义AI交互入口的未来机会

在2025年的AI硬件浪潮中,苹果AI眼镜(Apple Glasses)正在引发一场关于“人机交互形态”的深度思考。它并非简单地替代AirPods或Apple Watch,而是开辟了一个全新的、日常可接受的AI入口。其核心价值不在于功能的堆叠,而在于如何通过形态设计打破社交壁垒,成为用户“全天佩戴…...