python中的购物车(二)

链接 :
基础内容见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的值都会被修改。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值