zoukankan      html  css  js  c++  java
  • 购物车程序二(模拟了用户登录,限次数三次)

     1 '''
     2 #作业二:请闭眼写出购物车程序
     3 goods = [
     4     {"name": "电脑", "price": 1999},
     5     {"name": "鼠标", "price": 10},
     6     {"name": "游艇", "price": 20},
     7     {"name": "美女", "price": 998},
     8 ]
     9 #需求:
    10 用户名和密码存放于文件中,格式为:jack|123
    11 启动程序后,先登录,登录成功则让用户输入工资,然后打印商品列表,失败则重新登录,超过三次则退出程序
    12 允许用户根据商品编号购买商品
    13 用户选择商品后,检测余额是否够,够就直接扣款,不够就提醒
    14 可随时退出,退出时,打印已购买商品和余额
    15 
    16 '''
    17 shopping_car = []
    18 flag = False
    19 num = 1
    20 
    21 while num < 4:
    22     name = input("请输入用户名:")
    23     password = int(input("请输入密码:"))
    24     with open('msg.txt', encoding='utf-8') as f:
    25         for line in f:
    26             if name == line.split('|')[0] and password == int(line.split('|')[1]) :
    27                 salary = int(input("请输入您的总资产:"))
    28                 with open('goods.txt',encoding='utf-8') as g:
    29                     i = 1
    30                     goods = []
    31                     for line in g:
    32                         dic = eval(line)
    33                         print('商品编号:',i , dic['name'],'----->',dic['price'])
    34                         goods.append(dic)
    35                         i += 1
    36 
    37                     while True:
    38                         num = input('选择商品序列号[按q 退出]:')
    39                         if num != 'q':
    40                             num = int(num)
    41                             if goods[num - 1]['price'] < salary:
    42                                 salary = salary - goods[num - 1]['price']
    43                                 shopping_car.append(goods[num - 1]['name'])
    44                             else:
    45                                 print("你的余额不足,请充值")
    46                                 salary = input('输入充值额度[按q 退出]:')
    47                                 if salary == 'q':
    48                                     break
    49                                 else:
    50                                     salary = int(salary)
    51                                 continue
    52 
    53                         else:
    54                             print('谢谢惠顾')
    55                             break
    56                     print('你的余额:', salary)
    57                     print('购买的商品:', shopping_car)
    58 
    59                     flag = True
    60                     break
    61             elif num < 3:
    62                 print("输入有误,请重新输入!")
    63             elif num == 3:
    64                 print("刷新重试")
    65         if flag:
    66             break
    67     num += 1

    msg.txt: 
      jack|123

    goods.txt

      
    {"name": "电脑", "price": 1999}
    {"name": "鼠标", "price": 10}
    {"name": "游艇", "price": 20}
    {"name": "美女", "price": 998}


    为什么要坚持,想一想当初!
  • 相关阅读:
    指针类型
    集合类型
    VMware打开虚拟机没反应的解决方案(全面汇总)
    redis主从|哨兵|集群模式
    MYSQL一次千万级连表查询优化
    StackExchange.Redis通用封装类分享
    Redis-五种数据类型解析
    Redis并发问题
    C#委托和事件
    Invoke 和 BeginInvoke 的区别
  • 原文地址:https://www.cnblogs.com/JerryZao/p/8660609.html
Copyright © 2011-2022 走看看