Python自动化开发课堂笔记【Day02】 - Python基础(数据类型详解)

ASCII、Unicode、GBK和UTF-8字符编码的区别联系

ASCII编码:用来表示英文字符,它使用1个字节表示,其中第一位规定为0,其他7位存储数据,一共可以表示128个字符。

Unicode编码:使用至少2个字节来表示字符,可以表示世界上所有的字符,是一个字符集。

UTF-8:是Unicode字符的实现方式之一(对Unicode的压缩),它使用1-4个字符表示一个符号,根据不同的符号而变化字节长度。

GBK/GB2312/GB18030:使用两个字节,表示汉字。GBK/GB2312表示简体中文,GB18030表示繁体中文。

各种进制的表示方式:

二进制 1 10 11 100 101 110 111 1000 1001 1010 - - - - -
八进制 1 2 3 4 5 6 7 010 011 012 - - - - -
十进制 1 2 3 4 5 6 7 8 9 10 - - - - -
十六进制 1 2 3 4 5 6 7 8 9 A B C D E F

 基本数据类型

1. 整型(int)

需要了解如何将十进制整型数据转化为其它进制的数据的方法

i. 统计将数字转化为二进制后所需要的位数

age = 8  # 二进制1000
print(age.bit_length())
#结果为4

 ii. 将数字转化为十六进制的表示方式

age = 15
v = age.to_bytes(10,byteorder='big')
print(v)  # b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0f' --> 15的十六进制表示为0f,big为指定从左侧补0,第一个参数10表示用是个字节表示
v = age.to_bytes(10,byteorder='little')
print(v)  # b'\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x00' --> little为指定从右侧补0

2. 布尔值(boolean)

布尔值为False的主要有以下几种情况

b = 0
b = ''
b = []
b = {}
b = ()
b = False

 其他值均可视为True,注意!!布尔值只有0和1,也就是True和False,如果有b=11,只能说它的布尔值表现形式为True,而不是说该值本身为真值,它需要经过布尔函数的处理才能表现出真值的形式

3. 字符串(string)

字符串拥有的方法非常之多,近乎涵盖对字符串的任何操作

str.upper() str.lower() str.splite() str.find() str.strip() str.capitalize() str.center()
str.startswith() str.endswith() str.format() str.replace() join() str.casefold() str.count()
  1 # name = 'alex' # str类的对象
  2 # 1. capitalize 字符串首字母大写
  3 # 自身不变,会生成一个新的值
  4 # v = name.capitalize() # 自动找到name关联的str类,执行其中的capitalize技能
  5 # print(name)
  6 # print(v)
  7 
  8 # 2. 将所有大小变小写,casefold牛逼,德语...
  9 # name = 'AleX'
 10 # v = name.casefold() # 跟牛逼,德语...
 11 # print(name)
 12 # print(v)
 13 
 14 # 3. 将所有大小变小写
 15 # name = 'AleX'
 16 # v = name.lower()
 17 # print(v)
 18 
 19 # 4. 文本居中
 20 # 参数1: 表示总长度
 21 # 参数2:空白处填充的字符(长度为1)
 22 # name = 'alex'
 23 # v = name.center(20)
 24 # print(v)
 25 # v = name.center(20,'行')
 26 # print(v)
 27 
 28 # 5. 表示传入之在字符串中出现的次数
 29 # 参数1: 要查找的值(子序列)
 30 # 参数2: 起始位置(索引)
 31 # 参数3: 结束位置(索引)
 32 # name = "alexasdfdsafsdfasdfaaaaaaaa"
 33 # v = name.count('a')
 34 # print(v)
 35 # v = name.count('df')
 36 # print(v)
 37 
 38 # v = name.count('df',12)
 39 # print(v)
 40 # v = name.count('df',0,15)
 41 # print(v)
 42 
 43 # 6. 是否以xx结尾
 44 # name = 'alex'
 45 # v1 = name.endswith('ex')
 46 # print(v1)
 47 
 48 # 7. 是否以xx开头
 49 # name = 'alex'
 50 # v2 = name.startswith('al')
 51 # print(v2)
 52 
 53 # 8. encode欠
 54 
 55 # 9. 找到制表符\t,进行替换(包含前面的值)
 56 # PS: \n
 57 # name = "al\te\tx\nalex\tuu\tkkk"
 58 # v = name.expandtabs(20)
 59 # print(v)
 60 
 61 # 10. 找到指定子序列的索引位置:不存在返回-1
 62 # name = 'alex'
 63 # v = name.find('o')
 64 # print(v)
 65 # v = name.index('o')
 66 # print(v)
 67 
 68 # 11.字符串格式化
 69 
 70 # tpl = "我是:%s;年龄:%s;性别:%s"
 71 
 72 # tpl = "我是:{0};年龄:{1};性别:{2}"
 73 # v = tpl.format("李杰",19,'都行')
 74 # print(v)
 75 
 76 # tpl = "我是:{name};年龄:{age};性别:{gender}"
 77 # v = tpl.format(name='李杰',age=19,gender='随意')
 78 # print(v)
 79 
 80 # tpl = "我是:{name};年龄:{age};性别:{gender}"
 81 # v = tpl.format_map({'name':"李杰",'age':19,'gender':'中'})
 82 # print(v)
 83 
 84 
 85 # 12. 是否是数字、汉子.
 86 # name  = 'alex8汉子'
 87 # v = name.isalnum() # 字,数字
 88 # print(v) # True
 89 # v2 = name.isalpha()#
 90 # print(v2)# False
 91 
 92 # 13. 判断是否是数字
 93 # num = '②'
 94 # v1 = num.isdecimal() # '123'
 95 # v2 = num.isdigit()   # '123','②'
 96 # v3 = num.isnumeric() # '123','二','②'
 97 # print(v1,v2,v3)
 98 
 99 
