链接 :
基础内容见python中实现购物.
需求
用户入口:1、商品信息存在文件里;2、已购商品,余额记录。
商家入口:1、可以添加商品,修改商品价格。
提示:以下是本篇文章正文内容,下面代码可供参考
代码如下(示例):
# Author:HY
sdicts={'book':[20,50],'pen':[18,100],'car':[200000,5]}
userlist=[["hy","123","y"],["alex","111","n"]] #买家用户
slist=[["s1","123","y"],["s2","111","n"]] #商家用户
count=[0,0,0] #买家三维列表,第一个代表首次登录用户的状态值,第二、三个是与userlist用户相对应的用户所输入次数
scount=[0,0,0] #商家三维列表,第一个代表首次登录用户的状态值,第二、三个是与slist用户相对应的用户所输入次数
c1 = ''
while c1!='m'and c1!='s':
c1 = input("你是商家还是买家?(输入s/m)")
while c1=='m'or c1=='s':
if c1=='s':
while scount[1] < 3 or scount[2] < 3:
if scount[0] == 0:
username = input("【商家端】:请输入用户名>>")
scount[0] = scount[0] + 1
else:
username = input("请重新输入用户名>>")
scount[0] = scount[0] + 1
if username == slist[0][0]:
scount[1] = scount[1] + 1
if username == slist[1][0]:
scount[2] = scount[2] + 1
if username == slist[0][0] and slist[0][2] != "y":
print("The user %s is locked on!" % username)
continue
if username == slist[1][0] and slist[1][2] != "y":
print("The user %s is locked on!" % username)
continue
if (username != slist[0][0] and username != slist[1][0]):
print("The user %s is not exist !" % username)
continue
password = str(input("请输入密码>>"))
if (username == slist[0][0] and password == slist[0][1] and slist[0][2] == "y") or (
username == slist[1][0] and password == slist[1][1] and slist[1][2] == "y"):
print("Welcome user {0} login!".format(username))
qflag = 'n'
while qflag!='y':
snum = input("请输入商品总种类(\033[36;1m输入数字\033[0m)>>")
while snum.isdigit() and qflag=='n':
snum=int(snum)
for i in range(snum):
sdicts.update({input("请输入第%s个商品名称:" % (i + 1)):[int(input("请输入第%s个商品价格:" % (i + 1))),int(input("请输入第%s个商品数量:" % (i + 1)))]})
qflag = 'y'
vflag='y'
while vflag=='y':
print("刚刚创建的商品目录:")
print("商品名称 商品价格 商品库存")
for j in sdicts:
print(j.ljust(9,' '),str(sdicts[j][0]).ljust(9,' '),sdicts[j][1])
qflag = input("是否退出?(y/n)")
if qflag == 'y':
exit()
else:
vflag=input("是否新增或修改商品?(y/n)")
if vflag=='y':
sdicts.update(
{input("请输入商品名称>>" ): [int(input("请输入商品价格:")),int(input("请输入商品数量:"))]})
continue
else:
exit()
break
else:
qflag=input("你的输入有误!是否退出?(y/n)")
if qflag=='y':
exit()
else:
pass
else:
print("The password is wrong!")
if scount[1]==3 or scount[2]==3:
if username == slist[0][0]:
userlist[0][2] == "n"
if username == slist[1][0]:
userlist[1][2] == "n"
print("The user %s have tried many times! It is locked on!!"%username)
exit()
elif c1=='m':
buydicts={}
while count[1]<3 or count[2]<3:
if count[0]==0:
username = input("【用户端】:请输入用户名>>")
count[0] = count[0] + 1
else:
username = input("请重新输入用户名>>")
count[0] = count[0] + 1
if username == userlist[0][0]:
count[1] = count[1] + 1
if username == userlist[1][0]:
count[2] = count[2] + 1
if username == userlist[0][0] and userlist[0][2] != "y":
print("The user %s is locked on!" % userlist[0][0])
exit()
if username == userlist[1][0] and userlist[1][2] != "y":
print("The user %s is locked on!" % userlist[1][0])
exit()
if (username != userlist[0][0] and username != userlist[1][0]):
print("The user %s is not exist !"%username)
continue
password = str(input("请输入密码>>"))
if (username==userlist[0][0] and password==userlist[0][1] and userlist[0][2]=="y") or (username==userlist[1][0] and password==userlist[1][1] and userlist[1][2]=="y"):
print("Welcome user {0} login!".format(username))
salary=int(input("请输入你的薪资>>"))
s = "y"
while s == "y":
print("商品列表:")
print("商品名称 商品价格 商品库存")
for j in sdicts:
print(j.ljust(9,' '),str(sdicts[j][0]).ljust(9,' '),sdicts[j][1])
shoppingname=input("请输入所购商品名称>>")
if shoppingname in sdicts:
num=int(input("请输入商品所需数量>>"))
if salary>=num*sdicts[shoppingname][0]:
sdicts[shoppingname][1]=sdicts[shoppingname][1]-num
buydicts.update({shoppingname:[sdicts[shoppingname][0],num]})
salary=salary-num*sdicts[shoppingname][0]
print("所剩余额为:",salary,"\n已购买商品>>")
print("商品名称 商品价格 商品数量")
for j in buydicts:
print(j.ljust(9,' '),str(buydicts[j][0]).ljust(9,' '),buydicts[j][1])
s = input("是否继续输入(y/n)?>>")
else:
s = input("\033[31;1m余额不足\033[0m。是否重新输入(y/n)?>>")
continue
else:
print("你输入的商品不存在!")
s=input("是否重新输入(y/n)?>>")
continue
else:
print("已退出购买!所剩余额为:",salary,"\n已购商品有>>")
print("商品名称 商品价格 商品数量")
for j in buydicts:
print(j.ljust(9,' '),str(buydicts[j][0]).ljust(9,' '),buydicts[j][1])
exit()
else:
print("The password is wrong!")
if count[1]==3 or count[2]==3:
if username == userlist[0][0]:
userlist[0][2] == "n"
if username == userlist[1][0]:
userlist[1][2] == "n"
print("The user %s have tried many times! It is locked on!!"%username)
exit()
else:
pflag=input("你输入有误!是否重新输入?(y/n)")
if pflag=='y':
continue
else :
print("你已退出系统!")
exit()
代码如下(商家端):
E:\install\Python\Python38-32\python.exe E:/pythonproject/PycharmProjects/try/day1/shopping2.py
你是商家还是买家?(输入s/m)s
【商家端】:请输入用户名>>s1
请输入密码>>123
Welcome user s1 login!
请输入商品总种类(输入数字)>>2z
你的输入有误!是否退出?(y/n)n
请输入商品总种类(输入数字)>>2
请输入第1个商品名称:bike
请输入第1个商品价格:300
请输入第1个商品数量:50
请输入第2个商品名称:phone
请输入第2个商品价格:4500
请输入第2个商品数量:100
刚刚创建的商品目录:
商品名称 商品价格 商品库存
book 20 50
pen 18 100
car 200000 5
bike 300 50
phone 4500 100
是否退出?(y/n)n
是否新增或修改商品?(y/n)y
请输入商品名称>>pen
请输入商品价格:12
请输入商品数量:200
刚刚创建的商品目录:
商品名称 商品价格 商品库存
book 20 50
pen 12 200
car 200000 5
bike 300 50
phone 4500 100
是否退出?(y/n)n
是否新增或修改商品?(y/n)y
请输入商品名称>>computer
请输入商品价格:5800
请输入商品数量:10
刚刚创建的商品目录:
商品名称 商品价格 商品库存
book 20 50
pen 12 200
car 200000 5
bike 300 50
phone 4500 100
computer 5800 10
是否退出?(y/n)y
Process finished with exit code 0
代码如下(用户端):
E:\install\Python\Python38-32\python.exe E:/pythonproject/PycharmProjects/try/day1/shopping2.py
你是商家还是买家?(输入s/m)m
【用户端】:请输入用户名>>hy
请输入密码>>123
Welcome user hy login!
请输入你的薪资>>5000
商品列表:
商品名称 商品价格 商品库存
book 20 50
pen 18 100
car 200000 5
请输入所购商品名称>>car
请输入商品所需数量>>1
余额不足。是否重新输入(y/n)?>>y
商品列表:
商品名称 商品价格 商品库存
book 20 50
pen 18 100
car 200000 5
请输入所购商品名称>>book
请输入商品所需数量>>30
所剩余额为: 4400
已购买商品>>
商品名称 商品价格 商品数量
book 20 30
是否继续输入(y/n)?>>n
已退出购买!所剩余额为: 4400
已购商品有>>
商品名称 商品价格 商品数量
book 20 30
Process finished with exit code 0
总结
前一篇博文里用的是列表构建购物车,本文用的是刚学的字典,可以看到它们的区别。!注意!使用字典时,一定要保证key唯一,否则修改key对应的值,所有key对应的包括嵌套key的值都会被修改。