python 购物车总额_python之购物车
#-*- coding:utf-8 -*-
'''******************************************************'
购物车
1. 商品信息- 数量、单价、名称
2. 用户信息- 帐号、密码、余额
3. 用户可充值
4. 购物历史信息
5. 允许用户多次购买,每次可购买多件
6. 余额不足时进行提醒
7. 用户退出时 ,输出档次购物信息
8. 用户下次登陆时可查看购物历史
9. 商品列表分级
'******************************************************'''
importos,getpassimportsys
dinfo={}def recharge(name,money): #可给自己充值或者别人充值
#取出金额:
if dinfo.get(name) !=None:
dinfo[name][1] = float(dinfo[name][1]) +moneyprint("%s,您好,恭喜您充值成功,金额为:%d"%(name,dinfo[name][1]))else:print("您好,用户不存在,请重新输入")defbalance_reminder(name):print("您好,您当前余额为%.2f"%float(dinfo[name][1]))defpurchased_goods(name):print("您好,您购买的信息如下")for goods,value in dinfo[name][3].items:print(str(goods).center(20,'*')+value[0].center(20,'*'),value[1].center(20,'*'))#数量、单价、名称
dshop ={"apple":[50,5.00],"durian":[100,130],"grape":[1000,20],"iphone 6s":[50,6000],"Mate9":[1000,3900],"Melon seeds":[100,10],"potato chips":[1000,19]
}
lTmp= [] #保存的是选择序列之后对应的商品
defshowgoods(uname):
i=0
sTitl= "商品信息".center(60,'-')
s_end= "-".center(64,'-')
stemp= "序号\t商品\t数量\t金额\n"
for key,value indshop.items():
i= i + 1stemp+= str(i)+'\t' +key+ '\t'+str(value[0])+'\t'+str(value[1])+'\n'lTmp.append(key)#顺序就是打印的顺序 选择之后知道商品去字典里取伤心
print(sTitl+'\n'+stemp.expandtabs(20)+s_end)
lTmp1=[]def print_dic(): #打印列表 or 是写入文件 历史购物信息
i =0
sTitl= "购物信息".center(60, '-')
s_end= "-".center(64, '-')
stemp= "序号\t商品\t数量\t金额\n"
for key, value in dinfo[suser][3].items():
i= i + 1stemp+= str(i) + '\t' + key + '\t' + str(value[0]) + '\t' + str(value[1]) + '\n'
if key not inlTmp1:
lTmp1.append(key)#顺序就是打印的顺序 选择之后知道商品去字典里取伤心
print(lTmp1)print(sTitl + '\n' + stemp.expandtabs(20) +s_end)def show_oldgoods(): #打印列表 or 是写入文件 历史购物信息
i =0
sTitl= "历史购物信息".center(60, '-')
s_end= "-".center(64, '-')
stemp= "序号\t商品\t数量\t金额\n"
if dinfo[suser][4] =={}:print(sTitl+'\n')else:for key, value in dinfo[suser][4].items():
i= i + 1stemp+= str(i) + '\t' + key + '\t' + str(value[0]) + '\t' + str(value[1]) + '\n'
print(sTitl + '\n' + stemp.expandtabs(20) +s_end)def updatedic(suser,lT=[]): #不存在时
dic ={}
dic[lT[0]]= [lT[1],lT[2]]#更新数量,更新总共消费金额, 结账的时候 再写入文件 #商品 个数 商品个数金额
if lT[0] not in dinfo[suser][3].keys(): #不存在
dinfo[suser][3].update(dic)else:
iTmp= dinfo[suser][3][lT[0]] #取得已有商品的个数和价格的列表
iSum_num = int(iTmp[0]) + int(lT[1])
iSum_price= float(iTmp[1]) + float(lT[2])
dinfo[suser][3][lT[0]] = [iSum_num,iSum_price] #更新数据
print(iTmp,iSum_num,iSum_price,float(lT[1]),float(lT[2]))
dinfo[suser][2] = float(dinfo[suser][2]) + float(lT[2]) #原来的+刚加进来的商品
print(dinfo)
print_dic()defupdatetoold():
dic1= dinfo[suser][3]
dic2= dinfo[suser][4]print(dic1,dic2,dic2=={})if dic2 =={}:print('=-----------')
dic2.update(dic1)else:for key,value indic1.items():if key indic2.keys():
dic2[key]= [int(dic1[key][0])+int(dic2[key][0])] + [float(dic1[key][1])+float(dic2[key][1])]else:
dic2[key]=value
dic1.clear()#现购买数据清空
def rfile(path, mode = 'w+'):
file= open(path, mode=mode, encoding="utf-8")
lines=file.readlines()for line inlines:
dinfo.update(eval(line))#一個數據
file.close()def wfile(path,dic = {}, mode = 'w+'):
file= open(path, mode=mode, encoding='utf-8')
content=str(dic)
file.write(content+ '\n')
file.close()def jiezhang():# for key,values in dinfo.items(): #总金额减少了,并且在[4],历史记录中加入当前购买的这些商品 选择的商品为lTm
dinfo[key][1] -= dinfo[key][2]
updatetoold()
lTmp1.clear()#选择的商品清0
#商品打印
swelcom= "欢迎使用老男孩购物商城".center(30,"*")print(swelcom)
bFlag= True #是否返回首界面
whileTrue:
suser= ''rfile("user.txt")ifbFlag:
schoice= input("1.注册 2.登陆 q.退出 : 请选择 >>>")if schoice == '1':
lvalue=[]
con_amount= 0.0flag=True
dic={}whileTrue:
suser= input("input username:") #注册 是 否注册过
if suser indinfo.keys():print("用户已注册")
flag=False
bFlag=Truebreak
elifsuser.isspace():print("用户名不能为空,请重新输入")elif len(suser)<6:print("用户名需超过6个字符")elif suser.isdigit() orsuser.isalpha():print("用户名过于简单")else:
dinfo[suser]={}break
ifflag:whileTrue:
spwd= input("请输入你的密码:>>>")ifspwd.isspace():print("密码不能为空,请重新输入")elif len(spwd)<6:print("密码需超过6个字符")else:
Y= input("密码过于简单,确定?(Y/N)")if Y.lower() == 'y':break
whileTrue:
sbalance= input("请输入你的余额:>>>")if sbalance.isspace() or sbalance == '':print("金额,请重新输入")print("--%s--"%sbalance)continuessba=float(sbalance)if ssba <0:print("金额需大于0")else:breaklvalue.extend([spwd,ssba,con_amount,{},{}])#append区别开
dinfo[suser] =lvalue
wfile("user.txt",dinfo)
bFlag=Falseelif schoice == '2': #重新优化
i = 3
whilei:
suser= input("请输入用户名:")print(dinfo.keys())if suser indinfo.keys():
j= 3
whilej:
ipassword= input("请输入密码:")if ipassword ==dinfo[suser][0]:print("恭喜您%s,登陆成功!"%suser)
i=0
bFlag=False
show_oldgoods()break
else:
j-= 1
if j ==0:print("您的密码输入有误,很抱歉用户%s已被锁定"%suser)break
print("您的密码输入有误,您还有%d次机会!"%j)elif dinfo =={}:print("你还没注册过,请您先注册")
i=0else:
i-= 1
if i !=0:print("您的用户名不存在,您还有%d次机会"%i)else:print("您的用户名不存在,很抱歉用户%s已被锁定" %suser)elif schoice.lower() == 'q':
sys.exit(1)else:print("您的输入有误,请重新输入!")continueblog=Truewhile blog and bFlag ==False:
schoice= input("请选择您所需要的业务\n1.购物 2.查看当前购物车 3.查询余额 4.充值 5.结账 b.返回登陆 q.退出")if schoice =='1':
flag=True
showgoods(suser)whileflag:
btmpflag=True
bdelgoods=True
sschoice= input("1、购买商品 2、删除购买商品 3、返回")if sschoice == '1':#购买商品
whilebtmpflag:
sseq= input("请输入您要购买的商品序号")if sseq.isdigit() ==False:print("您的输入有误,请重新输入")continue
elif float(sseq) <0:print("您的输入有误,请重新输入")continue
elif int(sseq) >len(lTmp):print("您的商品不存在")continue
else:whilebtmpflag:print(lTmp1,int(sseq))
sgoods_name= lTmp[int(sseq)-1] #商品名
snum = input("请输入个数") #判断个数
lTmmp = dshop[sgoods_name] #通过商品的序号找到对应的商品的信息(剩余个数及单价)
price = lTmmp[1] #取得商品的单价
prices = price * float(snum) #取得所选择商品的总金额
if snum.isdigit() ==False:print("您的输入有误,请重新输入")elif float(snum) <0:print("您的输入有误,请重新输入")elif float(snum) >lTmmp[0]:print("很抱歉,商品%s只有%dge"%(sgoods_name,lTmmp[0]))elif prices > float(dinfo[suser][1]):
schoice= input("您的余额不足!是否进行充值?(Y/N)")if schoice == 'y':
bFlag=TruewhilebFlag:
ssp= input("请输入充值金额:") #序号
if ssp.isdigit() ==False:print("您的输入有误,请重新输入")continue
elif float(sseq) <0:print("您的输入有误,请重新输入")continue
else:
recharge(suser, float(ssp))
schoice= input("是否继续充值?(Y/N)")if schoice.upper() == 'N':
bFlag=Falseelse:#购买成功,需要做商品减少,个数添加
print("成功加入购物车: 商品:%s,购买个数:%d,金额:%.2f"%(sgoods_name,int(snum),prices))
dshop[sgoods_name][0]= int(dshop[sgoods_name][0]) - int(snum) # updatedic(suser,[sgoods_name,snum,prices]) #更新但是金额总金额暂时不改
showgoods(suser)
schoice= input("是否继续购买?(Y/N)")if schoice.upper() == 'N':
btmpflag=Falsebreak
elif sschoice == '2':
print_dic()#当前购买商品
whilebdelgoods:if dinfo[suser][3] =={}:print("购物车是空的!")
bdelgoods=Falseelse:
sseq= input("请输入您要删除的商品序号:") #序号
print(lTmp1)if sseq.isdigit() ==False:print("您的输入有误,请重新输入")continue
elif float(sseq) <=0:print("您的输入有误")continue
elif int(sseq) >len(lTmp1):print("您的商品不存在")continueiseq=int(sseq)
llTmp= dinfo[suser][3][lTmp1[iseq - 1]]
snum= input("请输入您要删除的商品的个数:") #删除的个数
if snum.isdigit() ==False:print("您的输入有误,请输入数字")continue
elif float(snum) <0:print("您的输入有误,数字必须大于0")continue
elif int(snum) != int(llTmp[0]): #取出剩余个数? #增加删除都用一个吧
print("您的输入有误,不能大于购物车商品个数")continue
else:
dshop[lTmp1[iseq- 1]][0] = int(dshop[lTmp1[iseq - 1]][0]) +int(snum)if int(llTmp[0])-int(snum) ==0:
dinfo[suser][3].pop(lTmp1[iseq - 1])else:
updatedic(suser,[lTmp1[iseq- 1],-int(snum),-(llTmp[1]/llTmp[1])*int(snum)])
showgoods(suser)
print_dic()
schoice= input("是否继续删除?(Y/N)")if schoice.upper() == 'N':
bdelgoods=Falsebreak
pass
else:
flag=Falseelif schoice =='2':
print_dic()pass
elif schoice =='3':
balance_reminder(suser)pass
elif schoice =='4':
bFlag=TruewhilebFlag:
sseq= input("请输入充值金额:") #序号
if sseq.isdigit() ==False:print("您的输入有误,请重新输入")continue
elif float(sseq) <0:print("您的输入有误,请重新输入")continue
else:
recharge(suser,float(sseq))
schoice= input("是否继续充值?(Y/N)")if schoice.upper() == 'N':
bFlag=Falseelif schoice =='b':
bFlag=Trueprint(swelcom)break
elif schoice == "5":if dinfo[suser][3] =={}:print("您购物车为空")else:
schoice= input("确定需要结账?(Y/N)")if schoice.upper() == 'Y':if dinfo[suser][3] =={}:print("您购物车为空")#结账总金额变少,写入文件
else:
jiezhang()
wfile("user.txt",dinfo)elif schoice =='q':
sys.exit(1)
python 购物车总额_python之购物车相关推荐
- python 购物车总额_python购物车进阶(函数)
'''头发掉了不少'''import os'''用户注册'''def register(): username= input("请输入注册用户名:") password= inpu ...
- python购物车结算_python中购物车
python的基础语法 python数据类型:(按特征划分) 数字类型: 1.整形:布尔形.长整型L.标准整形 2.非整形:双精度型.复数.decimal(不是内建类型) 序列类型: 1.字符串(st ...
- python 购物车分析_python 简易购物车程序解析
购物车程序需求:用户信息为: {'wyf':{'password': '12', 'role': '2', 'money': '100000', 'carts': ['iphone6', 'mi5'] ...
- python实验报告内容实现购物车系统_Python 实践--购物车功能简单实现
实验环境: operating system: Centos 6.3 Python version:Python 2.6.6 知识点: Python 基本数据类型的常用操作 #!/usr/bin/en ...
- 用Python基本语法实现一个购物车功能
问题描述 用Python基本语法实现一个购物车,包括以下要求: 能够指定商品条目. 初始启动程序,让用户输入初始金额 用户可选择如下操作 0:退出 1:查看商品列表 2:加入购物车 3:结算购物车 4 ...
- python基础实战项目——ATM+购物车代码大全
需求分析 1.实现用户的登录注册功能,并且用户分为普通用户和管理员用户,登录时需要先输入验证码 2.用户注册时会自动添加 20000 元的余额,与 0 元的银行卡信用余额 3.用户拥有–充值,提现,转 ...
- 阿语python美多商城-商品-购物车管理之第7.3节展示商品页面简单购物车
展示商品页面简单购物车 需求:用户鼠标悬停在商品页面右上角购物车标签上,以下拉框形式展示当前购物车数据. 1. 简单购物车数据接口设计和定义 1.请求方式 选项 方案 请求方法 GET 请求地址 /c ...
- python计算入门_Python入门教程02-01(计算机核心基础)
python入门课程第二章-计算机核心基础 Python入门教程01-01(ATM+购物车)学习过后,我们需要了解一下计算机的核心基础,目标就是为了让后面更好的理解python这门语言,更容易接受后续 ...
- Python学习教程(Python学习视频_Python学些路线):Day05 总结和练习
Python学习教程(Python学习视频_Python学些路线):总结和练习 练习清单 寻找"水仙花数". 寻找"完美数". "百钱百鸡" ...
- jquery mysql实现加入购物车_jQuery实现加入购物车飞入动画效果
HTML 首先载入jQuery库文件和jquery.fly.min.js插件. 接着,将商品信息html结构布置好,本例中,我们用四个商品并排布置,每个商品box中包括有商品图片.价格.名称以及加入购 ...
最新文章
- c语言编的游戏怎么在安卓平台使用,谁知道怎么把c语言写的游戏安装到安卓手机上面玩??...
- python版本越高越好吗-python一般用什么版本
- 计算机组成原理 第四版 总线的主模块 总线的从模块,唐朔飞计算机组成原理课件3.ppt...
- 前端if else_应该记录的一些项目代码(前端)
- 浙江工业大学计算机应用基础,浙江工业大学期终考试命题稿-浙江大学人文学院.doc...
- 第四点没有重定义吧,第一个i的作用域就是那个循环,它出了这个域就被释放了。...
- 仿分词统计的MapReduce 程序。
- 程序员简历大曝光,让HR哭笑不得,网友:太老实了!
- centos6配置mysql5.7_CentOS 6.7 下 MYSQL 5.7 的安装与配置
- 推荐算法(一)电影推荐系统
- Flink简介与部署
- 手动档科目三考试过程
- Ozone数据探查服务Recon的启用
- 计算机诞生以来应用最早的,全国一级b考试练习题.doc
- tls协议 android 证书,Android TLS连接和自签名证书
- FastDFS 单机安装
- ARMV8体系结构简介:exclusive monitor
- 捷报 | 美格智能Cat.1模组SLM332中标中国电信定制版Cat.1模组产品招募
- 真正想做的人,什么都不说
- 200826-C语言打印文件中的文本内容
热门文章
- 软件概要设计与详细设计
- 小米路由r1c 刷番茄_充分利用番茄路由器的5条提示
- Tess4j的使用(识别中文)
- java txt 分段读取_Java 读取TXT文件的多种方式
- 中国大学生计算机设计大赛 历史作品博物馆
- html media设置自适应屏幕用法,css使用@media响应式适配各种屏幕的方法示例
- [优化算法] 拉丁超立方采样与基于优化的均匀采样
- ARM-Linux 交叉编译工具链安装
- json文件下载--防止chrome直接打开方案
- 计算机局域网中处理器可以共享么,局域网中怎么设置可共享主机的应用程序及CPU资源。...