数据类型
什么是数据类型?
数据类型就是区分数据不同的状态
python 中的数据类型
数据类型 | python中的写法 |
---|---|
数字 | int a = 12 |
字符串 | str a = ‘abc’ |
列表 | list a = [1,2,3] |
元祖 | tuple a = (1,2,3) |
字典 | dic a = {‘name’:CharmNight} |
集合 | set a = {‘a’,’b’,’c’} |
基础数据类型
int
数字主要用于计算,在python3中需要注意
2/1 = 2.0
与python2 有所不同,在python3中的除法均为真除。即所有类型的除法结果都为浮点数
关于浮点数精度问题,借鉴与百度
>>> 0.2+0.1
0.30000000000000004
所有语言在处理浮点数时都会限制精度,用有限长的精度限制无限长精度造成的误差
方法
#bit_length() 当十进制使用二进制表示时,最少使用的位数
v = 11
data = v.bit_length()
print(bin(v))
print(data)
----------------
0b1011
4
bool
布尔值就两种:True or False
bool —-> int
True-------1
False------0
int ——>bool
非零即为真
str ——>bool
非空即为真
str
索引与切片
索引
索引即下标,字符串组成元素从第一个开始,初始索引为0.依次类推
a = 'ABDEFGHIJK'
print(a[0])
print(a[1])
print(a[2])
A
B
D
如果索引值超过范围会出现
Traceback (most recent call last):
File "D:/untitled/demo.py", line 11, in <module>
print(a[10])
IndexError: string index out of range
(检测下标是否越位,即检测取的值的下标)
切片
概念
切片就是通过索引(索引:索引:步长)截取一段字符串,形成新的字符串 (原则时顾头不顾尾)
a = 'ABDEFGHIJK'
print(id(a)) #45093776
print(a[0:3]) ABD
print(id(a[0:3])) 44676192
print(a[0:-1]) ABDEFGHIJ
print(id(a[0:-1])) 45772952
print(a[2:4]) DE
print(id(a[2:4])) 44676192
print(a[0:5:2]) ACE 步长
print(a[5:0:-2]) ECA 反向步长
---------
这里打印id是为了验证是否形成了新的字符串
打印源串
print([0:])
print([:])
如果 :前不写是指前面所有内容
后面不写是指后面所有内容
例如:
[:5] 索引 0 到 4的所有值
[5:] 索引 5 到 最后的所有值
通过上面的写法可以发现出现了一个负数 -1。在切片中可以使用负数代表倒数第几个数的索引
例如 -1 代表最后一个数的索引 -2 代码倒数第二个数的索引。依次类推
何为步长
可以简单理解成间隔。
例如: a[0:5:2]
先截取a[0:5] ABCDE
后面步长为2即每间隔2个取一个值
A C E
反向步长
问:把字符串a 倒叙输出.即输出结果为 KJIH...A
print(a[::-1])
KJIHGFEDBA
反向步长就是将内容倒叙 截取
print(a[4::-2])
结果为FDA
因为是反向步长所以倒叙读取 并且遵循顾头不顾尾即包含头不包含尾 并且间隔2个读取一个
方法
文本大小写
a = 'my name is Night'
# capitalize() 字符串句首 首字母大写
print(a.capitalize()) # My name is night
# swapcase() 大小写反转
print(a.swapcase()) # MY NAME IS nIGHT
# title() 每个单词首字母大写
print(a.title()) # My Name Is Night
# upper() 所有字符大写
print(a.upper()) # MY NAME IS NIGHT
# lower() 所有字符小写
print(a.lower()) # my name is night
upper、lower 用法:例如 验证码不区分大小写
str_i = 'aseF'
str_s = input('输入验证码')
if str_i.lower() == str_s.lower():
print('验证码输入正确')
填充 center
a = 'Hello'
# center(width, fillchar=None)
print(a.center(20,'-'))
-------Hello--------
width 宽度,如果指定宽度大于字符串宽度,则将字符串居中,并用填充符号将字符串长度填充到指定宽度
如果指定宽度小于字符串宽度,则显示字符串本身
fillchar 填充符号 默认为 空格 ,可以任意指定
计算字符串中元素出现次数 count
a = 'Hi!Baby,I Love You'
# count(sub, start=None, end=None)
print(a.count('o')) # 2
print(a.count('o',-4)) # 1
print(a.count('o',-4, -2)) # 0
sub 字符串, 即所想要计算的元素(可为单个元素,也可一串字符)
start 开始位置 int
end 结束位置 int
start 和 end 可以视为切片
补全Tab
a2 = "hqw\t"
#\t前面的补全
# 默认将一个tab键变成8个空格,如果tab前面的字符长度不足8个,则补全8个,如果tab键前面的字符长度超过8个不足16个则补全16个,以此类推每次补全8个。
ret4 = a2.expandtabs()
print(ret4)
以什么开头\结尾 startswith\endswith
a = 'Baby'
print(a.startswith('B')) # True
print(a.endswith('y')) # True
startswith( prefix, start=None, end=None)
判断字符串以什么开头 返回bool类型
prefix 字符串, 即所想要计算的元素(可为单个元素,也可一串字符)
start 开始位置 int
end 结束位置 int
start 和 end 可以视为切片
endswith( prefix, start=None, end=None)
判断字符串以什么结尾 返回bool类型
prefix 字符串, 即所想要计算的元素(可为单个元素,也可一串字符)
start 开始位置 int
end 结束位置 int
start 和 end 可以视为切片
寻找字符串中的元素是否存在 find
a = "This's so Cool"
print(a.find('s')) # 3
print(a.find('h')) # -1
find( sub, start=None, end=None)
# 查找元素是否存在 从左边开始查找 如果找到 返回第一个的索引位置,如果没有找到返回 -1
sub 字符串, 即所想要计算的元素(可为单个元素,也可一串字符)
start 开始位置 int
end 结束位置 int
start 和 end 可以视为切片
rfind
a = "This's so Cool"
print(a.find('s')) # 7
与find用法一样,只不过是从右边开始查找
寻找字符串中的元素索引位置 index
用法与find 相似
a = "This's so Cool"
print(a.index('s')) # 3
print(a.index('h')) # 报错
index(sub, start=None, end=None)
# 查找元素的索引位置
sub 字符串, 即所想要计算的元素(可为单个元素,也可一串字符)
start 开始位置 int
end 结束位置 int
start 和 end 可以视为切片
字符串的分割 split
str—–> list
str.split()
a = "This's so Cool"
print(a.split(' ',0)) # ["This's so Cool"]
print(a.split(' ')) # ["This's", 'so', 'Cool']
print(a.split()) # ["This's", 'so', 'Cool']
split(sep=None, maxsplit=-1)
sep 根据什么分割字符串 默认为空格
maxsplit 根据第几个分割符进行切割
返回值为list
去除字符串左右两边的特殊字符 strip
a = ' 你好 '
a.strip() # 你好
a = 'hhh 666 hhh'
print(a.strip(' h')) # 666
strip(chars=None)
chars 字符串格式 默认为空格
根据chars中赋值的字符进行左右两边清洗字符串
rstrip
去除字符串右边的特殊字符
lstrip
去除字符串左边的特殊字符
替换 replace
#replace
name='GG say :i have one tesla,my name is GG'
print(name.replace('GG','CharmNight',1))
replace( old, new, count=None)
old 原字符串(被替换的字符串
new 新字符串(要替换的字符串
count 默认是 替换字符串中的所有内容 可以设置替换多少个
is系列
name='jinxin123'
print(name.isalnum()) #字符串由字母或数字组成
print(name.isalpha()) #字符串只由字母组成
print(name.isdigit()) #字符串只由数字组成