今日课程大纲: 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
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)