100 # 14. 是否是表示符
101 # n = 'name'
102 # v = n.isidentifier()
103 # print(v)
104 
105 # 15.是否全部是小写
106 # name = "ALEX"
107 # v = name.islower()
108 # print(v)
109 # v = name.isupper()
110 # print(v)
111 
112 # 16,.全部变大写,
113 # name = 'alex'
114 # v = name.upper()  # lower()
115 # print(v)
116 
117 # 17.是否包含隐含的xx
118 # name = "钓鱼要钓刀鱼,\n刀鱼要到岛上钓"
119 # v = name.isprintable()
120 # print(v)
121 
122 
123 # 18.是否全部是空格
124 # name = '    '
125 # v = name.isspace()
126 # print(v)
127 
128 
129 
130 # 19.元素拼接(元素字符串) *****
131 # name = 'alex'
132 
133 # v = "_".join(name) # 内部循环每个元素
134 # print(v)
135 
136 # name_list = ['海峰','杠娘','李杰','李泉']
137 # v = "搞".join(name_list)
138 # print(v)
139 
140 # 20. 左右填充
141 # center,rjust,ljust
142 # name = 'alex'
143 # v = name.rjust(20,'*')
144 # print(v)
145 
146 
147 # 21. 对应关系 + 翻译
148 # m = str.maketrans('aeiou','12345') # 对应关系
149 #
150 # name = "akpsojfasdufasdlkfj8ausdfakjsdfl;kjer09asdf"
151 # v = name.translate(m)
152 # print(v)
153 
154 # 22. 分割,保留分割的元素
155 # content = "李泉SB刘康SB刘一"
156 # v = content.partition('SB') # partition
157 # print(v)
158 
159 # 23. 替换
160 # content = "李泉SB刘康SB刘浩SB刘一"
161 # v = content.replace('SB','Love')
162 # print(v)
163 # v = content.replace('SB','Love',1)
164 # print(v)
165 
166 # 24,移除空白,\n,\t,自定义
167 # name = 'alex\t'
168 # v = name.strip() # 空白,\n,\t
169 # print(v)
170 
171 # 25. 大小写转换
172 # name = "Alex"
173 # v = name.swapcase()
174 # print(v)
175 
176 # 26. 填充0
177 # name = "alex"
178 # v = name.zfill(20)
179 # print(v)
180 
181 # v1 = 'alex'
182 # v2 = 'eric'
183 #
184 # v = v1 + v2 # 执行v1的__add__功能
185 # print(v)
186 
187 
188 ###### 字符串功能总结:
189 # name = 'alex'
190 # name.upper()
191 # name.lower()
192 # name.split()
193 # name.find()
194 # name.strip()
195 # name.startswith()
196 # name.format()
197 # name.replace()
198 # "alex".join(["aa",'bb'])
199 
200 
201 ###### 额外功能:
202 # name = "alex"
203 # name[0]
204 # name[0:3]
205 # name[0:3:2]
206 # len(name)
207 # for循环,每个元素是字符
208 
209 
210 # 练习题
211 # name = "aleX"
212 # a
213 # v = name.strip()
214 # print(v)
215 # b
216 # v = name.startswith('al')
217 # print(v)
218 # v = name.replace('l','p')
219 # print(v)
220 
221 # v = name.split('l')
222 # print(v) # 列表
223 
224 # **** 转换成字节 ****
225 # name = "李杰"
226 # v1 = name.encode(encoding='utf-8') # 字节类型
227 # print(v1)
228 # v2 = name.encode(encoding='gbk') # 字节类型
229 # print(v2)
View Code

 4. 列表(list)

