当前位置: 首页 > 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…...

Python爬虫实战:研究PyQuery库相关技术

1. 引言 1.1 研究背景与意义 随着互联网的快速发展,网络上的数据量呈爆炸式增长。如何高效地从海量的网页数据中提取有价值的信息,成为当前信息技术领域的一个重要研究方向。网络爬虫作为一种自动获取网页内容的程序,能够按照一定的规则,自动地抓取万维网信息,在搜索引擎…...

【Elasticsearch】suggest_mode

suggest_mode 是 Elasticsearch 中 term suggester 和 phrase suggester 的一个参数,用于控制建议的生成方式。它有以下三种模式: 1. missing:默认值。仅对索引中不存在的词项提供建议。如果输入的词已经在索引中存在,则不会生成建…...

PHP中文网文章内容提取免费API接口教程

接口简介: 提取PHP中文网指定文章内容。本接口仅做内容提取,未经作者授权请勿转载。 请求地址: https://cn.apihz.cn/api/caiji/phpzww.php 请求方式: POST或GET。 请求参数: 【名称】【参数】【必填】【说明】 【用…...

交换机 路由器

在计算机网络中,S 和 R 常常分别代表以下设备: S:Switch(交换机)R:Router(路由器) 简要说明: Switch(交换机,S) 交换机工作在数据链…...

Mongodb | 基于Springboot开发综合社交网络应用的项目案例(中英)

目录 Project background Development time Project questions Create Project create springboot project project framework create folder Create Models user post Comment Like Message Serive tier user login and register Dynamic Publishing and Bro…...

物流项目第九期(MongoDB的应用之作业范围)

本项目专栏: 物流项目_Auc23的博客-CSDN博客 建议先看这期: MongoDB入门之Java的使用-CSDN博客 需求分析 在项目中,会有两个作业范围,分别是机构作业范围和快递员作业范围,这两个作业范围的逻辑是一致的&#xf…...

【HarmonyOS 5应用架构详解】深入理解应用程序包与多Module设计机制

⭐本期内容:【HarmonyOS 5应用架构详解】深入理解应用程序包与多Module设计机制 🏆系列专栏:鸿蒙HarmonyOS:探索未来智能生态新纪元 文章目录 前言应用与应用程序包应用程序的基本概念应用程序包的类型标识机制应用安装流程 应用的…...

4.2.3 Spark SQL 手动指定数据源

在本节实战中,我们学习了如何在Spark SQL中手动指定数据源以及如何使用format()和option()方法。通过案例演示,我们读取了不同格式的数据文件,包括CSV、JSON,并从JDBC数据源读取数据,展示了如何将这些数据转换为DataFr…...

C#数字图像处理(一)

文章目录 1.C#图像处理基础1.1 Bitmap类1.2 Bitmapdata类1.3 Graphics类1.4 Image类 2.彩色图像灰度化1.提取像素法2.内存法3.指针法三种方法的比较4.灰度图像二值化: 3.相关链接 Bitmap类、 Bitmapdata类和 Graphics类是C#图像处理中最重要的3个类,如果要用C# 进行…...

【Linux笔记】Shell-脚本(下)|(常用命令详细版)

在(上)篇,我们详细的讲解了Shell脚本的基础知识和些许命令与实验,这次的的(下)篇,我们会详细讲解Shell脚本的常用命令 关于脚本的基础知识请各位移步到(上)篇啦~ Shell…...