今日课程大纲:
01、上周内容回顾
02、pycharm使用
03、格式化输出
04、运算符
05、编码
06、数据类型转换
07、字符串 str
08、for 循环
09、列表 list
10、元组 tuple
11、 字典 dict
12 基础数据类型补充
01、上周内容回顾
1 #!/usr/bin/env python3 2 #author:Alnk(李成果) 3 ''' 4 print('打印') 5 python的历史 6 编译型和解释型 7 python解释器种类: 8 Cpython ipython jpython ... pypy 9 变量: 10 必须是数字,字母,下划线任意组合 11 不能以数字开头 12 不能使用python中的关键字 13 要具有描述性 age = 12 14 最好不要使用中文 15 使用下划线命名 16 常量: 17 一直不变的量,全部大写的变量就是常量 18 注释: 19 单行注释 # 20 多行注释 ''' ''' """ """ 21 数据类型初始 22 int bool str 23 input:用户输入 24 流程控制语句:if 25 if 条件: 26 执行语句 27 单独if 28 if else 29 if elif .... 30 if elif .... else 31 嵌套if 32 流程控制语句:while 33 while 条件: 34 循环体 35 如何终止while循环 36 1,不满足条件 37 2,break 38 while ......else:只要while循环不被break打断,就执行else语句 39 '''
02、pycharm使用
1 #!/usr/bin/env python3 2 #author:Alnk(李成果) 3 ''' 4 1,pycharm安装以及简单的使用教程 5 https://www.cnblogs.com/jin-xin/articles/9811379.html 6 '''
03、格式化输出
1 #!/usr/bin/env python3 2 #author:Alnk(李成果) 3 """ 4 # % 格式化输出 5 name = input('姓名') 6 age = input('年龄') 7 sex = input('性别') 8 hobby = input('爱好') 9 job = input('工作') 10 11 msg = '''------------ info of %s ----------- 12 Name : %s 13 Age : %s 14 job : %s 15 Hobbie: %s 16 ------------- end -----------------''' % (name,name,age,job,hobby) 17 print(msg) 18 19 #格式化输出 20 #补充:注意其中的一个坑 21 # 当用格式化输出的时候,里面有百分号,表示百分之几,需要两个百分号转义 22 msg1 = '我叫%s ,今年%s岁,学习进度3%%' % ('alnk',18) 23 print(msg1) 24 """ 25 26 """ 27 format 格式化输出 28 """ 29 # # 第一种 30 # msg = '我叫{} 今年{} 性别{}'.format('太白', '18', '男') 31 # print(msg) 32 33 # 第二种 34 # msg = '我叫{0} 今年{1} 性别{2},我依然叫{0}'.format('太白', '18', '男') 35 # print(msg) 36 37 # # 第三种 38 # msg = '我叫{name} 今年{age} 性别{sex}'.format(name='太白', sex='男',age='18',) 39 # print(msg)
04、运算符
1 #!/usr/bin/env python3 2 #author:Alnk(李成果) 3 ''' 4 运算符: 5 算数运算,逻辑运算,赋值运算,比较运算,位运算,成员运算,身份运算... 6 算数运算:+ - * / ** // % 7 比较运算: == < > >= <= != 8 赋值运算: = += -= *= /= .... 9 逻辑运算: and or not 10 ''' 11 # 逻辑运算: and or not 12 # 优先级:() > not > and > or ,同一优先级从左至右依次计算 13 # 1,运算符两边全部是比较运算 14 print(1 > 2 and 3 < 4 and 2 > 7 or 4 < 5 ) 15 print(1 > 2 and 3 < 4 or 4 > 5 and 2 > 1 or 9 < 8) 16 17 # 2,运算符两边全部是数值 18 ''' 19 x or y: if x is True return x else y 20 ''' 21 print(1 or 3) 22 print(2 or 3) 23 print(-1 or 3) 24 print(0 or 3) 25 print(1 or 3 or 0 or -1) 26 27 # print(1 and 3) 28 # print(2 and 3) 29 # print(-1 and 3) 30 # print(0 and 3) 31 32 ''' 33 int ---> bool: 非0即True,0即False 34 int ---> bool: True 1,False 0 35 # i = 0 36 # print(bool(i)) 37 # print(int(True)) 38 # print(int(False)) 39 ''' 40 41 # 3,运算符两边即是比较又是数值 42 print(1 > 2 or 3 and 4) 43 44 45 # 成员运算:in not in 46 s1 = 'abcde' 47 s2 = 'ac' 48 print(s2 in s1) 49 50 if s2 in s1: 51 print(333) 52 else: 53 print(111)
05、编码
1 #!/usr/bin/env python3 2 #author:Alnk(李成果) 3 ''' 4 谍战剧: 场景 发电报 滴滴滴滴滴滴滴 5 计算机:文件的存储或者网络传输 高低电平01010101 6 密码本:记录的就是010101 与文字的对应关系。 7 今 0000001 8 晚 0000101 9 吃 0000110 10 鸡 0010001 11 12 # 0010101011010001 13 0000001000010100001100010001 14 15 ASCII:最初版本的密码本:英文字母,数字,特殊字符 16 17 最开始: 18 0000 0001 256种可能。 19 0000 0001 8位 = 1个字节(bytes)。 20 s1 = 'hello1' 6个字节 21 一个字节表示一个字符。 22 h: 01101000 23 e: 01101001 24 l: 01101100 25 o: 01101110 26 1: 27 01101000 01101001 01101100 01101100 01101110 01101111 28 29 unicode:万国码。把全世界所有的文字都记录起来。 30 起初:一个字符两个字节 31 h: 01101000 01101000 32 中:01101000 01101000 33 不够用 34 升级:一个字符四个字节 35 h: 01101000 01101000 01101000 01101000 36 中: 01111000 01101000 01101000 01101000 37 浪费空间,浪费流浪 38 39 utf-8: 最少用8位一个字节表示一个字符。 40 英文: 01101000 ASCII 英文字符:1个字节表示 41 欧洲文: 01101000 01101000 一个字符两个字节表示 42 中文: 01101000 01101100 01101000 一个字符用3个字节表示。 43 'old男孩' utf-8的编码方式: 9个字节 44 45 gbk:国标。 46 只包含:英文和本国语言。 47 h: 01101000 ASCII 英文字符:1个字节表示 48 中: 01101000 01101100 一个字符用2个字节表示 49 'old男孩' gbk的编码方式: 7个字节 50 51 单位转化: 52 8bit == 1Bytes 53 1024Bytes == 1KB 54 1024KB == 1MB 55 1024MB == 1GB 56 1024GB == 1TB 57 ''' 58 # 1, 不同密码本之间不能互相识别。报错,乱码。 59 # 2, 数据的存储或者网络传输不能用unicode的密码本进行编码。 60 # 61 # python3x 环境: 62 # str类型内部编码方式为Unicode。 63 # 所以:str类数据不能直接存储硬盘,或者网络传输。 64 # 65 # str: 操作方法 66 # bytes: 拥有和str相同的操作方式,并且编码为非Unicode 67 # 68 # 英文: 69 # str: 70 # 表现形式:'alex' 71 # 内部编码:unicode 72 # 73 # bytes: 74 # 表现形式:b'alex' 75 # 内部编码:非unicode 76 # 77 # 中: 78 # str: 79 # 表现形式:'alex' 80 # 内部编码:unicode 81 # 82 # bytes: 83 # 表现形式:b'\xe4\xb8\xad\xe5\x9b\xbd' 84 # 内部编码:非unicode 85 86 # 87 # 英文 88 # str1 = 'barry' 89 # print(str1.upper()) 90 # bytes 91 # b1 = b'barry' 92 # print(b1.upper()) 93 # 94 # 中文 95 # s1 = '中国' 96 # b1 = s1.encode('utf-8') 97 # print(b1) 98 99 # 转换; 100 # str ---->bytes 101 # unicode ---> utf-8 102 # s1 = '中国' 103 # b1 = s1.encode('utf-8') # 编码 104 # print(b1) 105 # # utf-8 ----> unicode 106 # s2 = b1.decode('utf-8') # 解码 107 # print(s2) 108 109 # s1 = '中国' 110 # b1 = s1.encode('gbk') # 编码 111 # print(b1) 112 # # utf-8 ----> unicode 113 # s2 = b1.decode('gbk') # 解码 114 # print(s2) 115 # 116 # # gbk ---> utf-8 117 # b1 = b'\xd6\xd0\xb9\xfa' 118 # s1 = b1.decode('gbk') # unicode 119 # b2 = s1.encode('utf-8') 120 # print(b2)
06、数据类型转换
1 #!/usr/bin/env python3 2 #author:Alnk(李成果) 3 ''' 4 bool <---> int 5 str <---> int 6 s1 = '100' 全部由数字组成的str ---> int 7 int(s1) 8 str(100) 9 str <---> bool 非空即True '' 空即False 10 11 ''' 12 print(int(True)) 13 print(int(False))
07、字符串 str
1 #!/usr/bin/env python3 2 #author:Alnk(李成果) 3 ''' 4 字符串常用知识点 5 ''' 6 # 索引 7 #s1 = 'python周末2期' 8 # s2 = s1[0] 9 # print(s2,type(s2)) 10 # s3 = s1[2] 11 # print(s3) 12 # print(s1[-1]) 13 14 # 切片:顾首不顾尾 15 # s4 = s1[0:6] 16 # print(s4) 17 # s8 = s1[:6] 18 # print(s8) 19 # s5 = s1[2:6] 20 # s6 = s1[:] 21 # print(s6) 22 23 # 切片+步长 [起始索引: 结尾索引: 步长] 24 # s7 = s1[:5:2] 25 # print(s7) 26 27 # 反着取值(反向步长) 28 # print(s1[-1:-4:-1]) 29 # 30 # print(s1[-3::1]) 31 # print(s1[-3::-1]) 32 33 34 # 常用操作方法 35 # 对字符串进行的任何操作都会形成一个新字符串,与原字符串无关。 36 37 # s1 = 'aLEx' 38 # #upper 全大写 39 # #lower 全大写 40 # s2 = s1.lower() 41 # print(s2) 42 # s3 = s1.upper() 43 # print(s3) 44 # 例子 45 # username = input('请输入用户名') 46 # password = input('请输入密码') 47 # code = 'afREd'.upper() 48 # your_code = input('请输入验证码:').upper() 49 # if code == your_code: 50 # if username == 'barry' and password == '123': 51 # print('登录成功') 52 # else: 53 # print('验证码错误') 54 55 56 # strip 57 # 默认(指定)去除字符串两边的换行符,制表符,空格。 58 # lstrip rstrip 59 # s1 = ' \talex\n' 60 # print(s1) 61 # print(s1.strip()) 62 # s2 = 'eareelexqw' 63 # print(s2.strip('qwer')) 64 # s3 = ' alex ' 65 # print(s3.lstrip()) 66 # print(s3.rstrip()) 67 # 例子: 68 # username = input('请输入用户名').strip() 69 # password = input('请输入密码').strip() 70 # if username == 'barry' and password == '123': 71 # print('登录成功') 72 73 74 # s1 = '周末2期python期' 75 # find 通过元素找索引,找到用第一个则返回,找不到返回-1 76 # index 通过元素找索引,找到用第一个则返回,找不到则报错 77 # i = s1.find('w') 78 # print(i) 79 # i = s1.find('期',4,) 80 # print(i) 81 # i = s1.index('w') 82 # print(i) 83 84 85 # s1 = '太白barry' 86 # # startswith 判断以...为开始 87 # # endswith 判断以...为结尾 88 # print(s1.startswith("太")) 89 # print(s1.startswith("b",2,5)) 90 # print(s1.startswith("bb",2,5)) 91 # print(s1.startswith("ba",2,5)) 92 # print(s1.endswith("ba",2,5)) 93 # print(s1.endswith('y')) 94 95 96 # # split 默认(可指定分隔符)以空格为分割,返回一个列表。 97 # # str ----> list 98 # s1 = 'alex wusir 太白 日天' 99 # s11 = ':alex:wusir:太白:日天' 100 # s12 = 'alex:wusir:太白:日天' 101 # l1 = s1.split() 102 # print(l1) 103 # l2 = s11.split(':') 104 # # 指定分隔次数 105 # l3 = s12.split(':', 1) 106 # print(l3) 107 # print(l2) 108 109 110 # join 可以操作任何数据类型(由多个对象组成即可),并不止字符串 111 # s1 = 'alex' 112 # s2 = '_'.join(s1) 113 # print(s2) 114 # s2 = '*'.join(s1) 115 # print(s2) 116 # #前提条件:此列表必须全部是有字符串元素组成 117 # l1 = ['alex', 'wusir', '太白', '日天'] 118 # s2 = ' '.join(l1) 119 # print(s2) 120 121 122 # s1 = 'python深圳分校 深圳是一个很美丽的城市,我爱深圳' 123 # #replace 默认全部替换 也可以设置替换次数 124 # s2 = s1.replace('深圳', '北京') 125 # print(s2) 126 # s2 = s1.replace('深圳', '北京', 1) 127 # print(s2) 128 129 130 # s1 = 'barryafdfdafdaaa' 131 # # count 计算某个元素出现的次数 132 # i = s1.count('a') 133 # print(i) 134 135 136 # is 系列 137 # name = 'taibai123' 138 # print(name.isalnum()) #字符串由字母或数字组成 139 # print(name.isalpha()) #字符串只由字母组成 140 # print(name.isdigit()) #字符串只由数字组成 141 142 143 # len 内置函数,统计字符串长度 144 # s1 = 'fjdsklfsjafldsfjskladfjsladfjldksa' 145 # print(len(s1))
08、for 循环
1 #!/usr/bin/env python3 2 #author:Alnk(李成果) 3 4 # for 循环 5 s1 = 'python2期' 6 # while 7 # print(s1[0]) 8 # print(s1[1]) 9 # print(s1[2]) 10 11 # count = 0 12 # while count < len(s1): 13 # print(s1[count]) 14 # count += 1 15 16 # for 变量 in iterable: 17 # pass 18 # for i in s1: 19 # print(i,type(i)) 20 # for i in s1: 21 # print(i + 'sb')
09、列表 list
1 #!/usr/bin/env python3 2 #author:Alnk(李成果) 3 ''' 4 列表:list 5 容器类的数据类型:基础数据类型之一 list 6 列表可以存储大量的数据,列表是有序的 7 列表有索引,切片,切片(步长) 8 9 ''' 10 # 索引,切片 11 # l1 = [100, 'alex', True, [1,2,3]] 12 # print(l1[0],type(l1[0])) 13 # print(l1[-2]) 14 # #顾首不顾尾 15 # print(l1[:3]) 16 17 18 # 列表的常用操作方法. 19 # 增删改查其他操作 20 l1 = ['alex', 'wusir', '太白金星','日天', '女神'] 21 # 增 22 # append 追加 23 # l1.append(666) 24 # print(ret) 25 # insert插入 26 # l1.insert(1,'日天') 27 # print(l1) 28 # extend 迭代着追加,增加多个(拆解成最小的元素追加到列表最后) 29 # l1.extend('abc') 30 # l1.extend([1,2,3]) 31 # print(l1) 32 33 # 删 34 # pop 按照索引删除 有返回值,如果不加索引,默认删除最后一个元素 35 # ret = l1.pop(-1) 36 # print(ret) 37 # remove 按照元素删除 38 # l1.remove('alex') 39 # print(l1) 40 # clear清空列表 41 # l1.clear() 42 # print(l1) 43 # del从内存中删除整个列表,或者按照索引删除单个元素,多个元素 44 # del l1[0] # 按照索引删除 45 # del l1[:2] # 按照切片删除 46 # del l1 47 # print(l1) 48 49 # 改 50 # 按照索引改值 51 # l1[1] = 'sb' 52 # 按照切片改值 53 # l1[:3] = 'dfsdafsdfsdaf' 54 # print(l1) 55 56 # 查:可以索引切片 for循环 57 # for i in l1: 58 # print(i) 59 60 # 其他操作方法: 61 # print(len(l1)) # 元素个数 62 # count 次数 63 # ret = l1.count('太白金星') 64 # print(ret) 65 66 # index 通过元素找索引,找不到报错 67 # ret = l1.index('日天1') 68 # print(ret) 69 70 #l2 = [5, 6, 4, 0, 9, 1, 7, 8] 71 # l2.sort() # 从小到大 72 # l2.sort(reverse=True) # 从大到小 73 74 # l2.reverse() # 翻转 75 # print(l2) 76 77 78 # 列表的嵌套 79 # l1 = [1, 2, 'taibai', [1, 'alex', 3, ]] 80 # ''' 81 # 1, 将l1中的'taibai'变成大写并放回原处。 82 # 2,给小列表[1,'alex',3,]追加一个元素,'老男孩教育'。 83 # 3,将列表中的'alex'通过字符串拼接的方式在列表中变成'alexsb'。 84 # ''' 85 # # print(l1[3][1]) 86 # # new = l1[3][1] + 'sb' 87 # l1[3][1] = l1[3][1] + 'sb' 88 # print(l1) 89 90 91 92 # range 可以视为一个可控的数字范围的列表,多与for循环结合。 93 # for i in range(1,10): # [1,2,3,4,...9] 94 # print(i) 95 # for i in range(20): # [0,1,2,3,4,...19] 96 # print(i) 97 98 # for i in range(1,10,2): # [1,2,3,4,...9] 99 # print(i) 100 # print(range(10)) 101 102 #倒着取值。顾首不顾尾 103 # for i in range(10, 1, -1): 104 # print(i) 105 106 # l1 = ['alex', 'wusir', '太白金星','日天', '女神'] 107 # range 打印列表的索引 108 # for index in range(len(l1)): 109 # print(index)
10、元组 tuple
1 #!/usr/bin/env python3 2 #author:Alnk(李成果) 3 4 # 元组: 基础数据类型之一:tuple 5 # 存储数据,重要的数据。 6 7 # tu1 = (100, True, [1,2,3]) 8 # 元组没有增删改,可以查询 9 # for i in tu1: 10 # print(i) 11 12 # 元组也有索引切片。 13 # print(tu1[0]) 14 15 # tu1 = (100, True, [1,2,3]) 16 # tu1[-1].append(666) 17 # print(tu1)
11、 字典 dict
1 #!/usr/bin/env python3 2 #author:Alnk(李成果) 3 ''' 4 列表的不足: 5 1,列表的数据量越大,查询速度越慢。 6 2,列表存储的数据没有什么关联性。 7 8 基础数据类型之dict 9 dic = {'name': 'barry'} 10 字典是以键值对的形式存储的。 11 数据类型的划分: 12 可变的(不可哈希)数据类型:list dict set 13 不可变(可哈希)的数据类型:tuple str int bool 14 15 字典的键key:必须是不可变得数据类型:int str 16 字典的值:任意数据类型 变量,对象。 17 字典可以存储大量的数据,而且字典的查询速度非常快。 18 字典的key 唯一的不重复的。 19 20 字典 3.5之前是无序的。 21 字典在3.5之后是有序的 初始化时的顺序。 22 23 构建数据类型:大量的关系型数据时,要想到字典。 24 ''' 25 # dic = {'name': 'alex', 'age': 46, 'sex': 'laddyboy'} 26 27 # 增删改查其他方法 28 # 增: 29 # 有则修改,无则增加 30 # dic['high'] = 175 31 # print(dic) 32 # dic['name'] = '日天' 33 # print(dic) 34 # 有则不变,无则增加 35 # dic.setdefault('weight',200) 36 # print(dic) 37 # dic.setdefault('age',73) 38 # print(dic) 39 40 # 删除 41 # pop 按照key删除键值对,有返回值 42 # ret = dic.pop('name') 43 # print(ret) 44 # clear 清空字典 45 # dic.clear() 46 # print(dic) 47 # 48 #del 删除整个字典或者某个键值对 49 # del dic 50 # del dic['name'] 51 52 # 改 53 # dic['name'] = '日天' 54 # dic = {"name":"jin","age":18,"sex":"male"} 55 # dic2 = {"name":"alex","weight":75} 56 # dic2.update(dic) # 将dic的键值对覆盖添加到dic2中,dic不变。 57 # print(dic2) 58 # print(dic) 59 60 # 查 61 # print(dic['name']) 62 # print(dic['name1']) 63 # ret = dic.get('name') 64 # ret = dic.get('name1', '没有此键') 65 # print(ret) 66 # 67 # for i in dic: 68 # print(i,dic[i]) 69 70 # 其他方法: 71 # dic.keys() dic.values() dic.items() 72 # print(dic.keys(),type(dic.keys())) 73 # 74 # for key in dic.keys(): 75 # print(key,type(key)) 76 # 77 # for v in dic.values(): 78 # print(v) 79 80 81 # 分别赋值 82 # a, b = 1, 4 83 # print(a,b) 84 # a, b = (1,4) 85 # a, b = [[1,2,3],'alex'] 86 # print(a,b) 87 # print(dic.items()) # dict_items([('name', 'alex'), ('age', 46), ('sex', 'laddyboy')]) 88 # for k,v in dic.items(): 89 # print(k,v) 90 # print(list(dic.items())) 91 92 # 嵌套 93 # dic = { 94 # 'name_list': ['张三', '李四', 'BARRY'], 95 # 1:{'name':'taibai', 'age': 18} 96 # 'barry': {} 97 # } 98 # 1,给列表追加一个值:'王五' 99 # dic['name_list'].append('王五') 100 # print(dic) 101 # 2,将BARRY 变成全部小写 102 # print(dic['name_list'][-1].lower()) 103 # dic['name_list'][-1] = dic['name_list'][-1].lower() 104 # print(dic) 105 # 3,给{'name':'taibai', 'age': 18} 增加一个键值对 sex: 男。 106 # print(dic[1]) 107 # dic[1]['sex'] = '男' 108 # print(dic) 109 110 111 #
12 基础数据类型补充
1 #!/usr/bin/env python3 2 #author:Alnk(李成果) 3 4 # int str bool list tuple dict 5 # 数据类型的转换。 6 # str ————> list split 7 # list ————> str join 8 # # 9 # list tuple 10 # print(list((1,2,3,'alex'))) 11 # print(tuple([1, 2, 3, 'alex'])) 12 # dic = {"name": "jin", "age": 18, "sex": "male"} 13 # # 14 # # print(list(dic)) 15 16 # 补充 17 # tuple 18 # 元组中如果只有一个元素且没有逗号(那他不是元组),则与该元素数据类型相同。 19 # tu1 = (1) 20 # tu2 = ('alex') 21 # print(tu1,type(tu1)) 22 # print(tu2,type(tu2)) 23 # 24 # list 25 # l1 = [11, 22, 33, 44, 55] 26 # # 将列表中索引为奇数位的元素删除 27 # # 正常思路(错误示范): 28 # # for index in range(len(l1)): 29 # # if index % 2 == 1: 30 # # del l1[index] 31 # # print(l1) 32 # 33 # # 方法一: 34 # # del l1[1::2] 35 # # print(l1) 36 # 37 # # 方法二: 38 # # 倒叙删除 39 # for index in range(len(l1)-1,-1,-1): 40 # if index % 2 == 1: 41 # l1.pop(index) 42 # print(l1) 43 44 #方法三 45 # count = [] 46 # for index in range(len(l1)): 47 # if index % 2 == 1: 48 # count.append(index) 49 # 50 # for i in count: 51 # l1.pop(i) 52 # 53 # print(l1) 54 # 55 # 56 # 总结:对于列表来说,你在循环一个列表时,不要改变列表的大小,会影响你的最终结果。 57 58 # 字典: 59 # dic = {'k1': 'v1', 'k2': 'v2', 'k3': 'v3', 'name': '太白'} 60 # 将字典的键中含有k元素的所有键值对删除 61 #错误示范 62 # for key in dic: 63 # if 'k' in key: 64 # dic.pop(key) 65 # print(dic) 66 # 67 # 满足条件的key添加到一个新列表中,循环列表删除相应的键值对。 68 # l1 = [] 69 # for key in dic: 70 # if 'k' in key: 71 # l1.append(key) 72 # # print(l1) 73 # for i in l1: 74 # dic.pop(i) 75 # print(dic)