zoukankan      html  css  js  c++  java
  • 购物车

    goods = [
    {"name": "电脑", "price": 1999},
    {"name": "鼠标", "price": 10},
    {"name": "游艇", "price": 20},
    {"name": "美女", "price": 998},
    ......
    ]
    功能要求:
    1、启动程序后,输入用户名密码后,让用户输入工资,然后打印商品列表
    2、允许用户根据商品编号购买商品
    3、用户选择商品后,检测余额是否够,够就直接扣款,不够就提醒
    4、可随时退出,退出时,打印已购买商品和余额
    5、在用户使用过程中, 关键输出,如余额,商品已加入购物车等消息,需高亮显示

    扩展需求:
    1、用户下一次登录后,输入用户名密码,直接回到上次的状态,即上次消费的余额什么的还是那些,再次登录可继续购买
    2、允许查询之前的消费记录

    3、用户可以添加商品

      1 #!/usr/bin/env python3
      2 #-*- coding:utf-8 -*-
      3 '''
      4 Time:2018/5/4 18:11
      5 File:购物车优化
      6 '''
      7 
      8 
      9 exit_flag = False
     10 
     11 goods = [
     12 {"name": "电脑", "price": 1999},
     13 {"name": "鼠标", "price": 10},
     14 {"name": "游艇", "price": 20},
     15 {"name": "美女", "price": 998},
     16 ]
     17 
     18 shopping = []
     19 name = input('请输入您的账号:').strip()
     20 f = open('black_file.txt','r',encoding='utf-8')
     21 lock_file = f.read()# 读取黑名单文件
     22 f.close()
     23 if name in  lock_file:# 如果账户在黑名单文件里,账户将被锁定
     24     print('账户被锁定,请联系管理员!')
     25     exit()
     26 
     27 cont = 0
     28 with open('b.txt', 'r', encoding='utf-8') as f:
     29         yi = eval(f.read())
     30 
     31 while cont < 3:
     32     if name not in yi['name']:
     33         print('账号不存在,请注册下你的账号!')
     34         name1 = input('请输您的账号:').strip()
     35         passwd1 = input('请输入您的密码:').strip()
     36         while True:
     37             salary = input('请输入您的工资:').strip()
     38             if salary.isdigit():
     39                 salary = int(salary)
     40                 break
     41             else:
     42                 print('输入错误')
     43                 continue
     44         lis = {'name': name1, 'passwd': passwd1, 'salary': salary}
     45         with open('b.txt', 'w', encoding='utf8') as f:
     46                 f.write(str(lis))
     47                 break
     48     else:
     49         passwd = input('请输入您的密码:').strip()
     50         if name == yi['name'] and passwd == yi['passwd']:
     51             print('欢迎回来33[31;1m%s33[0m,您的余额还有33[31;1m%s33[0m'%(name,yi['salary']))
     52             shopping_list = input("是否要读取上一次购物历史|y|n|:").strip()
     53             if shopping_list == 'y':
     54                 with open('a.txt','r',encoding='utf8') as f:
     55                     f1 = eval(f.read())
     56                     for i,v in enumerate(f1):
     57                         print(v['name'],v['price'])
     58                     shopping1 = input('是否要继续购物|y|n:').strip()
     59                     if shopping1 == 'y':
     60                         pass
     61                     else:
     62                         exit()
     63                     break
     64             elif shopping_list == 'n':
     65                break
     66             else:
     67                 print('输入错误!')
     68                 continue
     69         else:
     70             print('账号密码错误!')
     71     cont += 1
     72 
     73 if cont == 3:
     74     print('对不起,密码输错三次,账户被锁定!')
     75     f = open('black_file.txt', 'a+')
     76     f.write('%s
    ' % name)  # 密码输入三次将账户写入到黑名单文件里
     77     f.close()
     78     exit()
     79 
     80 
     81 
     82 while not exit_flag:
     83     print('-----------商品列表-------')
     84     for i,v in enumerate(goods):
     85         print(i,v['name'],v['price'])
     86 
     87     choice = input('请输入商品的编号或输入q退出!|a添加商品:').strip()
     88 
     89     if choice.isdigit():
     90         choice = int(choice)
     91         if choice >= 0 and choice < len(goods):
     92             product = goods[choice]
     93             print(product['price'])
     94             if  product['price'] <= yi['salary']:
     95                 shopping.append(product)
     96                 yi['salary'] -= product['price']
     97                 with open('b.txt','w',encoding='utf8') as f:
     98                     f.write(str(yi))
     99                 print('商品33[31;1m%s33[0m已加入购物车,您的余额还有33[31;1m%s元33[0m'%(goods[0]['name'],yi['salary']))
    100             else:
    101                 print('对不起,您的余额不足,无法购买!')
    102             # print(shopping)
    103         else:
    104             print('商品不存在,请重新输入!')
    105 
    106     elif choice == 'q' or choice == 'Q':
    107         # print(shopping)
    108         if len(shopping) > 0:
    109             print('-----已购买的商品-------')
    110             print('ID 商品 价格')
    111             for i,v in enumerate(shopping):
    112                 print('%s.  %s %s'%(i,v['name'],v['price']))
    113             print('您的余额还剩33[31;1m%s33[0m'%yi['salary'])
    114             with open('a.txt','w',encoding='utf-8') as f:
    115                 f.write(str(shopping))
    116             # print(shopping)
    117             exit_flag = True
    118     elif choice == 'a':
    119         print('添加商品')
    120         print('已有商品')
    121         for i,v in enumerate(goods):
    122             print(i,v['name'],v['price'])
    123 
    124         a = input('商品名称:').strip()
    125         a1 = int(input('商品价格:').strip())
    126         dic = {'name':a,'price':a1}
    127 
    128         goods.append(dic)
    129 
    130         print('商品已添加完成')
    131         for i,v in enumerate(goods):
    132             print(i,v['name'],v['price'])



  • 相关阅读:
    这一次,Google 终于对 Web 自动化下手了!
    移动端自动化 AutoJS 快速入门指南
    App 端自动化的最佳方案,完全解放双手!
    快过年了,如何使用 AutoJS 自动化快速抢微信红包!
    字节面试问我如何高效设计一个LRU,当场懵
    当前大厂笔试最高频的十道算法题
    coding game, 边打游戏边学编程,是一种怎么样的体验?
    一文详解面试常考的TopK问题
    动态规划,这几个问题最常见!
    备战蓝桥杯,你可以这么准备
  • 原文地址:https://www.cnblogs.com/yjiu1990/p/9012683.html
Copyright © 2011-2022 走看看