根据需求,写出购物车程序
1、启动程序后,输入用户名密码后,让用户输入工资,然后打印商品列表
2、允许用户根据商品编号购买商品
3、用户选择商品后,检测余额是否够,够就直接扣款,不够就提醒
4、可随时退出,退出时,打印已购买商品和余额
5、在用户使用过程中, 关键输出,如余额,商品已加入购物车等消息,需高亮显示
#!/bin/env python3
#-*- coding:utf-8 -*-
#author:jinchuang
#定义商品列表
Commodity_List = [
{"name": "中端电脑", "price": 7000},
{"name": "普通鼠标", "price": 50},
{"name": "豪华游艇", "price": 2000000},
{"name": "路飞老师", "price": 995},
]
#定义购物程序一些名称变量
Cmmodity_Buy_List = []
Cmmodity_Name = "可购买商品列表如下:"
Shopping_List = "你的购物车列表"
Shopping_Buy_List = "你已购买的商品列表"
#定义登录程序一些名称变量
User_Passwd = {'admin':'123456','abc':'123'}
Shopping_Mall = "登录购物商城"
Login_Prompt = "欢迎登录购物商城!"
#购物程序
def Shopping():
Money = input("请输入你的存款金额:") #定义存款可用额度
if Money.isdigit(): #判断是否为数字
Money = int(Money)
#进入购物循环
while True:
print(Cmmodity_Name.center(30,"-"))
for index,i in enumerate(Commodity_List): #循环打印商品列表
print(index,i)
#开始购买商品
Number = input("输入商品编号添加到购物车中[p查看购物车 q结算退出]:")
if Number.isdigit():
Number = int(Number)
if Number < len(Commodity_List) and Number >=0: #判断商品是否存在
if Commodity_List[Number]['price'] <= Money: #判断余额是否可以购买
Cmmodity_Buy_List.append(Commodity_List[Number]) #添加到购物车中
Money -= Commodity_List[Number]['price'] #减去商品所花掉的钱
print("\033[33m添加 %s 商品到购物车中\033[0m,\033[31m余额剩余:%s\033[0m" %(Commodity_List[Number],Money))
else:
print("\033[33m你的存款余额不够了,只剩下\033[0m \033[34m%s\033[0m" %(Money))
else:
print("\033[31m请输入正确的商品编号\033[0m")
#打印购物车中的商品
elif Number == 'p':
print("\033[33m%s\033[0m" %(Shopping_List.center(30,'-')))
if len(Cmmodity_Buy_List): #判断购物车是否为空
for p in Cmmodity_Buy_List:
print(p)
print("\n")
else:
print('你的购物车空空如也!去买点商品再来看吧\n')
#结算退出程序
elif Number == 'q':
print("\033[33m%s\033[0m" %(Shopping_Buy_List.center(30,'-')))
for pl in Cmmodity_Buy_List: #打印已经购买的商品列表
print(pl)
print("\033[33m你的余额剩余:\033[0m \033[31m%s\033[0m" %(Money))
exit ()
else:
print("\033[31m输入错误\033[0m")
else:
print("\033[31m请输入正确的金额\033[0m")
Shopping()
#用户登陆
i = 0
while i < 3:
print(Shopping_Mall.center(30,'-'))
uname = input("用户名:")
upass = input("密码:")
if uname in User_Passwd and upass == User_Passwd[uname]:
print ("\033[33m%s\033[0m" %(Login_Prompt.center(30,' ')))
#登录成功执行购物程序
Shopping()
else:
print ("\033[31m登录失败\033[0m")
i+=1
if i == 3:
print ("\033[31m你已经输错 %s 次,退出程序\033[0m" %(i))
扩展需求:
这个文件存取和判断,写的我老费劲了!
1、用户下一次登录后,输入用户名密码,直接回到上次的状态,即上次消费的余额什么的还是那些,再次登录可继续购买
2、允许查询之前的消费记录
#!/bin/env python3
#-*- coding:utf-8 -*-
#author:jinchuang
import os
#定义商品列表
Commodity_List = [
{"name": "中端电脑", "price": 7000},
{"name": "普通鼠标", "price": 50},
{"name": "豪华游艇", "price": 2000000},
{"name": "路飞老师", "price": 995},
]
#定义购物程序一些名称变量
Cmmodity_Buy_List = []
Cmmodity_Name = "可购买商品列表如下:"
Shopping_List = "你的购物车列表"
Shopping_Buy_List = "你已购买的商品列表"
#定义登录程序一些名称变量
User_Passwd = {'admin':'123456','abc':'123'}
Shopping_Mall = "登录购物商城"
Login_Prompt = "欢迎登录购物商城!"
#购物程序
def shopping():
file_money = open('money.txt','a+',encoding='utf-8') #定义存款金额文件
file_money.seek(0) #从头读取
Money = file_money.read()
if Money:#判断是否为空
if Money.isdigit(): #判断是否为数字
Money = int(Money)
else:
Money = int(Money)
print("\033[33m你的存款金额为:\033[0m \033[31m%s\033[0m" %(Money))
#进入购物循环
while True:
print(Cmmodity_Name.center(30,"-"))
for index,i in enumerate(Commodity_List): #循环打印商品列表
print(index,i)
#开始购买商品
Number = input("\n输入商品编号添加到购物车中[u查看已购买商品 p查看购物车 q结算退出]:")
if Number.isdigit():
Number = int(Number)
if Number < len(Commodity_List) and Number >=0: #判断商品是否存在
if Commodity_List[Number]['price'] <= Money: #判断余额是否可以购买
Cmmodity_Buy_List.append(Commodity_List[Number]) #添加到购物车中
Money -= Commodity_List[Number]['price'] #减去商品所花掉的钱
print("\033[33m添加 %s 商品到购物车中\033[0m,\033[31m余额剩余:%s\033[0m" %(Commodity_List[Number],Money))
else:
print("\033[33m你的存款余额不够了,只剩下\033[0m \033[34m%s\033[0m" %(Money))
else:
print("\033[31m请输入正确的商品编号\033[0m")
#打印购物车中的商品
elif Number == 'p':
print("\033[33m%s\033[0m" %(Shopping_List.center(30,'-')))
if len(Cmmodity_Buy_List): #判断购物车是否为空
for p in Cmmodity_Buy_List:
print(p)
else:
print('你的购物车空空如也!去买点商品再来看吧')
elif Number == 'u':
if os.path.exists('shopping.txt'): #判断是否有此文件
ff = open('shopping.txt','r',encoding='utf-8') #读取购买过的商品文件列表
if ff:
ff.seek(0)
for le in ff:
le = le.strip()
print(le)
ff.close()
else:
print('你没有购买过商品')
#结算退出程序
elif Number == 'q':
print("\033[33m%s\033[0m" %(Shopping_Buy_List.center(30,'-')))
if os.path.exists('shopping.txt'):
f = open("shopping.txt",'a',encoding='utf-8')
for pl in Cmmodity_Buy_List: #打印已经购买的商品列表
print(pl)
f.write("%s\n" %(pl)) #购买过的商品存档,下次读取
f.close()
else:
f = open("shopping.txt",'a',encoding='utf-8')
for pl in Cmmodity_Buy_List: #打印已经购买的商品列表
print(pl)
f.write("%s\n" %(pl)) #购买过的商品存档,下次读取
f.close()
print("\033[33m你的余额剩余:\033[0m \033[31m%s\033[0m" %(Money))
file_money.close()
money_yu = open('money.txt','w',encoding='utf-8')
money_yu.write("%s" %(Money))
money_yu.close()
exit ()
else:
print("\033[31m输入错误\033[0m")
else:
Money = input("请输入你的存款金额:") #定义存款可用额度
if Money.isdigit(): #判断输入是否为数字
Money = int(Money)
else:
print('请输入正确的数字金额!')
shopping()
file_money.write('%s' %(Money)) #写入初始存款金额到文件中
file_money.flush() #写入数据到文件中
shopping()
#用户登陆
i = 0
while i < 3:
print(Shopping_Mall.center(30,'-'))
uname = input("用户名:")
upass = input("密码:")
if uname in User_Passwd and upass == User_Passwd[uname]:
print ("\033[33m%s\033[0m" %(Login_Prompt.center(30,' ')))
#登录成功执行下个程序
shopping()
else:
print ("\033[31m登录失败\033[0m")
i+=1
if i == 3:
print ("\033[31m你已经输错 %s 次,退出程序\033[0m" %(i))
本文最后记录时间 2024-03-31
文章链接地址:https://me.jinchuang.org/archives/226.html
本站文章除注明[转载|引用|来源],均为本站原创内容,转载前请注明出处
文章链接地址:https://me.jinchuang.org/archives/226.html
本站文章除注明[转载|引用|来源],均为本站原创内容,转载前请注明出处