1 # Author:Allister.Liu
2 import copy
3
4 """
5 列表,元组
6 """
7 # --------------------------------------列表 start-------------------------------------------------------
8 # names = ["Allister", "Alex", "Liudi", "WangPo", "Enle"]
9 #
10 # print(names)
11 # print(names[2], names[3], names[-1]) # 通过下标获取,还可以倒着取
12
13 """
14 切片,0和-1可省略(首位)
15 """
16 # print(names[1:4]) # 取下标1至下标4之间的数字,包括1,不包括4
17 #
18 # print(names[1:-1]) #取下标1至-1的值,不包括-1
19
20 # print(names[1:]) # 如果想取最后一个,必须不能写-1,只能这么写
21 # print(names[:3]) # 0也可以不写
22 # print(names[0:-1:2]) # 后面的2是代表,每隔一个元素,就取一个 === names[:-1:2]
23
24
25 """
26 追加
27 """
28 # names.append("Ajsd")
29 # print(names)
30
31
32
33 """
34 插入
35 """
36 # names.insert(3, "追加")
37 # print(names)
38
39
40 """
41 修改,del 变量名称 也可以删除变量
42 """
43 # names[1] = "Alex 修改后的值"
44 # print(names)
45
46
47 """
48 删除
49 """
50 # del names[2]
51 # names.remove("Allister")
52 # names.pop() # 如果不指定下标,则默认删除最后一个
53 # names.pop(1)
54 # print("删除Liudi后:", names)
55
56
57
58 """
59 扩展,将新列表元素扩展进来
60 """
61 # b = [2, 5, 7]
62 # names.extend(b)
63 # print(names)
64
65 """
66 拷贝(浅拷贝):只copy最外层,内层只copy内存地址
67 """
68 # names_copy = names.copy()
69 # print("copy :", names_copy)
70
71 users = ["Allister", "Kiter", ["Hender", "haty"], "Jime"]
72 # 浅拷贝一共三种:
73 #1
74 u1 = copy.copy(users)
75 u2 = users[:]
76 u3 = list(users)
77 print("三种浅copy:", u3)
78
79 # print(users)
80 # users2 = users.copy()
81 # print(users2)
82
83 users[1] = "NewKiter"
84 # print(users)
85 # print(users2) #修改了外层数据,不影响
86
87
88 # users[2][0] = "NewHender"
89 # print(users)
90 # print(users2) #修改了内层数据,copy后的数据也引用修改后的数据,因为浅拷贝只copy最外层数据,内层只copy一等内存地址
91
92
93 # 深拷贝,需导入coopy模块
94 users2 = copy.deepcopy(users)
95 print("deepCopy:", users2)
96 """
97 排序,排序规则是按ASCII码顺序
98 """
99 # names.sort()
100 # print("sort", names)
101
102 """
103 翻转
104 """
105 # names.reverse()
106 # print("reverse", names)
107
108 """
109 获取下标
110 """
111 # print(names.index("Enle"))
112
113 """
114 统计个数
115 """
116 # print(names.count("Allister"))
117
118 """
119 清空
120 """
121 # names.clear()
122 # print(names)
123
124 # ----------------------------------------- end 列表 ----------------------------------------------------------
125
126
127
128
129
130 # ----------------------------------------- 元组 start ----------------------------------------------------------
131 """
132 元组:只有以下两个方法(count(), index()),它其实和列表很相似,但是元组一旦创建便不能修改,所以有名只读列表
133 """
134 # usernames = ("Allister", "Lindi", "Zenfy", "Kity", "Zenfy")
135 # print(usernames.count("Allister")) # 统计元组中出现的个数
136
137 # 如果存在相同的名称,则只返回找到的第一个下标
138 # print(usernames.index("Zenfy")) # 获取该名称的下标
139
140
141 # ----------------------------------------- end 元组 ----------------------------------------------------------
执行结果
程序练习:购物车程序
需求:
启动程序后,让用户输入工资,然后打印商品列表
允许用户根据商品编号购买商品
用户选择商品后,检测余额是否够,够就直接扣款,不够就提醒
可随时退出,退出时,打印已购买商品和余额
1 # Author:Allister.Liu
2
3 """
4 程序:购物车程序
5
6 需求:
7 启动程序后,让用户输入工资,然后打印商品列表
8 允许用户根据商品编号购买商品
9 用户选择商品后,检测余额是否够,够就直接扣款,不够就提醒
10 可随时退出,退出时,打印已购买商品和余额
11
12 """
13
14 # 商品列表 名称&单价
15 product_list = [
16 ["Iphone", 6600],
17 ["Mac Pro", 12888],
18 ["Watch", 1033],
19 ["Bike", 899],
20 ["Nick", 2688],
21 ["Book", 69.5]
22 ]
23
24 card_list = []
25
26 # 打印产品信息
27 def print_product_infos():
28 print("-----编码---------名称------单价-----")
29 index_ = 0
30 for key in product_list:
31 print("----", index_, "-----", key[0], "-----", key[1])
32 index_ += 1
33 else:
34 print("---------------------------------")
35
36
37 # 结账
38 def settle(salaty_, count):
39 print("-----编码--------单价-----")
40 for i in card_list:
41 print("----", int(i), "-------", product_list[int(i)][1])
42
43 else:
44 print("---------------------------------")
45 print("您一共消费¥%.2f元,卡余额¥%.2f元" % (float(count), float(salaty_) - float(count)))
46
47
48 # 卡余额
49 salaty = input("您的余额:")
50 if salaty.isdigit():
51 # 购物车商品总额
52 card_count = 0
53 salaty = float(salaty)
54 while card_count <= salaty:
55 # 打印产品信息
56 print_product_infos()
57
58 # 输入产品编码,并判断金额是否小于卡余额,若小于,则加入购物车
59 product_id = input("请输入产品编码或直接输入q退出:")
60 if product_id.isdigit():
61 user_choce = int(product_id)
62 if user_choce < len(product_list) and user_choce >= 0:
63 card_list.append(product_id)
64 card_count += product_list[int(product_id)][1]
65 if card_count > salaty:
66 print("您的卡片余额不足购买商品金额¥%.2f元,请充值后再试!" % card_count)
67 break
68 else:
69 print("商品不存在,请重新输入商品编码")
70 continue
71 elif product_id == 'q':
72 if card_count > 0:
73 # 扣款并结账
74 settle(salaty, card_count)
75 break
76 else:
77 print("您的输入有误,请重新输入商品编码")
78 continue
79 else:
80 # 扣款并结账
81 settle(salaty, card_count)
82 else: # 卡余额输入错误
83 print("会员卡余额输入错误")
84 exit()

