1 ''' 2 bit_length 3 1 0000 0001 1 4 2 0000 0010 2 5 3 0000 0011 2 6 '''
# 类型转化注意点
1 # int 转 str 无限制 2 # str 转 int 只有字符串为数字的时候可以转 3 # int 转 bool 只要是非零就是True else 为False 4 # bool 转 int True为 1 False 为 0
1 # str 转 bool ''为False else 为True 2 # if s: 3 # print("你输入的为空,请重新输入") 4 # 可以判断s 是否为非空字符
# 效率问题的选择
1 ''' 2 while True: 的效率低于 3 while 1: 因为少了转化 4 '''
# 字符串全部打印
# s7 = s[:] # s8 = s[0:] # print(s7, s8)
# 倒叙打印
1 倒叙打印 2 s = 'ABCDLSESRF' 3 s14 = s[-1::-1] 4 print(s14)
# 每个隔开(特殊字符或者数字)的单词首字母大写
1 # 每个隔开(特殊字符或者数字)的单词首字母大写 2 s = 'alex*egon-wusir' 3 print(s.title()) 4 5 s = 'fade,crazy*w4rri0r_songsong node_3' 6 s4 = s.title() 7 print(s4)
# 测量字符串的元素个数 用len
# 以什么开头 startswith 以什么结束 endswiith
s = 'rainmZc' print(s.startswith('rai')) print(s.endswith("r", 3, 6)) # 可以利用此功能来筛选符合条件的字符串 if s.startswith('rainm'): print("handsome") else: pass
# find 通过元素找索引,找不到返回-1
# index通过元素找索引,找不到会报错
# 逐个输出字符串元素
1 # 逐个输出字符串元素 2 s = "123dsf g123..官方给的412s" 3 for i in s: 4 print(i) 5 name = input("请输入名字:") 6 if 'sb'.upper() in name.upper(): 7 print("你才是{}".format(name)) 8 else: 9 print(1111)
# format的三种用法
1 name = "{} is very {} and {}".format('Rainm', 'handsome', 'handsome') 2 print(name) 3 # 按顺序输出 4 name = "{1} is very {0} and {0}".format("handsome", "Rainm") 5 print(name) 6 name = "{name} is very {a} and {a}".format(a="handsome", name="Rainm") 7 print(name)
# int: bit_length 测量整型用二进制的最小位数
# bool: True 或者 False
# str -> bool 非空字符时为False
# capitalize 首字母大写
# upper 全部大写
# lower 全部小写
# find 通过元素查找索引,找不到返回-1
# index 通过元素查找索引,找不到报错
# swapcase 字符串中英文字符的大小写翻转
# replace 替换指定字符 参数有 旧字符,新字符,替换次数
# isdigit 判断是否是数字 isalpha 判断是否是字母 isalnum 判断是否是数字和字母的组合 返回的都是bool
# startswith 判断是否是以。。。开头 endswith 判断是否是以。。。结尾
# title 首字母大写
# center 居中,可以自定义填充物
# strip 删除指定的特殊字符 lstrip 左删除 rstrip 右删除
# split 指定以什么字符分割字符串为列表
# s = "123fsag123agfga45ga123ga123"
# print(s.split("123"))
# format 格式化输出
# len 测量字符串中的元素的个数
# count 计算指定字符的个数
# 列表: 增 append insert extend
# 删 remove pop clear del
# 改 li[索引] = “被修改的内容”
# 查 for 循环
# range 下面生成0-8的数字
# for i in range(0, 9):
# print(i)
# 元祖 不可修改子元素
# count 计算元素的个数,len()测量长度 sort 排序默认升序 降序 sort(reverse = True)
# reverse 翻转
# join: list ——》 str
1 # join: list ——》 str 2 # li = ["1321", "454"] 3 # a = "".join(li) 4 # print(a)
# 重点
# 数据类型划分: 可变数据类型, 不可变数据类型
# 不可变数据类型:元祖 bool int str 也称为可哈希
# 可变数据类型:list,dict set 不可哈希
# dict key 必须是不可变数据类型 可哈希
# value:任意的数据类型
# dict 的优点: 二分查找去查询 存储大量的关系型数据
# 特点: (无序)
1 # dic = { 2 # key为字符串 'name':['大猛','小孟'], 3 # 'py9':[{'num':71,'avg_age':18,}, 4 # {'num': 71, 'avg_age': 18, }, 5 # {'num': 71, 'avg_age': 18, }, 6 # ], 7 # key为bool True:1, 8 # key为元祖 (1,2,3):'wuyiyi', 9 # key为整型 2:'二哥', 10 # }
# 编码问题
# py3:
# str 在内存中是用unicode编码。
# bytes类型
# 对于英文
# str: 表现形式: s = 'alex'
# 编码方式: 010101010
# bytes: 表现形式 s = b'alex'
# 编码方式 000101010 utf-8 gbk。。。。
# 对于中文:
# str: 表现形式: s = '中国'
# 编码方式: 010101010 unicode
# bytes: 表现形式: s = b'xe91e91e01e21e31e32'
# 编码方式: 000101010 utf-8 gbk。。。。
1 # dict:dic = {"name": "alex"} 2 # 增: dic['age'] = 16 存在就覆盖 3 # dic.setdefault()没有就增加 有就不变 4 5 # 删除:pop() 按照keys删除 有返回值,返回key对应的值 没有对应的key就会报错 6 # dia = {'name':"gag"} 7 # dia.pop('name') 8 # print(dia) 9 # clear 清空列表 del 可以单个删除,也可以直接删除整个字典 popitem 随机删除,返回的是元祖 10 # 改 update 存在就覆盖,没存在就添加 11 # 查 12 # dic = {'name': "gag"} 13 # # dic.keys() # 打印key 14 # # dic.values() # 打印value 15 # # dic.items() # 打印key和value 16 # # 17 # # for k, v in dic.items(): 18 # # print(k, v) 19 # # # 将键的值取出 20 # # v = dic.get('name', None) 21 # # print(v) 22 23 li= [11, 22, 33, 44, 55, 66, 77, 88, 99, 90] 24 dic = {'k1': [], 'k2': []} 25 for i in li: 26 if i == 66: 27 continue 28 if int(i) > 66: 29 dic['k1'].append(i) 30 else: 31 dic['k2'].append(i) 32 print(dic) 33 34 # 复习 35 # = 赋值 == 比较值是否相等 is比较 比较的是内存地址 id()显示内存地址 36 li1 = [1, 2, 3] 37 li2 = li1 38 print(li1 is li2, id(li1),id(li2)) 39 40 # 数字,字符串 具有小数据池 41 # 数字的范围 -5 -- 256 42 # 字符串: 1,不能有特殊字符 43 # 2.s*20还是同一个地址,s*21以后就是两个地址 44 i1 = 6 45 i2 = 6 46 print(id(i1),id(i2)) 47 # 编译器显示一样的地址 但是在终端显示的是不一样的 48 i1 = 300 49 i2 = 300 50 print(id(i1), id(i2)) 51 52 # 剩下的 list dict tuple set 53 # 地址不一样 54 l1 = [1,] 55 l2 = [1,] 56 print(l1 is l2) 57 58 #### 重要 理解 59 # s = 'alex' 60 # s1 = b'alex' 61 # print(s,type(s)) 62 # print(s1,type(s1)) 63 64 # s = '中国' 65 # print(s,type(s)) 66 # s1 = b'中国' 67 # print(s1,type(s1)) 68 69 s1 = 'alex' 70 # encode 编码,如何将str --> bytes, () 71 s11 = s1.encode('utf-8') 72 s11 = s1.encode('gbk') 73 # 打印的都是b'alex' 74 print(s11) 75 76 s2 = '中国' 77 s22 = s2.encode('utf-8') 78 # show b'xe4xb8xadxe5x9bxbd' 6 个16进制 因为utf-8一个中文3个字节 79 print(s22) 80 81 s22 = s2.encode('gbk') 82 # show b'xd6xd0xb9xfa' 4 个16进制 因为gbk一个中文2个字节 83 print(s22) 84 85 # utf-8 A:00100000 8位 一个字节 86 # 中: 00000001 00000010 00000110 24位 三个字节 87 88 89 # gbk A: 00000110 8位 一个字节 90 # B: 00000010 00000110 16位 两个字节 91 92 # 各个编码之间的二级制,是不可以互相识别的,会产生乱码 93 # 文件的存储,传输,不能是unicode (只能是utf-8 utf-16 gbk,gb2312,asciid等)