zoukankan      html  css  js  c++  java
  • python购物车程序

    python购物车程序

    数据结构: goods = [ {"name": "电脑", "price": 1999}, {"name": "鼠标", "price": 10}, {"name": "游艇", "price": 20}, {"name": "美女", "price": 998}, ...... ] 功能要求: 基础要求: 1、启动程序后,输入用户名密码后,让用户输入工资,然后打印商品列表 2、允许用户根据商品编号购买商品 3、用户选择商品后,检测余额是否够,够就直接扣款,不够就提醒 4、可随时退出,退出时,打印已购买商品和余额 5、在用户使用过程中, 关键输出,如余额,商品已加入购物车等消息,需高亮显示 扩展需求: 1、用户下一次登录后,输入用户名密码,直接回到上次的状态,即上次消费的余额什么的还是那些,再次登录可继续购买 2、允许查询之前的消费记录

     1 #! -*- coding:utf-8 -*-
     2 # 购物车程序
     3 
     4 goods = [
     5     {"name": "电脑", "price": 1999},
     6     {"name": "鼠标", "price": 10},
     7     {"name": "游艇", "price": 20},
     8     {"name": "美女", "price": 998},
     9 ]
    10 data = {}
    11 while True:
    12     username = input("用户名: ")
    13     password = input("密码: ")
    14     n = open("data.txt", "a+")  # 打开文件
    15     n.seek(0, 0)
    16     d = n.read()
    17     n.close()
    18     if d == "":
    19         d += "{}"
    20     data = eval(d)  # 字符串转字典
    21     if username in data:  # 判断用户是否存在
    22         if password == data[username][0]:  # 判断密码是否正确
    23             wages_1 = data[username][1]  # 读取余额
    24             print("登录成功!")
    25             f = username + ".txt"
    26             record = open(f, "a+")  # 打开消费记录文件
    27             record.seek(0, 0)
    28             consume = record.read()  # 消费记录
    29             record.seek(0, 2)
    30             break
    31         else:
    32             print("密码错误!")
    33             enumerate
    34     else:
    35         wages = input("工资: ")
    36         if wages.isdigit():
    37             wages_1 = int(wages)  # 存放余额
    38             data[username] = [password, wages_1]  # 添加用户信息,hex加密密码
    39             f = username + ".txt"
    40             record = open(f, "a+")  # 打开消费记录文件
    41             consume = ""
    42             break
    43         else:
    44             print("您输入的工资有误,请重新输入!")
    45 
    46 list_0 = []  # 存放所有商品
    47 list_1 = []  # 存放已购买的商品
    48 for info in goods:
    49     list_0.append([info['name'], info['price']])  # 把商品信息添加到列表
    50 while True:
    51     print('-' * 7, " 商品列表 ", '-' * 7)
    52     for index, p in enumerate(list_0):
    53         print("%s.%s   %s" % (index, p[0], p[1]))  # 打印商品列表
    54     print("请在下方输入商品编号,或 n 查看消费记录,或 q/Q 退出
    ", '-' * 26)
    55     select = input(">>> ")
    56     if select == "q" or select == "Q" or select == "n":
    57         if select == "n":
    58             print('-' * 7, " 消费记录 ", '-' * 7)
    59             print(consume)
    60             break
    61         else:
    62             print('-' * 6, " 已购商品列表 ", '-' * 6)
    63             for index_1, p_1 in enumerate(list_1):
    64                 print("%s.%s   %s" % (index_1, p_1[0], p_1[1]))  # 打印已购商品列表
    65                 c = p_1[0]
    66                 consume += str(c)
    67                 consume += "
    "
    68             print("余额: ", wages_1, "
    ", '-' * 26)
    69             nn = open("data.txt", "w")
    70             dd = str(data)  # 字典转字符串
    71             nn.write(dd)
    72             nn.close()  # 关闭文件
    73             record.write(consume)  # 写入消费记录
    74             consume = ""
    75             record.close()
    76             break
    77     else:
    78         if select.isdigit():  # 判断是否是数字
    79             select = int(select)
    80             if select <= 3:
    81                 price = list_0[select][1]  # 以select为索引获取对应的商品价格
    82                 if wages_1 >= price:  # 判断余额是否大于或等于商品价格
    83                     wages_1 = wages_1 - price  # 扣钱
    84                     list_1.append(list_0[select])  # 把购买的商品添加到已购商品列表
    85                     data[username][1] = wages_1  # 修改余额
    86                     print("购买成功!")
    87                 else:
    88                     print("余额不足!")
    89             else:
    90                 print("没有这个选项,请重新输入!")
    91         else:
    92             print("没有这个选项,请重新输入!")
  • 相关阅读:
    Webpack 入门指迷--转载(题叶)
    浏览器工作原理理解
    Knockout.js初体验
    node.js链接mysql
    2020年度春季学习总结--第二周
    Python 爬取 热词并进行分类数据分析-[安全性改造]
    以 CheatEngine 为例的六个质量属性
    2020年度春季学习总结--第一周
    软件架构师如何工作-个人见解
    Steam 游戏 《Crashlands(崩溃大陆)》修改器制作-[先使用CE写,之后有时间的话改用CheatMaker](2020年寒假小目标12)
  • 原文地址:https://www.cnblogs.com/shihun/p/9226765.html
Copyright © 2011-2022 走看看