您的余额:34222
-----编码---------名称------单价-----
---- 0 ----- Iphone ----- 6600
---- 1 ----- Mac Pro ----- 12888
---- 2 ----- Watch ----- 1033
---- 3 ----- Bike ----- 899
---- 4 ----- Nick ----- 2688
---- 5 ----- Book ----- 69.5
---------------------------------
请输入产品编码或直接输入q退出:1
-----编码---------名称------单价-----
---- 0 ----- Iphone ----- 6600
---- 1 ----- Mac Pro ----- 12888
---- 2 ----- Watch ----- 1033
---- 3 ----- Bike ----- 899
---- 4 ----- Nick ----- 2688
---- 5 ----- Book ----- 69.5
---------------------------------
请输入产品编码或直接输入q退出:2
-----编码---------名称------单价-----
---- 0 ----- Iphone ----- 6600
---- 1 ----- Mac Pro ----- 12888
---- 2 ----- Watch ----- 1033
---- 3 ----- Bike ----- 899
---- 4 ----- Nick ----- 2688
---- 5 ----- Book ----- 69.5
---------------------------------
请输入产品编码或直接输入q退出:5
-----编码---------名称------单价-----
---- 0 ----- Iphone ----- 6600
---- 1 ----- Mac Pro ----- 12888
---- 2 ----- Watch ----- 1033
---- 3 ----- Bike ----- 899
---- 4 ----- Nick ----- 2688
---- 5 ----- Book ----- 69.5
---------------------------------
请输入产品编码或直接输入q退出:q
-----编码--------单价-----
---- 1 ------- 12888
---- 2 ------- 1033
---- 5 ------- 69.5
---------------------------------
您一共消费¥13990.50元,卡余额¥20231.50元
购物车程序运行结果