lst.append() lst.clear() lst.copy() lst.count() lst.extend()
lst.index() lst.pop() lst.remove() lst.reverse() lst.sort()
  1 # ## int=xx; str='xxx'  list='xx'
  2 # user_list = ['李泉','刘一','刘康','豆豆','小龙'] # 可变类型
  3 # PS:
  4     # name = 'alex'
  5 # 执行功能;
  6 # 1.追加
  7 # user_list = ['李泉','刘一','刘康','豆豆','小龙'] # 可变类型
  8 # user_list.append('刘铭')
  9 # print(user_list)
 10 # 2. 清空
 11 # user_list = ['李泉','刘一','刘康','豆豆','小龙'] # 可变类型
 12 # user_list.clear()
 13 # print(user_list)
 14 
 15 # 3. 拷贝(浅拷贝)
 16 # user_list = ['李泉','刘一','刘康','豆豆','小龙'] # 可变类型
 17 # v = user_list.copy()
 18 # print(v)
 19 # print(user_list)
 20 
 21 # 4. 计数
 22 # user_list = ['李泉','刘一','李泉','刘康','豆豆','小龙'] # 可变类型
 23 # v = user_list.count('李泉')
 24 # print(v)
 25 
 26 # 5. 扩展原列表
 27 # user_list = ['李泉','刘一','李泉','刘康','豆豆','小龙'] # 可变类型
 28 # user_list.extend(['郭少龙','郭少霞'])
 29 # print(user_list)
 30 
 31 # 6. 查找元素索引,没有报错
 32 # user_list = ['李泉','刘一','李泉','刘康','豆豆','小龙'] # 可变类型
 33 # v = user_list.index('李海')
 34 # print(v)
 35 
 36 # 7. 删除并且获取元素 - 索引
 37 # user_list = ['李泉','刘一','李泉','刘康','豆豆','小龙'] # 可变类型
 38 # v = user_list.pop(1)
 39 # print(v)
 40 # print(user_list)
 41 
 42 # 8. 删除 - 值
 43 # user_list = ['李泉','刘一','李泉','刘康','豆豆','小龙'] # 可变类型
 44 # user_list.remove('刘一')
 45 # print(user_list)
 46 
 47 # 9. 翻转
 48 # user_list = ['李泉','刘一','李泉','刘康','豆豆','小龙'] # 可变类型
 49 # user_list.reverse()
 50 # print(user_list)
 51 
 52 # 10. 排序: 欠参数
 53 # nums = [11,22,3,3,9,88]
 54 # print(nums)
 55 # 排序,从小到大
 56 # nums.sort()
 57 # print(nums)
 58 # 从大到小
 59 # nums.sort(reverse=True)
 60 # print(nums)
 61 
 62 ######  额外:
 63 # user_list = ['李泉','刘一','李泉','刘康','豆豆','小龙']
 64 # user_list[0]
 65 # user_list[1:5:2]
 66 # del user_list[3]
 67 # for i in user_list:
 68 #     print(i)
 69 # user_list[1] = '姜日天'
 70 # user_list = ['李泉','刘一','李泉','刘康','豆豆',['日天','日地','泰迪'],'小龙']
 71 
 72 
 73 # li = ['eric','alex','tony']
 74 #
 75 # v = len(li)
 76 # print(v)
 77 #
 78 # li.append('seven')
 79 # print(li)
 80 #
 81 # li.insert(0,'Tony')
 82 # print(li)
 83 #
 84 # li[1] = 'Kelly'
 85 #
 86 # li.remove('eric')
 87 # print(list)
 88 #
 89 # v = li.pop(1)
 90 # print(v)
 91 # print(li)
 92 #
 93 # del li[2]
 94 
 95 
 96 # del li[0:2] # 0 =<x < 2
 97 # print(li)
 98 
 99 # li.reverse()
