#!/usr/bin/python
# -*- coding: utf-8 -*-
__author__ = 'WuYongQi'
import time
gouwu = [
{"商品名": "电脑", "价格": 1999},
{"商品名": "鼠标", "价格": 10},
{"商品名": "游艇", "价格": 20},
{"商品名": "美女", "价格": 998},
] #定义字典内容
zhuangtai=True #定义一个变量为True
gouwuche=[] #定义一个空的列表
while zhuangtai: #判断zhuangtai变量是不是为真,如果是就会执行
zichan=input('请输入您的资产:') #用户输入他的总资产
if not zichan.isdigit(): #判断用户输入的是不是数字,如果不是输出请输入数字
print('请输入数字。')
else: #如果是数字将其转换成int类型并将zhuangtai变量定义成False,while不会再循环。
zichan=int(zichan)
zhuangtai=False
while True: #while死循环,但我们在里面使用的break退出
for k,v in enumerate(gouwu,1): #输出字典中并加上序号
print(k,v)
print(len(gouwu)+1,'充值金额与查看剩余资产',) #在输出完之后我自己定义的显示
print(len(gouwu)+2,'查看购物车') #我自己定义的显示
print(len(gouwu)+3,'退出') #我自己定义的显示
int_xuaho=input('\033[0;31m请输入要购买的商品序号或输入充值、查看购物车序号:\033[0m') #提示用户输入对应的序号来操作
if not int_xuaho.isdigit(): #判断用户是不是输入的数字,如果不是提示请输入数字并从新执行while循环
print('请输入数字。')
continue
elif int(int_xuaho) == len(gouwu)+1: #用户输入的数字将输入的数字转换成int(整型),看看是否超出了总商品的数量
while True:
print('如需退出输入exit','剩余资产',zichan) #输入我自定义的提示,并输出剩余资产
chongzhi=input('请输入充值金额:') #等待用户输入需要充值的金额
if not chongzhi.isdigit(): #判断用户输入的不是数字
if chongzhi == 'exit': #判断用户输入的是exit然后break退出充值页面
break
else: #用户输入其他的提示用户请正确输入,并暂停1.5秒
print('请正确输入!')
time.sleep(1.5)
print('-------------------------------------------------------------------------------') #自定义输出
else: #判断用户输入的是数字
zichan+=int(chongzhi) #将用户输入的数字转换成int(整型)
print('充值成功!') #定义输入充值成功
print('现在剩余资产',zichan) #定义输出剩余资产
time.sleep(1.5) #暂停1.5秒
print('-------------------------------------------------------------------------------') #自定义输出
break #跳出充值页面
elif int(int_xuaho) == len(gouwu)+2: #判断用户输入的数字为商品数量总长度+2
print('-------------------------------------------------------------------------------') #自定义输出
while True: #进入死循环
print('购物车内的商品:',gouwuche) #输出用户当前购物车的情况
print('删除购物车商品请输入del') #自定义输出
print('去往上一层请输入exit') #自定义输出
ex_it=input('请输入接下来的操作>>>>>') #在输出完之后让用户输入接下来的操作
if ex_it == 'exit' : #判断用户输入exit跳出当前这个while死循环
break
elif ex_it == 'del': #判断用户输入del进入移除物品页面
print('-------------------------------------------------------------------------------') #自定义输出
while True:
for i2,i3 in enumerate(gouwuche,1): #循环输出购物车物品,并加上序号从1开始
print(i2,i3)
if 'biaoshis' in dir(): #判断是否有这个变量有的话删除
del biaoshis
delgouwu=input('请输入需要移除购物车的商品序号,可以移除多个请以空格分隔,去网上一层请输入exit>>>>') #等待用户输入要移除的商品序号或者输入exit跳往上一层
if delgouwu == 'exit': #判断用户输入的是exit跳出当前while循环
break
for i4 in delgouwu: #循环用户输入的数字
if i4 == ' ': #遇到循环的空格后跳出该次循环进行下一次循环
continue
elif not i4.isdigit(): #判断用户输入的不是数字,提示请正确输入,并从新循环
print('请正确输入!')
time.sleep(1)
print('-------------------------------------------------------------------------------') #自定义输出
break
if 'biaoshis' in dir(): #判断biaoshis变量是否存在,存在的话将每一次进来的值减去循环删除次数
i4=int(i4)-biaoshis
if int(i4) > len(gouwuche): #判断用户输入的大于当前购物车内商品的序号,并从新循环
print('您输入的数值过大!')
print('-------------------------------------------------------------------------------') #自定义输出
time.sleep(1)
break
elif int(i4) <= 0 : #判断用户输入的小于当前购物车内商品的序号,并从新循环
print('您输入的数值过小!')
print('-------------------------------------------------------------------------------') #自定义输出
time.sleep(1)
break
else: #删除选择的购物车内的商品并呗biaoshis变量+1或定义biaoshis变量
biaoshis=+1
print('移除成功!',gouwuche[int(i4)-1])
del gouwuche[int(i4)-1]
time.sleep(1)
print('-------------------------------------------------------------------------------') #自定义输出
else: #否则用户用户输入的有误,请重新输入,并重新执行当前的while循环
print('输入有误,请重新输入') #当用户输入的不是exit、del提示用户输入有误。
continue
elif int(int_xuaho) == len(gouwu)+3: #判断用户输入的数字为商品数量总长度+2,退出程序
break
elif zichan >= gouwu[int(int_xuaho)-1]['价格']: #判断用户当前的资产大于等于物品的价格
gouwuche.append(gouwu[int(int_xuaho)-1]['商品名']) #将用户选择的物品添加进购物车列表内
zichan-=gouwu[int(int_xuaho)-1]['价格'] #将总资产减去购买物品的价格
print('购买成功!') #提示购买成功
time.sleep(2) #暂停2秒
print('-------------------------------------------------------------------------------') #自定义输出
continue #重新进入当前循环
else: #其他的判断为用户输入的物品价格高于他当前拥有的资产提示金额不足。
print('金额不足,请及时充值。')
time.sleep(1.5) #暂停1.5秒
print('-------------------------------------------------------------------------------') #自定义输出
continue #重新进入当前循环
执行结果:
请输入您的资产:12312
1 {'商品名': '电脑', '价格': 1999}
2 {'商品名': '鼠标', '价格': 10}
3 {'商品名': '游艇', '价格': 20}
4 {'商品名': '美女', '价格': 998}
5 充值金额与查看剩余资产
6 查看购物车
7 退出
请输入要购买的商品序号或输入充值、查看购物车序号:1
购买成功!
-------------------------------------------------------------------------------
1 {'商品名': '电脑', '价格': 1999}
2 {'商品名': '鼠标', '价格': 10}
3 {'商品名': '游艇', '价格': 20}
4 {'商品名': '美女', '价格': 998}
5 充值金额与查看剩余资产
6 查看购物车
7 退出
请输入要购买的商品序号或输入充值、查看购物车序号:5
如需退出输入exit 剩余资产 10313
请输入充值金额:1
充值成功!
现在剩余资产 10314
-------------------------------------------------------------------------------
1 {'商品名': '电脑', '价格': 1999}
2 {'商品名': '鼠标', '价格': 10}
3 {'商品名': '游艇', '价格': 20}
4 {'商品名': '美女', '价格': 998}
5 充值金额与查看剩余资产
6 查看购物车
7 退出
请输入要购买的商品序号或输入充值、查看购物车序号:6
-------------------------------------------------------------------------------
购物车内的商品: ['电脑']
删除购物车商品请输入del
去往上一层请输入exit
请输入接下来的操作>>>>>del
-------------------------------------------------------------------------------
1 电脑
请输入需要移除购物车的商品序号,可以移除多个请以空格分隔,去网上一层请输入exit>>>>1
移除成功! 电脑
-------------------------------------------------------------------------------
请输入需要移除购物车的商品序号,可以移除多个请以空格分隔,去网上一层请输入exit>>>>exit
购物车内的商品: []
删除购物车商品请输入del
去往上一层请输入exit
请输入接下来的操作>>>>>exit
1 {'商品名': '电脑', '价格': 1999}
2 {'商品名': '鼠标', '价格': 10}
3 {'商品名': '游艇', '价格': 20}
4 {'商品名': '美女', '价格': 998}
5 充值金额与查看剩余资产
6 查看购物车
7 退出