python基础数据类型之整数,布尔值,字符串(基础一)
第三章 python基础数据类型之整数,布尔值,字符串(基础一)
python基本数据类型
- int ==> 整数. 主要⽤用来进⾏行行数学运算
- str ==> 字符串串, 可以保存少量量数据并进⾏行行相应的操作
- bool==>判断真假, True, False
- list==> 存储⼤大量量数据.⽤用[ ]表⽰示
- tuple=> 元组, 不可以发⽣生改变 ⽤用( )表⽰示
- dict==> 字典, 保存键值对, ⼀一样可以保存⼤大量量数据
- set==> 集合, 保存⼤大量量数据. 不可以重复. 其实就是不保存value的dict
3.1 整数 int
- 计算和比较
二进制转换成十进制
14转换成十进制
14 0 # 十进制
7 1
3 1
1 1
128 64 32 16 8 4 2 1
print(2**0) 1
print(2**1) 1
print(2**2) 1
print(2**3) 1
print(2**4) 1
print(2**5) 1
print(2**6) 1
print(2**7) 1
十进制转换成二进制
bit_length() 计算整数在内存中占用的二进制码的长度
num = 7 # 8421 00000111
print(num.bit_length())
求十进制数转换成二进制时所占用的位数
十进制 | 二进制 | 长度bit_length() |
---|---|---|
1 | 1 | 1 |
2 | 10 | 2 |
3 | 11 | 2 |
4 | 100 | 3 |
5 | 101 | 3 |
6 | 110 | 3 |
3.2布尔值(bool)
取值只有True False,布尔值没有操作,其他用于条件使用
3.2.1布尔转换
数字转换成bool ==>数字0 是False,数字非0 是True
print(bool(-10)) # 0 是 False 非0的都是True
字符串转换成bool ==> 空字符串 是False,非空字符串是True
print(bool(" ")) #空的字符串是 False 非空的就时True
bool 转换成字符串
print(type(str(True))) #布尔值可以转换成字符串
bool转换成数字==>True 转化成数字 1 False 转换成数字 0
print(int(False))
# True 转化成数字 1 False 转换成数字 0
3.3字符串str
字符串用于存储较少的数据,在python中只要用 " " , ' ' , ''' '''.引号引起来的就是字符串。
3.3.1索引
索引(下标):一排数字,反应第某个位置的字符,索引的下标从0开始,使用[ ]来获取数据
从左到右 0,1,2,3 从右到左 -1,-2,-3 查找时超出范围会报错
name = "meet,alex,wusir,wangsir,Eva_j"
# 01234567 (索引) #从左向右数数
# -4-3-2-1 (索引) # 从右向左数数
3.3.2切片
我们可以使⽤用下标来截取部分字符串串的内容
语法: str[start: end]
规则: 顾头不顾腚, 从start开始截取. 截取到end位置. 但不包括end
s2 = "meet,alex,wusir,wangsir,Eva_j"
print(s2[0:3]) # 从0获取到3. 不不包含3. 结果:mee
print(s2[6:8]) # 根据顾头不不顾腚, 想要取到8必须给9,结果: le ,
print(s2[4:]) # 如果想获取到后. 那么后⼀一个值可以不不给.
print(s2[-1:-5]) # 从-1 获取到 -5 这样是获取不不到任何结果的. 从-1向右数. 你怎么数 也数不不到-5
print(s2[-5:-1]) #顾头不不顾腚. 结果:Eva_
print(s2[-5:]) # 什么都不不写就是-5开始往0取结果:Eva_j
print(s2[:-1]) # 这个是取到倒数第⼀一个结果:meet,alex,wusir,wangsir,Eva_
print(s2[:]) # 原样输结果:meet,alex,wusir,wangsir,Eva_j
3.3.3步长
如果是整数, 则从左往右取. 如果是负数. 则从右往左取. 默认是1
语法: str[start🔚step] start: 起始位置 end: 结束位置 step:步
s2 = "meet,alex,wusir,wangsir,Eva_j"
print(s2[1:5:2]) # 从第⼀一个开始取, 取到第5个,每2个取1个, 结果: et
print(s2[:5:2]) # 从头开始到第五个. 每两个取⼀一个结果:me,
print(s2[4::2]) # 从4开始取到后. 每两个取⼀一个结果:,lxwsrwnsrEaj
print(s2[-5::2]) # 从-5取到后.每两个取⼀一个 结果:Eaj
print(s2[-1:-5]) # -1:-5什什么都没有. 因为是从左往右获取的.结果空
print(s2[-1:-5:-1]) # 步⻓长是-1. 这时就从右往左取值了了 结果:j_av
print(s2[-5::-3]) # 从倒数第5个开始. 到开始. 每3个取⼀一个, 结果:Ein,s,ltm
3.3.4字符串常用方法
切记, 字符串串是不可变的对象, 所以任何操作对原字符串串是不会有任何影响的
upper 全部大写
name = "meet"
name1 = name.upper()
print(name1)
lower 全部小写
name = "MEET"
name1 = name.lower()
print(name1)
应⽤用, 校验⽤用户输⼊入的验证码是否合法
yzm = "o98K"
input_yzm = input("请输入验证码(o98K):")
if yzm.upper() == input_yzm.upper():
print("正确")
else:
print("错误")
startwith() 以什么开头,大小写互相转换
name = "alex"
print(name.startswith('a')) # 就是以a开的头
endswith 以什么结尾
name = "zhuxiaodidi"
print(name.endswith("i")) # 就是以i结尾
strip 去头尾空格---默认去掉空格和换行符
除去头尾两边的空格 脱 *****
name = " alex "
name1 = name.strip() # 可以写想要去掉的内容
print(name1)
if name == "alex":
print(666)
name = " alex "
print(name.strip())
split 分割 默认是空格分割
默认是以空格分割,也可以自己制定分割,分割后返回的内容是一个列表
分割 *****
name = 'alex,wusir'
print(name.split("w"))
replace 替换 第一个参数是旧 ,第二个参数是新
替换 ****
name = "alexnbnsnsn"
name1 = name.replace('n','s') #替换
name1 = name.replace('n','s',2) #替换2是替换的次数
print(name1)
count 统计 统计某个内容出现的次数
count # 统计
name = "zhudidi"
print(name.count("zhu")) # 查询某个内容出现的次数
format() 第三种字符串格式
name = "alex{}wusir{}"
name1 = name.format('结婚了',"要结婚了") # 按照位置顺序去填充的
name = "alex{1}wusir{0}"
name1 = name.format('结婚了',"要结婚了") # 按照索引位置去填充
name = "alex{a}wusir{b}"
name1 = name.format(a="结婚了",b="马上结婚") # 指名道姓,指定关键字填充
print(name1)
3.5 is系列判断
isdecimal 判断的是不是十进制
name = "666"
print(name.isdecimal()) #判断是不是十进制--用它来判断是不是数字
name = "②"
print(name.isdigit()) # 判断是不是阿拉伯数字
isalnum 判断的是不是中文,字母,数字
name = "alex666"
print(name.isalnum()) # 判断的是不是字母,中文和阿拉伯数字
isalpha 判断的是不是中文,字母
name = "alexs你好"
print(name.isalpha()) # 判断的是中文和字母
判断某个字符串是否是小数
s17 = "-123.12"
s17 = s17.replace("-", "") # 替换掉负号
if s17.isdigit():
print("是整数")
else:
if s17.count(".") == 1 and not s17.startswith(".") and not s17.endswith("."):
print("是⼩小数")
else:
print("不不是⼩小数")
3.5 for 循环
for 关键字
i 变量(可以人为修改)
in 关键字
s 可迭代对象 去除(int - bool)
for a in "alex":
print(a)
s19 = "⼤大家好, 我是VUE, 前端的⼩小朋友们. 你们好么?"
#用while循环
index = 0
while index < len(s19):
print(s19[index]) # 利利⽤用索引切⽚片来完成字符的查找
index = index + 1
for c in s19: #for循环, 把s19中的每⼀一个字符拿出来赋值给前⾯面的c
print(c)
print('VUE' in s19)
3.6 range 范围
range() #范围
python3 打印是自己本身
python2打印是列表
range(起始位置,终止位置,步长)
range(10) ---range(终止位置) ,起始位置0
s = range(1,10) # 面试大坑 python2 和 python3
print(s) # 范围
for i in range(1,10,2): # (起始位置,终止位置,步长) # range(10) 指定了终止位置,起始位置默认是0
print(i)
for i in range(100,-11,-1):
print(i)
起始位置0
for i in range(1):
print(i)