完成一个商城购物车的程序。
商品信息在文件存储的,存储形式:
name price
电脑 1999
鼠标 10
游艇 20
美女 998
.......
要求:
- 用户先给自己的账户充钱:比如先充3000元。
- 读取商品信息文件将文件中的数据转化成下面的格式:
goods = [{"name": "电脑", "price": 1999},
{"name": "鼠标", "price": 10},
{"name": "游艇", "price": 20},
{"name": "美女", "price": 998}, ...]
1 电脑 1999
2 鼠标 10
…
n 购物车结算
q或者Q退出程序。
- 用户输入选择的商品序号,然后打印商品名称及商品价格,并将此商品,添加到购物车,用户还可继续添加商品。
- 如果用户输入的商品序号有误,则提示输入有误,并重新输入。
- 用户输入n为购物车结算,依次显示用户购物车里面的商品,数量及单价,若充值的钱数不足,则让用户删除某商品,直至可以购买,若充值的钱数充足,则可以直接购买。
- 用户输入Q或者q退出程序。
- 退出程序之后,依次显示用户购买的商品,数量,单价,以及此次共消费多少钱,账户余额多少,并将购买信息写入文件。
得分详情
- 完成1-3要求为C。
- 完成1-4要求为 C+。
- 完成1-6要求为B。
- 完成全部要求并且没有BUG为A 或者A +。
low obj
#!/usr/bin/env python
# encoding: utf-8
# Author: MeiMeiLong <[email protected]>
# Create Date: 2019-03-08 15:03:44
# Last Modified: 2019-03-08 20:18:38
# Description: 脱产班第一次大作业(文件操作结束)
ShopMenu = 'List.txt'
#读取商品信息文件将文件中的数据转化成下面的格式
ShopMoney = 0
goods = list()
items_dic = dict()
with open(ShopMenu,encoding='utf-8',mode='r') as f:
menu = f.readline()
name,price = menu.split()
for line in f:
dic = dict()
dic[name] = dic.get(name,line.split()[0])
dic[price] = dic.get(price,line.split()[1])
goods.append(dic)
items_dic[line.split()[0]] = items_dic.get(line.split()[0],line.split()[1])
ShopCar = dict.fromkeys(items_dic,0)
while 1:
PocketMoney = input('充点钱吧,大哥:').strip()
if PocketMoney.isdigit():
PocketMoney = int(PocketMoney)
break
else:
print('大哥你有钱么d_d.')
continue
while 1:
#页面显示 序号 + 商品名称 + 商品价格:
for num,menu in enumerate(goods):
print(num+1,menu[name],menu[price])
else:
print('n 购物车结算\nq或者Q退出程序。')
#用户输入选择的商品序号,然后打印商品名称及商品价格,并将此商品,添加到购物车,用户还可继续添加商品。
select = input('买哪个商品? > ').strip()
if select.isdigit():
select = int(select)
if select in range(1,len(goods)+1):
print('购物车加入了一个%s' % goods[select-1][name])
ShopCar[goods[select-1][name]]+=1
else:
print('输入有误.')
#用户输入n为购物车结算,依次显示用户购物车里面的商品,数量及单价,若充值的钱数不足,则让用户删除某商品,直至可以购买,若充值的钱数充足,则可以直接购买。
elif select.upper() == 'N':
print('Shop Car'.center(40,'-'))
for item in ShopCar:
if items_dic[item] != 0:
print('商品名称:%s 商品数量:%s 商品价格:%s' % (item,ShopCar[item],items_dic[item]))
ShopMoney +=ShopCar[item] * int(items_dic[item])
else:
print('当前你口袋里的钱:%s,购物车的钱钱:%s' % (PocketMoney,ShopMoney))
if ShopMoney <= PocketMoney:
print('有钱人啊,直接清空购物车了。')
print('\n你此次购物情况:')
for item in ShopCar:
if ShopCar[item] != 0:
print('买了%s个%s,一个%s元' % (ShopCar[item],item,items_dic[item]))
else:
print('此次消费:%s元,还剩%s元' % (ShopMoney,PocketMoney-ShopMoney))
break
else:
#print(items_dic)#输出商品名称和价格的关系 {'电脑': '1999', '鼠标': '10', '游艇': '20', '美女': '998'}
print('你木有钱钱啊。\n买不起还选!看看哪个不要了吧:')
exit_flag = False
while not exit_flag:
#while ShopMoney > PocketMoney:
for num,menu in enumerate(goods):
print('序号:%s,名称:%s,价格:%s,数量:%s' % (num+1,menu[name],menu[price],ShopCar[menu[name]]))
print('当前你口袋里的钱:%s,购物车的钱钱:%s' % (PocketMoney,ShopMoney))
reduce_item = input('不要哪个商品了? >').strip()
if reduce_item.isdigit():
reduce_item = int(reduce_item)
if reduce_item in range(1,len(goods)+1):
if ShopCar[goods[reduce_item-1][name]] <= 0:
print('输入正确的削减商品!')
continue
ShopCar[goods[reduce_item-1][name]]-=1
ShopMoney = 0
for item in ShopCar:
if items_dic[item] != 0:
#数量 #价格
ShopMoney += ShopCar[item] * int(items_dic[item])
if ShopMoney <= PocketMoney:
print('当前你口袋里的钱:%s,购物车的钱钱:%s' % (PocketMoney,ShopMoney))
if input('你已经可以清空购物车了!是否清空呢(Y/N)?').strip().upper() == 'Y':
exit_flag = True
#break
else:
print('输入有误.')
print('当前你口袋里的钱:%s,购物车的钱钱:%s\n有钱人啊,直接清空购物车了。' % (PocketMoney,ShopMoney))
#退出程序之后,依次显示用户购买的商品,数量,单价,以及此次共消费多少钱,账户余额多少,并将购买信息写入文件。
print('你此次购物情况:')
for item in ShopCar:
if ShopCar[item] != 0:
print('买了%s个%s,一个%s元' % (ShopCar[item],item,items_dic[item]))
else:
print('此次消费:%s元,还剩%s元' % (ShopMoney,PocketMoney-ShopMoney))
break
#===================================================================
#用户输入Q或者q退出程序。
elif select.upper() == 'Q':
print('此次消费:0元,还剩%s元' % PocketMoney)
break
else:
print('输入有误.')
with open('log','w') as f:
for item in ShopCar:
if ShopCar[item] != 0:
f.write('买了%s个%s,一个%s元\n' % (ShopCar[item],item,items_dic[item]))
f.write('此次消费:%s元,还剩%s元' % (ShopMoney,PocketMoney-ShopMoney))