100 # print(li)
101 
102 # for i in li:
103 #     print(i)
View Code

 5. 元组(tuple)

元组作为不可变类型,自身具有的方法比较少,应用的范围也有限制

 1 # user_tuple = ('alex','eric','seven','alex')
 2 # 1. 获取个数
 3 # v = user_tuple.count('alex')
 4 # print(v)
 5 # 2.获取值的第一个索引位置
 6 # v = user_tuple.index('alex')
 7 # print(v)
 8 
 9 ####### 额外:
10 # user_tuple = ('alex','eric','seven','alex')
11 # for i in user_tuple:
12 #     print(i)
13 
14 # v = user_tuple[0]
15 
16 # v = user_tuple[0:2]
17 # print(v)
18 
19 # user_tuple = ('alex','eric','seven',['陈涛','刘浩','赵芬芬'],'alex')
20 # user_tuple[0] = 123   x
21 # user_tuple[3] = [11,22,33] x
22 # user_tuple[3][1] = '刘一'
23 # print(user_tuple)
24 
25 # li = ['陈涛','刘浩',('alex','eric','seven'),'赵芬芬']
26 # ****** 元组最后,加逗号 ******
27 # li = ('alex',)
28 # print(li)

6. 字典(dict)

dic.clear() dic.copy() dic.get() dic.pop() dic.popitem()
dic.setdefault() dic.update() dic.append()    
 1 # 1. 清空、
 2 # dic = {'k1':'v1','k2':'v2'}
 3 # dic.clear()
 4 # print(dic)
 5 
 6 # 2. 浅拷贝
 7 # dic = {'k1':'v1','k2':'v2'}
 8 # v = dic.copy()
 9 # print(v)
10 
11 # 3. 根据key获取指定的value;不存在不报错
12 # dic = {'k1':'v1','k2':'v2'}
13 # v = dic.get('k1111',1111)
14 # print(v)
15 # v = dic['k1111']
16 # print(v)
17 
18 # 4. 删除并获取对应的value值
19 # dic = {'k1':'v1','k2':'v2'}
20 # v = dic.pop('k1')
21 # print(dic)
22 # print(v)
23 
24 # 5. 随机删除键值对,并获取到删除的键值
25 # dic = {'k1':'v1','k2':'v2'}
26 # v = dic.popitem()
27 # print(dic)
28 # print(v)
29 
30 # k,v = dic.popitem() # ('k2', 'v2')
31 # print(dic)
32 # print(k,v)
33 
34 # v = dic.popitem() # ('k2', 'v2')
35 # print(dic)
36 # print(v[0],v[1])
37 
38 # 6. 增加,如果存在则不做操作
39 # dic = {'k1':'v1','k2':'v2'}
40 # dic.setdefault('k3','v3')
41 # print(dic)
42 # dic.setdefault('k1','1111111')
43 # print(dic)
44 # 7. 批量增加或修改
45 # dic = {'k1':'v1','k2':'v2'}
46 # dic.update({'k3':'v3','k1':'v24'})
47 # print(dic)
48 
49 
50 # dic = dict.fromkeys(['k1','k2','k3'],123)
51 # print(dic)
52 # dic = dict.fromkeys(['k1','k2','k3'],123)
53 # dic['k1'] = 'asdfjasldkf'
54 # print(dic)
55 
56 # dic = dict.fromkeys(['k1','k2','k3'],[1,])
57 # {
58 #    k1: 123123213, # [1,2]
59 #    k2: 123123213, # [1,]
60 #    k3: 123123213, # [1,]
61 # }
62 # dic['k1'].append(222)
63 # print(dic)
64 # ########## 额外:
65 # - 字典可以嵌套
66 # - 字典key: 必须是不可变类型
67 # dic = {
68 #     'k1': 'v1',
69 #     'k2': [1,2,3,],
70 #     (1,2): 'lllll',
71 #     1: 'fffffffff',
72 #     111: 'asdf',
73 # }
74 # print(dic)
75 # key:
76 #     - 不可变
77 #     - True,1
78 
79 # dic = {'k1':'v1'}
80 # del dic['k1']
View Code

 

 7. 集合(set)

