文章目录
- 前言
- 问题
- 购物车
前言
记录一次小练习,根据用户选择添加商品进购物车,并计算金额结账。
刚开始我只是现实了将物品放入购物车里的小功能,并默认买一件。
之后,我又进行了反复思考,对于真实场景应当还要考虑购买数量(当然还要其他更多需要考虑的因素,笑😀),于是我调整了一下代码,经过反复调试最终成功实现,还是很开心的!
小插曲
之前有一个bug,我反复检查代码逻辑,语法等,卡了好久(初学不久),也上网找了,都没解决,一直想到了饭点,去吃了个饭回来,接着改还是没思路,要不不要这个实现数量的功能了?我还是心有不甘,我心想死马当活马医算了把判断语句由int改成char型去判断,一调试居然成了,真的十分开心!
bug就是当用户错误输入字母是报错:
ValueError: invalid literal for int() with base 10
请选择需要的商品前编号(逐一添加),输入q结束:9
您输入有误,请重新输入!
请选择需要的商品前编号(逐一添加),输入q结束:e
Traceback (most recent call last):
File "e:\Python\Code\demo2.py", line 27, in <module>
if x.isdigit and 0 <= int(x) <= 5: #判断用户是否正确输入数字编号
ValueError: invalid literal for int() with base 10: 'e'
问题
购物车
products = [["iphone",6888],["Mac pro",14800],["小米6",1999],["Coffee",31],["Book",60],["Nike Air",699]]
#打印商品列表
print("{:5} 商品列表 {:>5}".format("-"*5,"-"*5))
x = 0
for i in products:
print("{} {}\t{}".format(x,i[0],i[1]))
x += 1
cart = [] #购物车
count = 0 #买了几件
num = 0 #总共金额
while True:
x = input("请选择需要的商品前编号(逐一添加),输入q结束:")
if x.isdigit and "0" <= x <= "5": #判断用户是否正确输入数字编号
x = int(x) #input为字符型需要强制类型转换
cart.append(products[x][0]) #购物车里添加商品
count = input("请问需要多少?(输入数字回车)")
count = int(count)
num += (products[x][1] * count)
print("请问还需要其他商品吗?(输入q收银结算)")
elif x.isalpha and x == "q": #判断用户是否正确退出
if num == 0:
print("您无购买记录,欢迎下次光临!")
else:
print("您购买了以下商品:\n")
for i in cart: #遍历购物车
print(i+"\t"+str(count)+"个") #打印商品以及商品数量
print("-"*20+"\n")
print("合计:{}元,欢迎下次光临!".format(num)) #合计金额
exit(0)
else:
print("您输入有误,请重新输入!") #判断用户非法输入
打印输出
----- 商品列表 -----
0 iphone 6888
1 Mac pro 14800
2 小米6 1999
3 Coffee 31
4 Book 60
5 Nike Air 699
请选择需要的商品前编号(逐一添加),输入q结束:0
请问需要多少?(输入数字回车)1
请问还需要其他商品吗?(输入q收银结算)
请选择需要的商品前编号(逐一添加),输入q结束:1
请问需要多少?(输入数字回车)1
请问还需要其他商品吗?(输入q收银结算)
请选择需要的商品前编号(逐一添加),输入q结束:5
请问需要多少?(输入数字回车)1
请问还需要其他商品吗?(输入q收银结算)
请选择需要的商品前编号(逐一添加),输入q结束:q
您购买了以下商品:
iphone 1个
Mac pro 1个
Nike Air 1个
--------------------
合计:22387元,欢迎下次光临!