zoukankan      html  css  js  c++  java
  • 三级菜单

    __author__ = 'WuJingyu'
    import sys
    goods = [
    {"name": "苹果电脑", "price": 9999},
    {"name": "iphoneX", "price": 5000},
    {"name": "iWatch", "price": 1000},
    {"name": "LV手提包", "price": 9999},
    {"name": "Chanel", "price": 500}
    ]
    account_balance=None #账户余额
    goods_of_relevant={} #goods中的商品进行拆分成【苹果电脑:9999】形式的字典并存储
    goods_of_card=[] #待添加的购物车列表
    first_login=None #是否第一次登录标记
    #账户登录校验模块,允许用户登录错误3次,超过自动退出并提示
    def  account_auth():
        count=3
        with open("account.txt","r")  as file:
            content=file.readline()
            name=content[content.find("=")+1:content.index("passwd")].strip()
            passwd=content[content.find("passwd=")+7:].strip()
    
        while True:
            user_name=input("请输入你的用户名:").strip()
            user_passwd=input("请输入你的密码:").strip()
            if user_name==name and user_passwd==passwd:
                print("恭喜登陆购物系统成功!!!"+"
    ")
                break
    
            else:
                count-=1
                print("你的用户名或密码有误,请重新输入"+"
    "+ "33[1;35m  警告:你剩余的登陆次数还剩下%d次,超过即将被锁定33[0m" %count)
                if count==0:
                    print("你已经超过上限,系统退出!!!")
                    sys.exit()
                else:
                    continue
    #购物车模块
    def shopping():
        # print(account_auth())
        if account_auth()==None:
            flag=1
            while not first_login:
                with open("AccountBalance.txt","r")  as file1: #打开账户余额文件并进行判断,即上次消费的余额什么
                    account_balance=file1.readline()
                    if account_balance!="":
                        employee_salary=account_balance
                    else:
                        employee_salary=input("请输入你的电子钱包金额:").strip() #如果之前没有消费过,请手动给一个自定义金额进行消费
    
                if  employee_salary.isdigit():
                    employee_salary=int(employee_salary)
                    break
                else:
                    print("你输入的金额不合法,请重新输入!!!")
            for i in range(len(goods)):
                goods_of_relevant.update({goods[i]["name"]:goods[i]["price"]})  #拆分goods列表,并拼凑成商品和价格键值对形式,方便后续操作
            if employee_salary <  int(min(goods_of_relevant.values())):  #对给定的钱包金额进行判断,如果小于商品列表的最小金额,并进行提示无法添加购物车
                print("对不起,系统检测到你银行账户余额不能买得起任何一件商品,请充值或者请回去继续搬砖再来吧!!!")
                sys.exit()
            print("商品列表".center(50,"*")+"
    "
            """
             商品1: 苹果电脑   |  价格: 9999,
             商品2: iphoneX   |   价格: 5000,
             商品3: iWatch    |   价格: 1000,
             商品4: LV手提包  |   价格: 9999,
             商品5: Chanel    |   价格: 500,
            """.center(100))
            while not first_login:
             #给定3个操作指令进行操作,循环添加购物车以及随时退出和随时查询消费记录
              choose_goods=input("请输入你要购买的【商品名称】或者输入【Q】退出程序或【F】查询你的历史消费记录>>>>")
              if choose_goods in goods_of_relevant.keys() or choose_goods in ["Q","F"] : #输入指令进行判断
                  if  choose_goods=="F":
                       with open("ConsumeRecord.txt","r")  as file3:  #读取消费记录文件,打印详情
                           consume_content=file3.read()
                           if consume_content!="":
                            print("当前的消费记录如下".center(100,"*")+"
    "+consume_content)
                           else:
                               print("你当前无消费记录!请继续选择其它操作吧")
                               continue
                  elif choose_goods =="Q":
                      print("
    "+"你的余额还剩下33[1;35m %d 33[0m元" %employee_salary)
                      sys.exit()
                  else:
                      if employee_salary >=int(goods_of_relevant[choose_goods]): #判断薪水是否大于所要添加商品的价格
                          goods_of_card.append(choose_goods)  #添加所购买的商品至列表
                          employee_salary-=int(goods_of_relevant[choose_goods])
                          print("你的商品:33[5;31;40m%s33[0m已经成功添加到购物车,请继续购买!" %choose_goods)
                          with open("AccountBalance.txt","w")  as file1: #存储薪水每次变动的信息
                              account_balance=file1.write(str(employee_salary))
    
                          with open("ConsumeRecord.txt","a+")  as file2:  #存储已添加商品和价格到文件,以便调用随时查看消费详情
                              file2.write("商品:"+str(choose_goods)+"金额:")
                              file2.write(str(employee_salary)+"
    ")
                      else:
                          print("33[5;31;40m系统检测到你账户余额已经不足,系统已退出,请回去继续搬砖吧!!!33[0m")
                          break
        else:
            print("系统正在升级维护。。。")
    def loop_list(list_menu):  #循环列表函数
         for i,j  in  enumerate(list_menu):
            print( i,+":"+j )
    
    if __name__ == '__main__':
      shopping()
  • 相关阅读:
    S2-001 远程代码执行漏洞
    Struts2 devMode远程代码执行漏洞检测利用
    CVE-2017-12615(Tomcat PUT方法任意写文件漏洞)
    Medium | LeetCode 343 | 剑指 Offer 14- I. 剪绳子 | 动态规划
    Medium | 剑指 Offer 38. 字符串的排列 | 回溯
    Medium | 剑指 Offer 60. n个骰子的点数 | 动态规划
    Medium | 剑指 Offer 46. 把数字翻译成字符串 | 回溯
    Medium | 剑指 Offer 59
    Hard | LeetCode 239 | 剑指 Offer 59
    Medium | 剑指 Offer 35. 复杂链表的复制
  • 原文地址:https://www.cnblogs.com/wjy123/p/9321378.html
Copyright © 2011-2022 走看看