1.数据类型
1.int 类型 用于计算
1.1 bit_length()
转换为2进制的最小位置 有效的
i = 5
print(i.bit_length())
i | 二进制 | i.bit_length() |
1 | 0000 0001 | 1 |
2 | 0000 0010 | 2 |
5 | 0000 0101 | 3 |
2.boot :布尔值 T F 用于判断
转换问题
2.1 int—str
i = 1
str(i)
没有条件
2.1.2 str—int
只能是数字转换
s = ‘123’ //’123w’不行//
i = str(s)
2.2 int — bool
i = 3
b = bool(i)
PS:只要是0 就是False 非0就是True
2.2.1 bool —int
True —1 False—0
2.3 转换效率问题
while True: pass while 1: pass
下面的要比上面的效率高
2.4 str—bool
2.4.1
s = "" -----> False
非空字符串都是True
s = "0" -----> True
s if s: print('你输入的为空,请重新输入') else: pass
3.str类型: 存储少量数据,进行操作 !!! 有引号引起来的 “XXXX”
3.1 字符串的索引和切片
字符串 是有顺序的 有序号的
s =‘ASD456FGG’
序号 0123456789
假如要取出A 只用输出序号即可
# s1 = s[0] # print(s1)
S1 同时也是字符串 对字符串进行操作 产生的也是字符串
取出来的和原来的没有影响
3.2 切片 // 固头不过尾//
要取出ASD4
# s5 = s[0:4] # print(s5)
而不是[0:3]
3.2.1 反向取值
# s3 = s[-1]
# print(s3)
PS: 从正向取值就从0开始,反向就从 -1开始取值 但是要想全部取出来 就是s[0:-2] 因为切片是固头不固尾
3.3 取中间跳着取
s = 'ABCDLSESRF' # s[首:尾:步长]
# s10 = s[0:5:2]
PS :步长必须是等长的
反向取
# print(s10)
s11 = s[4:0:-1]
但是这样会出LDCB 不会有A 若要有A 应该:
print(s11)
s12 = s[4::-1]
PS 主要是倒着着取 开头都是-1 同时 步长的 正负代表方向
4.list:列表 存储大量的数据 [ 123,123, ] 逗号分隔为1组
5.元祖:和列表一样存储大量数据 (132,123) 但是元祖是只读列表:只能读取,不能修改!
6.dict :字典 {‘name’:‘tom’,‘age’:‘16’}储存关系的 成对的,可以对应列表 。同时字典的查询的速度非常快
7.集合:{1,2,3}只能储存数据
8.字符串的操作
8.1 字符串的首字母大写
a ='wangjiade' a1 = a.capitalize() print(a1)
输出 a1 = Wangjiade
8.1.2 字符串全部大写
a ='wangjiade' a1 = a.upper() print(a1)
输出 a1 = WANGJIADE
8.1.3 字符串全部小写
a ='wangjIade' a1 = a.lower() print(a1)
输出a1 = wangjiade
应用实例 :输入大小写
zm = 'CAcs4' you_input =input('请输出验证码,不区分大小写') if zm.upper() == you_input.upper(): print('success') else: print('fall')
PS zm.input.lower 也可以!
8.1.4 大小写翻转
a ='JohnNoenscc' a1 = a.swapcase() print(a1)
输出 a1 = jOHNnOENSCC
8.1.5 各个首字母大写
a ='john tom jerry mary' a1 = a.title() print(a1)
PS 以空格个开的 中间也可以是特殊字符 !@#¥%……12
输出:John Tom Jerry Mary
8.1.6 居中
a ='jsdasdQy' a1 = a.center(20) print(a1)
PS 20的开头的距离 center(中间必须打数字。‘填充物’)
8.1.7 补8个位 tab
a ='jsda\tsdQy' a1 = a.expandtabs() print(a1)
jsda(四个空格 前面有四位了)sdQy
8.2 公用长度
a = 'ghfsdjafdasfq34123sad飞' l = len(a) print(l)
站位数字 中文也算
8.3 寻找以什么为开头
#以什么开头结尾 endswith # s = 'alexWUsir' # s7 =s.startswith('alex') # s71 = s.startswith('e',2,5) # print(s71) #输出 T exW
8.4 find 通过元素 输出索引 找不到返回-1
index 通过元素找所以 找不到就报错
s = 'horeismy' s1 = s.find('s') print(s1)
8.5 strip 默认删除前后的空格
strip(‘里面打入什么 就是删掉什么 什么都不加 就是默认删除空格’) 但是只删除前后 中间不删除
s = ' *a%lexWUsi* r%' s91= s.strip(' %*') print(s91)
输出为a%lexWUsi* r
PS :如果要想从左删除就是rstrip 从右删除就是lstrip
8.6 count 查询 单个字符
有就输出对应个数 没有就输出0个 可以组合查询
s = 'alexaa wusirl' s10 = s.count('al') print(s10)
输出为1
8.7 split 分隔切割
默认以空格为切分 split(中间写入什么就以什么来分割)
# s = ';alex;wusir;taibai' # l = s.split(';') # print(l)
PS 同时注意以什么为分隔 那么输出时候 分隔的东西会消失 比如上面的;输出来就没有了
8.8format 格式化输出 和%s一样
# s = '我叫{},今年{},爱好{},再说一下我叫{}'.format('TOM',22,'girl','tom') # print(s) # name = input('请输入名字:') # s = '我叫{0},今年{1},爱好{2},再说一下我叫{0}'.format(name,36,'girl') # print(s) # name = input('请输入名字:') # s = '我叫{name},今年{age},爱好{hobby},再说一下我叫{name}'.format(age=18,name=name,hobby='girl') # print(s)
PS 注意要按照顺序 {}=%s的%
8.9 字符的替换 replace
s = '我喜欢隔壁的大哥,隔壁的大哥也喜欢我' s11 = s.replace('大哥','老王',2) print(s11)
最后的数字是 替换的次数
8.10 is
name = 'jijiji888' print(name.isalnum())#数字和字母 print(name.isalpha())#只能有字母 print(name.isdigit())#只能有数字