数据类型(上)
分为五个维度:定义,独有功能,公共功能,类型转换,其他。
1.整形
1.1 定义
整形实质上是现在所有10进制数的集合
1.2独有功能
用于计算二进制位的多少,例如:
v1 = 16
print(v1.bit_length()) # 5
print(bin(16)) # 0b10000
1.3公共功能
加减乘除
1.4数据转换
# bool
print(True) 1
print(False) 0
# str
print("123") 123
# 进制转换
print(int('0b10000',base=2)) 16
......
1.5 其他
1.51 在py3中int可以表示任意数,而在p2中int能表示的数值有限,超出后被表示为长整形。
1.52 地板除
#python3
print(9/4)
2.5
# python2
print(9/4)
2
2.布尔类型
2.1定义
就是真和假的统称
2.2 独有功能
无
2.3 公共功能
print(True + True) # 2
2.4类型转换
0,""(空字符串),空列表,空字典,空集合等都是False
其他的都为True
2.5 其他
做while或者if 中的条件是自动转为布尔值:
while 5:
print(666)
else:
print(999) # 666,5的布尔值是True
# if 同理....
3.字符串
3.1定义
v1 = 'Alex'
v2 = "Alex"
v3 = "A'elx'"
v4 = '''
Alex
Alex
'''
# 单引号和双引号只能写一行字符,三引号可以换行写。
3.2.独有功能
3.2.1 判断字符是否以什么开头,得到一个布尔值。 变量.startswith()
name = "Alex"
if name.startswith("Al"): # True
3.2.2 判断字符是否以什么结尾,得到一个布尔值 。 变量.endswith()
name = "Alex"
if name.endswith("x"): # True
3.2.3 判断字符串是否是十进制(整形),得到一个布尔值。 变量.isdecimal()
v1 = "123"
print(v1.isdecimal()) # True
3.2.4 清除字符串两边的空白,制表符,换行符 变量.strip()
拓展:清除左边空白 变量.lstrip(),清除右边空白 变量.rstrip()
msg = " hello,Alex "
print(msg.strip()) # hello,Alex
补充:strip还可以去掉字符串两边指定的换行符
msg = "xAlex"
print(msg.strip("x")) # "Ale"
3.2.5 字符串变成大写 变量.upper()
name = "Alex"
print(name.upper()) # "ALEX"
3.2.6 字符串变成大写 变量.lower()
name = "Alex"
print(name.lower()) # "alex"
3.2.7 格式化字符串 .format()
name = "Alex"
age = 18
print("{} is {} years old!".format(name,age))
# Alex is 18 years old!
3.2.8 字符串转化为字节类型
name = "Alex"
name = name.encode("utf-8")
print(name) # b'Alex'
3.2.9 字符串居中,居左,居右。变量.center(数量,“符号”) .ljust(数量,“符号”) .rjust(数量,“符号”)
name = "Alex"
name = name.center(20,"*")
print(name) # ********Alex********
name = "Alex"
name = name.ljust(20,"*")
print(name) # Alex****************
name = "Alex"
name = name.rjust(20,"*")
print(name) # ****************Alex
3.2.10 帮助字符串填充0 变量.zfill(数量)
name = "Alex"
name = name.zfill(10)
print(name) # 000000Alex
运用场景:二进制问题
# 将二进制数填充至八位
print(bin(5)) # 101
print(bin(5).zfill(8)) # 0000b101
3.2.11替换字符串里面的内容 replace方法
msg = "我叫Alex"
msg = msg.replace("Alex","wupeiqi")
print(msg) # 我叫wupeiqi
msg = input("输入内容:")
msg = msg.replace("草","**")
msg = msg.replace("尼玛","***")
print(msg)
# 输入内容:草尼玛
# *****
list = ["草","尼玛","呵呵"]
msg = "草尼玛呵呵"
for i in list:
msg = msg.replace(i,'**')
print(msg)
# ******
3.2.12 字符串的切割 split
name = "Alex,wupeiqi,pig"
name = name.split(",")
print(name)
# ['Alex', 'wupeiqi', 'pig'] # 切割后的内容是个列表
也可以指定切割数量:
name = "Alex,wupeiqi,pig"
name = name.split(",",1)
print(name)
# ['Alex', 'wupeiqi,pig']
还可以从右边开始切割字符
name = "Alex-wupeiqi,-pig"
name = name.rsplit("-",1)
print(name)
# ['Alex-wupeiqi,', 'pig']
3.2.13 字符串的拼接
name_list = ["Alex","wupeiqi","pig"]
name ="-".join(name_list)
print(name)
# Alex-wupeiqi-pig
3.3 公共功能
1.相加 :只能是字符串和字符串相加
print("3" + "6") #"36"
2.相乘 :只能是字符串和整型相乘
print("Alex" * 3) # "AlexAlexAlex"
3.求长度
print(len("Alex")) # 4
4.根据索引找到值
name = "Alex"
name[0] # "A"
name[1] # "l"
name[2] # "e"
注意:只能通过索引取到字符串,而不能通过索引修改字符串!【字符串在内部储存时不允许在内部修改,只能重新创建或者赋值i】
name = "Alex"
index = len(name)-1
while index >=0:
value = name[index]
index -=1
print(value)
# # #
x
e
l
A
5.字符串的切片
name = "Alex"
v1 = name[0:2] # 'Al'
v2 = name[1:-1] # 'le'
v3 = name[0:len(name)] # 'Alex'
注意: 同样也不能对字符串进行修改
6.步长 隔着取
name = "wupeiqi"
print(name[0:7:1]) # "wupeiqi" 前两个是切片,第三个是步长
print(name[0:7:2]) # "wpeii" 2 表示隔一个取一个
print(name[7:0:-1]) # "iqiepuw" -1 b表示倒着取
print(name[":::2"]) # ::表示整个字符串
7.循环
while循环
name = "Alex"
index = len(name)-1
while index >=0:
value = name[index]
index -=1
print(value)
for 循环
name = "Alex"
for i in name:
print(i)
3.4转换
一般来讲是整型转化为字符串
num = 18
print(str(num)) # "18"
3.5 字符串不能被修改
name[":::2"]) # ::表示整个字符串
##### 7.循环
> while循环
```python
name = "Alex"
index = len(name)-1
while index >=0:
value = name[index]
index -=1
print(value)
for 循环
name = "Alex"
for i in name:
print(i)
3.4转换
一般来讲是整型转化为字符串
num = 18
print(str(num)) # "18"
3.5 字符串不能被修改
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HCVKqBZh-1612756662859)(Day06笔记.assets/image-20210207210056144.png)]