Lession 5 homework:
### 购物车 作业要求:(用函数写)
1. 用户先给自己的账户充钱:比如先充3000元。
2. 页面显示 序号 + 名称 + 价格 , 如:
[===========有如下商品供您选择:===========]
序号 名称 价格
1 电脑 1999
2 鼠标 10
3 游艇 20
4 美女 998
n或N 购物车结算
q或Q 退出程序(如不结算购物车可直接退出)]
[==========================================]
购物车结算
3. 用户输入选择的商品序号,然后打印商品名称及商品价格,并将此商品,添加到购物车,用户还可继续添加商品。
4. 如果用户输入的商品序号有误,则提示输入有误,并重新输入。
5. (1)用户输入n为购物车结算,依次显示用户购物车里面的商品,数量及单价
(2)若充值的钱数不足则让用户删除某商品,直至可以购买,若充值的钱数充足,则可以直接购买退出
(3)退出程序之后,依次显示用户购买的商品,数量,单价,以及此次共消费多少钱,账户余额多少
6. 用户输入Q或者q 直接退出程序。
***********************************************************************************************
以下为代码块
"""充值"""
money=0
n=float(input('请先给你的账户充值,请输入充值金额:'))
money+=n
print('充值成功,账户余额:',money,'你可以选择商品开始购物')
"""以下代码用于显示打印商品列表,商品信息预先存储在文件goods.txt中"""
def showGoods(fname):
with open(fname, encoding='GBK') as fin:
print("[===========有如下商品供您选择:===========]")
print('序号 名称 价格')
goods=[]
for line in fin:
line = line.strip()
no, name, price = line.split(' ')
price = float(price)
good=(no, name, price)
goods.extend(good)
print(no,' ',name,' ', price)
#print(goods)
print(
"""
n或N 购物车结算
q或Q 退出程序(如不结算购物车可直接退出)
[=======================================]
""")
"""以下为购物车结算代码"""
def calculate():
i=1
pay=0
p1=1999
p2=10
p3=20
p4=998
lst=[]
while i==1:
goodnum = input('请输入你的选择:')
if goodnum not in ('1','2','3','4','n','N','q','Q'):
print('你的输入有误,请输入正确的商品序号或指令:')
continue
elif goodnum == '1':
pay+=p1
lst.append(goodnum)
print('你已经选择商品{},价格为{}'.format(goodnum,p1))
print()
elif goodnum == '2':
pay+=p2
lst.append(goodnum)
print('你已经选择商品{},价格为{}'.format(goodnum,p2))
print()
elif goodnum == '3':
pay+=p3
lst.append(goodnum)
print('你已经选择商品{},价格为{}'.format(goodnum,p3))
print()
elif goodnum == '4':
pay+=p4
lst.append(goodnum)
print('你已经选择商品{},价格为{}'.format(goodnum,p4))
print()
elif goodnum == 'n' or goodnum == 'N':
print('你选购商品总价为%.2f'%pay)
print('你的余额为%.2f'%money)
print('你选购了这些商品:',lst)
print()
yue=money-pay
while yue<0:
print('余额不足,还差%.2f,请忍痛割爱,删除一些商品'%(-yue))
cut = input('请输入要删除的商品编号:')
if cut not in ('1','2','3','4','n','N','q','Q'):
print('你的输入有误,请输入正确的商品序号或指令:')
continue
elif cut=='1':
yue+=p1
print('你已经选择删除商品{},删除后余额为{}'.format(cut, yue))
print()
elif cut=='2':
yue+=p2
print('你已经选择删除商品{},删除后余额为{}'.format(cut, yue))
print()
elif cut=='3':
yue+=p3
print('你已经选择删除商品{},删除后余额为{}'.format(cut, yue))
print()
elif cut=='4':
yue+=p4
print('你已经选择删除商品{},删除后余额为{}'.format(cut, yue))
print()
print('购买成功,你的余额为:%.2f' % (yue))
i=0
elif goodnum == 'q' or goodnum == 'Q':
print('你已退出程序')
i=0
showGoods('goods.txt')
calculate()
总结:
1. 商品显示部分,用文件存储方便增删商品,但是好像不太好处理后面的数据关联,可能主要是不太熟文件操作。
2. 购物车结算模块,感觉条件判断写得比较啰嗦,应该有优化的方法,但此刻的我,已经被简单的小成果膨胀了,后面再思考思考
3. 购物车结算模块,商品的关联性做得很差,比如想取商品名称,不好处理,先放了一个列表在这里存储用户输入的商品编码,后面再看怎么处理把商品名称在这一块用起来
4. 还是购物车模块,重新定义了商品的价格,下一步思考,怎么跟显示商品函数关联起来,或者显示商品函数不应该写成函数?
5. 商品列表也许可以用字典处理?
6. 总体来说,还有很多可优化的地方,但是,呵呵,算是一个小小的鼓励了!嗨森。