Python3之列表、元组和购物车程序练习

  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元
购物车程序运行结果

 

转载于:https://www.cnblogs.com/allister/p/8279708.html

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值