1 一、回顾内容
2 1、顶部
3 解释器
4 编码(2.7默认ascii,3.6默认utf-8)
5 2、print("hello")2.7
6 print "hello" 3.6
7 3、编码之间的关系
8 ascii 万国码 (最少两个字节unicode) gbk utf-8
9 1个字节 最少两个字节 2个 中文3个字节
10 4、命名
11 首字母不是数字
12 变量名不能是关键字
13 数字字母下划线
14 变量存在的意义-->方便调用
15 5、条件
16 if条件:
17 pass
18 elif 条件:
19 pass
20 else:
21 pass
22 注意缩进,冒号
23 6、while
24 while 条件:
25 pass 每次条件被判断成立无限执行
26 continue 中止此次循环,从新开始循环
27 break 终止所有循环
28 7、运算符
29 *=
30 +=
31 -=
32 /=
33 %= 取余
34 一个等号是赋值,两个等号才是等于
35 num = 13
36 zq = num % 2 #余数
37 if zq == 0:
38 # 偶数
39 else:
40 # 奇数
41
42 in 判断元素在不在列表里面
43 num = “zq”
44 li = ["zq","zw"]
45 if num in li:
46 print('zai')
47 else:
48 print('buzai')
49 再加一个判断是否以z开头的
50 if num in li and num.startwith('z')
51 # and 可以在加一个条件
52
53 8、基本的数据类型
54 int,整形
55 n = 123
56 n = int(123) # int类的 ——init——
57 s = "123"
58 m = int(s) #字符串类型转换整形
59 整形有个长度限制,32位电脑正负2的31次方....(python2.7)
60 python3.6里面没有long了 不管多长的数字都是int。2.7里面超过范围会转换成长整形
61
62 s = "132sdfg" #字符串里面只包含数字时才能转换
63 m = int(s)
64
65 str,字符串
66 s = "zq"
67 s = str("zq")
68
69 a = 123
70 m = str(a) 把一个数字转换成字符串
71
72 =======
73 bytes =》 字节类型
74 str =》 字符串
75 目的:字节转换成字符串
76 b = 字节类型的对象
77 # m = bytes(b)
78 m = str(b,encoding=“utf-8”)
79
80 首字母变大写 去空格 变大小写 替换 是否为数字、字母 开头结尾 查找
81 个数 格式化 编码解码 居中左飘右飘 连接
82 li = ["zq","ss"]
83 l1 = "_".join(li)
84 l1对应的值 zq_ss
85
86 list,列表
87 i = [11,22,33]
88 i = list(11,22,33) 这是错误的
89 i = list([11,22,33]) list 是个类名 后面小括号里面的元素只能有一个但是里面必须用中括号加序列
90 =====
91 t = (11,22,33)
92 i = list([t]) 这是错误的 出来的结果是这样的[(11,22,33)]
93 i = list(t) 这是正确的
94
95 t = [11,22,33]
96 t = [11,22,33,]这两种是样的
97
98 列表的公共功能:
99 索引
100 切片
101 for
102 长度
103 enumerate
104 删除 del li[0]
105 del li[0:2]
106 特有的功能:
107 翻转
108 排序
109 追加
110 插入
111 索引位置
112 删除
113 pop
114 扩展
115 清楚
116 tuple:
117 t = (11,22,33,44)
118 t = tuple(可迭代的对象)
119
120 li = (11,22,33,44)
121 l1 = tuple(li)
122
123 公共功能:
124 索引
125 切片
126 for
127 长度
128 enumerate
129 in
130 特有的功能:
131 个数
132 索引位置
133
134 特性:不能修改....
135 dict:
136 d = {"k":123,"k2":65}
137 d2 = {
138 "k":123,
139 "k2":156
140 }
141
142 li = [1,2,3,4]
143 字典: key:10 递加
144 value: 列表的元素
145 dic = []
146 for i,j in enumerate(li,10):
147 new_dict = dict(enumerate(li,10))
148 公共功能:
149 索引
150 增加 dic[key]=vlue
151 删除
152 for
153 长度
154 in
155 特有的功能:
156 项 键 值 get haskey--》is
157 update
158 fromkey
159 字符串,字节
160 str
161 bytes
162
163 a = "张强" gbk编码的字节
164 b = bytes(a,encoding="gbk") type(b)=> bytes
165 c = str(b,encoding="gbk")
166
167 int优化机制
168 a = 123
169 b = 123
170 id(a)
171 相同,因为有优化,-5~257
172
173 a = 123
174 b = a
175
176 二、作业
177 1、元素分类
178 有如下值集合【11,22,33,44,55,66,77,88,99,90】,将所有大于66的值保存至字典的第一个key中,将小于66的值保存至第二个key的值中。
179 既:{k1:大于66的所有值,k2:小于66的所有值}
180 第一种方法
181 # li = [11,22,33,44,55,66,77,88,99,90]
182 #字典
183 # {
184 # "k1":[11,22,33,44,55],
185 # "k2":[66,77,88,99]
186 # }
187 #code
188 li = [11,22,33,44,55,66,77,88,99,90]
189 l1 = []
190 l2 = []
191 for i in li:
192 if i <= 66:
193 l1.append(i)
194 else:
195 l2.append(i)
196 temp = {"k1":l1, "k2":l2}
197 print(temp)
198 第二种方法
199 dic = {
200 "k1":[],
201 "k2":[]
202 }
203 li = [11,22,33,44,55,66,77,88,99,90]
204 for i in li:
205 if i <= 66:
206 dic['k1'].append(i)
207 else:
208 dic['k2'].append(i)
209 print(dic)
210
211 2、查找
212 查找列表中元素,移动空格,并查找以a或A开头并且以c结尾的所有元素。
213 h=["alec","aric","Alex","Tony","rain"]
214 tu=["alec","aric","Alex","Tony","rain"]
215 dic=['k1':"alec",'k2':"aric",'k3':"Alex",'k4':"Tony",'k5':"rain"]
216
217 li = ["aleb","aric"," Alex","Tony","rain"]
218 for i in li:
219 new_i = i.strip()
220 if new_i.startswith('a') or new_i.startswith('A') and new_i.endswith('c'):
221 print(i)
222 换成元组序列也一样
223 li = ("aleb","aric"," Alex","Tony","rain")
224 for i in li:
225 new_i = i.strip()
226 if new_i.startswith('a') or new_i.startswith('A') and new_i.endswith('c'):
227 print(i)
228
229 dic={'k1':"alec",'k2':"aric",'k3':"Alex",'k4':"Tony",'k5':"rain"}
230 for i in dic.values():
231 new_i = i.strip()
232 if new_i.startswith('a') or new_i.startswith('A') and new_i.endswith('c'):
233 print(i)
234 3、输出商品列表,用户输入序号,显示用户选中的商品
235 商品li=["手机","电脑","鼠标","游艇"]
236 li = ["手机","电脑","鼠标","游艇"]
237 # for i,j in enumerate(li):
238 # print(i,j)
239 for i,j in enumerate(li):
240 print(i+1,j)
241 num = input('num:')
242 num = int(num)
243 len_i = len(li)
244 # if num >0 and num < 5:
245 if num > 0 and num <= len_i:
246 good = li[num-1]
247 print(good)
248 else:
249 print("商品不存在")
250
251 5、用户交互,显示省市县三级联动的选择
252 dic = {
253 "河北":{
254 "石家庄": ["上单","打野","下路"],
255 "邯郸" : ["地方","对方","好人"]
256 },
257 "河南":{
258 "郑州": ["上上","下下","左左"],
259 "开封" : ["悠悠","多少","东方"]
260 },
261 "山西":{
262 "太原": ["一一","二二","三三"],
263 "长治" : ["四四","呜呜","溜溜"]
264 }
265 }
266
267 #循环输出所有的省
268 for x in dic:
269 print(x)
270 i1 = input("请输入省份:")
271 a = dic[i1]
272 #循环输出所有的市
273 for j in a:
274 print(j)
275 i2 = input("请输入省份:")
276 b = dic[i1][i2]
277 #print(b)#列表类型
278 for z in b:
279 print(z)
280 4、购物车
281 功能要求:
282 a.要求用户输入总资产,例如:2000
283 b.显示商品列表,让用户根据序号选择商品,加入
284
285 购物车
286 c.购买,如果商品总额大于总资产,提示账户余额
287
288 不足,否则,购买成功。
289 d.附加:可充值、某商品移除购物车
290 goods = [
291 {"name":"电脑","price":1999},
292 {"name":"鼠标","price":10},
293 {"name":"游艇","price":20},
294 {"name":"美女","price":998}
295 ]
296
297 allset = 0
298 car_list = []
299 # {
300 # "电脑":{'price':"单个商品价格","num":"购买多少"}
301 # }
302
303 i1 = input("请输入总资产:")
304 allset_all = int(i1)
305 for i in goods:
306 #i, 每一个列表的元素,字典
307 print(i['name'],i['price'])
308 while True:
309 i2 = input('请选择商品(Y/y结算):')
310 if i2.lower() == "y":
311 break
312 for j in goods:
313 if j['name'] == i2:
314 # print(j)
315 car_list.append(j)
316 print(car_list)
317 # 结算
318 all_price = 0
319 for item in car_list:
320 p = item['price']
321 all_price = all_price + p
322 print(allset_all,all_price)
323 if all_price > allset_all:
324 print('不行')
325 else:
326 print('行')
327
328
329 #总资产
330 asset_all = 0
331 i1 = input("请输入总资产:")
332 asset_all = int(i1)
333 goods = [
334 {"name":"电脑","price":1999},
335 {"name":"鼠标","price":10},
336 {"name":"游艇","price":20},
337 {"name":"美女","price":998}
338 ]
339 for i in goods:
340 # {"name":"电脑","price":1999}
341 print(i['name'],i['price'])
342 car_dict = {}
343 # car_dict = {
344 # "电脑":{"price":"单价", "num":123}
345 # }
346 while True:
347 i2 = input("请选择商品(Y/y结算):") # 电脑
348 if i2.lower() == "y":
349 break
350 # 循环所有的商品,查找需要的商品
351 for item in goods:
352 if item['name'] == i2:
353 name = item['name']
354 # 判断购物车是否已经有该商品,有,num+1
355 if name in car_dict.keys():
356 # pass
357 car_dict[name]['num'] = car_dict[name]['num'] + 1
358 else:
359 car_dict[name] = {"num":1,"single_price": item['price']}
360 print(car_dict)
361 # {
362 # '电脑': {'num': 6, 'single_price': 1999} 6*1999
363 # '鼠标': {'num': 3, 'single_price': 10}} 3*10
364
365 # }
366 all_price = 0
367 for k,v in car_dict.items():
368 n = v['single_price']
369 m = v['num']
370 all_sum = m*n
371 all_price = all_price + all_sum
372
373 if all_price > asset_all:
374 print('买不起')
375 else:
376
377 从第一个print往后一格效果完全不一样
378 #总资产
379 asset_all = 0
380 i1 = input("请输入总资产:")
381 asset_all = int(i1)
382 goods = [
383 {"name":"电脑","price":1999},
384 {"name":"鼠标","price":10},
385 {"name":"游艇","price":20},
386 {"name":"美女","price":998}
387 ]
388 for i in goods:
389 # {"name":"电脑","price":1999}
390 print(i['name'],i['price'])
391 car_dict = {}
392 # car_dict = {
393 # "电脑":{"price":"单价", "num":123}
394 # }
395 while True:
396 i2 = input("请选择商品(Y/y结算):") # 电脑
397 if i2.lower() == "y":
398 break
399 # 循环所有的商品,查找需要的商品
400 for item in goods:
401 if item['name'] == i2:
402 name = item['name']
403 # 判断购物车是否已经有该商品,有,num+1
404 if name in car_dict.keys():
405 # pass
406 car_dict[name]['num'] = car_dict[name]['num'] + 1
407 else:
408 car_dict[name] = {"num":1,"single_price": item['price']}
409 print(car_dict)
410 # {
411 # '电脑': {'num': 6, 'single_price': 1999} 6*1999
412 # '鼠标': {'num': 3, 'single_price': 10}} 3*10
413
414 # }
415 all_price = 0
416 for k,v in car_dict.items():
417 n = v['single_price']
418 m = v['num']
419 all_sum = m*n
420 all_price = all_price + all_sum
421
422 if all_price > asset_all:
423 print('买不起')
424 else:
425 print('可以')
426
427
428