set.difference() set.symmetric_difference() set.intersection() set.union() set.discard()
set.update()        
 1 # s1 = {"alex",'eric','tony','李泉','李泉11'}
 2 # s2 = {"alex",'eric','tony','刘一'}
 3 
 4 # 1.s1中存在,s2中不存在
 5 # v = s1.difference(s2)
 6 # print(v)
 7 # #### s1中存在,s2中不存在,然后对s1清空,然后在重新复制
 8 # s1.difference_update(s2)
 9 # print(s1)
10 
11 # 2.s2中存在,s1中不存在
12 # v = s2.difference(s1)
13 # print(v)
14 
15 # 3.s2中存在,s1中不存在
16 # s1中存在,s2中不存在
17 # v = s1.symmetric_difference(s2)
18 # print(v)
19 # 4. 交集
20 # v = s1.intersection(s2)
21 # print(v)
22 # 5. 并集
23 # v = s1.union(s2)
24 # print(v)
25 
26 # 6. 移除
27 # s1 = {"alex",'eric','tony','李泉','李泉11'}
28 # s1.discard('alex')
29 # print(s1)
30 
31 # s1 = {"alex",'eric','tony','李泉','李泉11'}
32 # s1.update({'alex','123123','fff'})
33 # print(s1)
34 # ##### 额外:
35 
36 # s1 = {"alex",'eric','tony','李泉','李泉11'}
37 # for i in s1:
38 #     print(i)
39 
40 # s1 = {"alex",'eric','tony','李泉','李泉11',(11,22,33)}
41 # for i in s1:
42 #     print(i)

关于range和enumerate的使用 

 1 # 1. 请输出1-10
 2 # 2.7: 立即生成所有数字
 3 # range(1,11) # 生成 1,23,,4,56.10
 4 
 5 # 3.x: 不会立即生成,只有循环迭代时,才一个一个生成
 6 # for i in range(1,11): #
 7 #     print(i)
 8 
 9 # for i in range(1,11,2): #
10 #     print(i)
11 
12 # for i in range(10,0,-1): #
13 #     print(i)
14 
15 # 1. 3.x 不会立生成,迭代之后才一个一个创建;
16 """
17     - 2.7:
18         range()
19         xrange()  不会立生成,迭代之后才一个一个创建;
20     - 3.x
21         range()  不会立生成,迭代之后才一个一个创建;
22 """
23 # 2. range: 三个参数
24 #
25 # li = ['eric','alex','tony']
26 # # range,len,li循环
27 # for i in range(0,len(li)):
28 #     ele = li[i]
29 #     print(ele)
30 
31 
32 # li = ['eric','alex','tony']
33 # for i in li:
34 #     print(i)
35 
36 # for i in range(0,len(li)):
37 #     print(i+1,li[i])
38 
39 
40 # enumerate额外生成一列有序的数字
41 # li = ['eric','alex','tony']
42 # for i,ele in enumerate(li,1):
43 #     print(i,ele)
44 #
45 # v = input('请输入商品序号:')
46 # v = int(v)
47 # item = li[v-1]
48 # print(item)

 

posted @ 2017-05-13 09:39  秋名山藤原豆腐哥  阅读(212)  评论(0编辑  收藏  举报