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元