>作为一个 Python 刚学完字典的初学者,我尝试写了一个购物车系统。过程中踩了几个坑,分享出来给同样刚开始学 Python 的朋友
目录
一、我要实现什么功能
二、我为什么这么写
三、完整代码
1、访问dict获取元素
2、格式化字符串引号冲突
3、实现功能时,进行判断
五、总结
1、对学习帮助
2、下次可以尝试加文件保存数据,让购物车关掉后也不丢
一、我要实现什么功能
开发一个购物车管理系统,使用字典存储商品数据,通过控制台菜单交互。具体功能:
1. 添加购物车:录入商品名称、价格、数量,保存到购物车。
2. 修改购物车:输入要修改的商品名称,然后更新该商品的价格和数量。
3. 删除购物车:输入要删除的商品名称,从购物车中删除该商品。
4. 查询购物车:展示所有商品信息,格式为:商品名称: xxx, 商品价格: xxx, 商品数量: xxx。
5. 退出购物车:退出系统。
二、我为什么这么写
用字典存数据:因为我想通过“商品名称”直接找到价格和数量,字典最方便。
用 while True 循环菜单:希望用户操作完后还能继续选别的,直到选“退出”才结束。
用 match-case 判断选项:比 if-else 看起来整齐。
三、完整代码
menu = """ ############ 购物车系统 ############ # 1. 添加购物车 # # 2. 修改购物车 # # 3. 删除购物车 # # 4. 查询购物车 # # 5. 退出购物车 # ################################### """ shopping_cart = {} while True: print(menu) choice = input("请选择操作(1-5)") match choice: # 1. 添加购物车:录入商品名称、价格、数量,保存到购物车。 case "1": goods_name = input("请输入商品名称") if goods_name in shopping_cart: print("商品已存在,请重新选择操作") continue else: goods_price = float(input("请输入商品价格:")) goods_num = int(input("请输入商品数量:")) shopping_cart[goods_name] = {"price":goods_price, "num":goods_num} print("添加成功") case "2": # 2.修改购物车:输入要修改的商品名称,然后更新该商品的价格和数量。 goods_name = input("请输入商品名称") if goods_name not in shopping_cart: print("商品不存在,请重新选择操作") continue else: goods_price = float(input("请输入商品价格:")) goods_num = int(input("请输入商品数量:")) shopping_cart[goods_name] = {"price": goods_price, "num": goods_num} print("修改成功") case "3": #3.删除购物车:输入要删除的商品名称,从购物车中删除该商品。 goods_name = input("输入要删除的商品名称") if goods_name in shopping_cart: del shopping_cart[goods_name] print("删除成功") else: print("商品不存在,请重新选择操作") case "4": # 4.查询购物车:展示所有商品信息,格式为:商品名称: xxx, 商品价格: xxx, 商品数量: xxx。 for goods_name in shopping_cart.keys(): goods_info = shopping_cart[goods_name] print(f'商品名称:{goods_name},商品价格:{goods_info["price"]},商品数量:{goods_info["num"]}') case "5": print("bye") break case _: print("操作不合法")注:shopping_cart的形式如{"商品名称":{"商品价格":价格,"商品数量":数量}}
四、我遇到的坑
1、访问dict获取元素
print(f'商品名称:{goods_name},商品价格:{goods_info["price"]},商品数量:{goods_info["num"]}')在以上关键代码中,注意要对goods_info中获取价格与数量,不要对shopping_cart进行元素获取
或者也可以简化为以下代码:
for goods_name, goods_info in shooping_cart.items(): print(f'商品名称:{goods_name},商品价格:{goods_info["price"]},商品数量:{goods_info["num"]}')2、格式化字符串引号冲突
print(f'商品名称:{goods_name},商品价格:{goods_info["price"]},商品数量:{goods_info["num"]}')以上关键代码中f''中获取价格与数量时,使用双引号
3、实现功能时,进行判断
例如:实现添加购物车功能时,我刚开始没有对商品是否存在进行判断,没有功能完成后输出“添加成功字样”
五、总结
1、对学习帮助
系统性地提升我对dict,while。for的理解
dict的代码:
scores = {"数学":90, "语文":85} print(scores["数学"]) # 输出90循环对比案例:
# while适合不确定次数的情况 while password != "123456": password = input("请输入密码") # for适合遍历已知集合 for subject in scores: print(subject)2、下次可以尝试加文件保存数据,让购物车关掉后也不丢
这是我第一次写博客,代码可能不完美,欢迎指正。如果对你有帮助,点个赞吧~