#!/usr/bin/env python
# -*- coding:utf-8 -*-
# by wk
'''
购物车
功能要求:
要求用户输入总资产,例如:2000
显示商品列表,让用户根据序号选择商品,加入购物车
购买,如果商品总额大于总资产,提示账户余额不足,否则,购买成功。
附加:可充值、某商品移除购物车
goods = [
{"name": "电脑", "price": 1999},
{"name": "鼠标", "price": 10},
{"name": "游艇", "price": 20},
{"name": "美女", "price": 998},
]
'''
# 充值模块
def recharge(userlist):
flag1 = True # 循环标记
while flag1:
flag2 = True # 循环标记
add_money = input('请输入充值金额(数字): ')
if add_money.isdigit():
old_money = int(userlist[0]['money'])
new_money = old_money + int(add_money)
users[0]['money'] = new_money
print('您现在的余额是 %s元' % userlist[0]['money'])
while flag2:
readd = input('是否继续充值,(Y or y)继续,(N or n)返回上一级: ')
if readd == 'Y' or readd == 'y':
flag2 = False
elif readd == 'N' or readd == 'n':
flag1 = False
flag2 = False
else:
print('输入有误,请重新输入\n')
flag2 = True
else:
print('输入的不是数字请重新输入\n')
def usercenter(userlist):
users = userlist
print('=======用户中心=======\n 用户名: %s 余额: %s' % (users[0]['name'], users[0]['money']))
# 商品列表
def goods_list(goodslists):
my_goods_list = goodslists
print('请选择商品')
for k, goods in enumerate(my_goods_list):
print('产品编号:%s 名称: %s 价格: %s元, 剩余: %s' % (k, goods['name'], goods['price'], goods['nums']))
while True:
my_goods_id = input('请输入要买商品的编号: ')
if my_goods_id.isdigit():
return my_goods_id
print('输入的不是数字请重新输入\n')
# 购物车模块
def cartlists(goodsid, cart_id):
flag1 = True
flag_list = True
while flag1: # 循环标记
cart_id = cart_id + 1 # 为了给购物车里的商品编号,便于移除商品
flag2 = True
# goods_id = input('请输入要买商品的编号: ')
goods_id = int(goodsid)
print('您选择了 %s' % (goodslist[goods_id]['name']))
goods_num = input('请输入购买数量: ')
if goods_num.isdigit():
print('您购买的数量是 %s 件' % (goods_num))
goods_name = goodslist[goods_id]['name']
goods_price = int(goodslist[goods_id]['price'])
oldnum = int(goodslist[goods_id]['nums'])
newnum = oldnum - int(goods_num)
if newnum > 0: # 判断产品数量够不够
# goodslist[goods_id]['nums'] = newnum
car_dict = {} # 创建购物车字典
car_dict['id'] = cart_id # 编号
car_dict['name'] = goods_name # 商品名称
car_dict['nums'] = goods_num # 购买数量
car_dict['price'] = goods_price * int(goods_num) # 价格
carlist.append(car_dict)
while flag2: # 循环标记
buy_again = input('是否继续购买请按(Y or y),去结账请按(N or n): ')
if buy_again == 'Y' or buy_again == 'y':
flag2 = False
flag1 = False
flag_list = True
elif buy_again == 'N' or buy_again == 'n':
flag1 = False
flag2 = False
flag_list = False
else:
print('输入有误,请重新输入\n')
flag2 = True
else:
print('没那么多了,看看还有没有别的想买的\n')
break
else:
print('输入的不是数字请重新输入\n')
# print('this is goods_num ', goods_num)
return carlist, flag_list, goods_id, newnum, cart_id
# 购买模块
def my_buy(cart_list, goods_id, goods_num):
goods_total_money = 0
if not cart_list:
pass
else:
while True:
print('购物车信息:')
for buy_car in cart_list:
print('购买编号: %s 产品名称: %s 价格: %s元 数量: %s个' % (
buy_car['id'], buy_car['name'], buy_car['price'], buy_car['nums']))
my_confirm = input('订单确认请按(Y or y),移除请输入编号(数字),取消订单请按(N or n): ')
if my_confirm == 'Y' or my_confirm == 'y':
for cart in cart_list:
goods_total_money += cart['price']
myoldmoney = int(users[0]['money'])
# goodsmoney = carlist[goods_id]['price'] * int(goods_num)
my_new_money = myoldmoney - goods_total_money
if my_new_money >= 0: # 判断钱够不够
users[0]['money'] = my_new_money
goodslist[goods_id]['nums'] = goods_num
print('提交成功!')
print('当前您的订单信息:')
for buy_car in car:
print('产品名称: %s 价格: %s元 数量: %s个' % (
buy_car['name'], buy_car['price'], buy_car['nums']))
# print('当前您的账户信息:\n', users)
for buy_users in users:
print('我的账户信息:\n账户名: %s 余额: %s元' % (buy_users['name'], buy_users['money']))
break
else:
print('钱不够了请去充值,提交失败\n')
break
elif my_confirm == 'N' or my_confirm == 'n':
print('您已取消\n')
break
else:
no_this_id = 0
if my_confirm.isdigit():
# print(type(len(cart_list)))
for my_cart in cart_list:
if my_cart['id'] == int(my_confirm):
cart_list.remove(my_cart)
print('移除成功!')
no_this_id = 1
break
elif no_this_id == 0:
print('没有这个编号,请重新输入\n')
else:
print('输入有误,请重新输入\n')
if __name__ == '__main__':
users = [
{'name': 'wukun', 'money': 1000}
]
goodslist = [
{'name': '电脑', 'price': 1999, 'nums': 10},
{'name': '鼠标', 'price': 10, 'nums': 10},
{'name': '游艇', 'price': 20, 'nums': 10},
{'name': '美女', 'price': 998, 'nums': 10}
]
flag = True # 最外层循环标记
while flag:
my_cart_id = -1
flag_list = True
carlist = []
mainlist = '========我的网上商城=======\n1.进入商城\n2.账户充值'
print(mainlist)
choose = input('请选择编号(1 or 2),退出请按(E or e): ')
if choose == 'E' or choose == 'e':
break
else:
if choose.isdigit() and choose == '1':
while flag_list:
goodsid = goods_list(goodslist)
car, flag_list, goods_id, goods_new_num, my_cart_id = cartlists(goodsid, my_cart_id)
my_buy(car, goods_id, goods_new_num)
while True:
my_choose = input('是否继续购物,确认请按(Y or y),退出请按(B or b): ')
if my_choose == 'Y' or my_choose == 'y':
flag = True
break
elif my_choose == 'B' or my_choose == 'b':
flag = False
break
else:
print('输入的信息不正确请重新输入')
continue
elif choose.isdigit() and choose == '2':
usercenter(users)
recharge(users)
print('this is users', users)
else:
print('输入的选项错误,请重新输入\n')