200字范文,内容丰富有趣,生活中的好帮手!
200字范文 > 【Python】进制 计算机中的单位 编码 数据类型 索引 字符串切片 字符串的功能方法

【Python】进制 计算机中的单位 编码 数据类型 索引 字符串切片 字符串的功能方法

时间:2023-04-11 22:29:57

相关推荐

【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 .. ,1KB1KB = 1024B= 1024 * 8 b

M(Megabyte),兆

1024KB就是1M1M= 1024KB = 1024 * 1024 B = 1024 * 1024 * 8 b

G(Gigabyte),千兆

1024M就是1G1 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 sequencev2 = "吕".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())

isnumberic()方法

# 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())

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。