首页 > 代码库 > 17.python购物车程序作业

17.python购物车程序作业

购物车程序作业需求:

1、启动程序后,输入用户名密码后,如果是第一次登录,让用户输入工资,然后打印商品列表

2、允许用户根据商品编号购买商品

3、用户选择商品后,检测余额是否够,够就直接扣款,不够就提醒

4、可随时退出,退出时,打印已购买商品和余额

5、在用户使用过程中, 关键输出,如余额,商品已加入购物车等消息,需高亮显示

6、用户下一次登录后,输入用户名密码,直接回到上次的状态,即上次消费的余额什么的还是那些,再次登录可继续购买

7、允许查询之前的消费记录

代码如下:

# Author:pengp
#!/usr/bin/env python
# -*- coding: utf-8 -*-

with open("user_shopping","r",encoding="utf-8") as f:
    yj = eval(f.read())

while True:
    username = input("请输入用户名: \033[0m")
    passwd = input("请输入密码: \033[0m")
    if username == yj["name"] and passwd == yj["passwd"]:
        print("您的资金余额为:\033[1;31;0m%s\033[0m"%(yj["salary"]))
    else:
        print("用户名或密码错误")
        exit()

    while True:
        pay = input("请问要充值吗? (y/n):")
        if pay == "y":
            pay_rmb =  input("请输入需要充值的金额: ")
            salary_new = yj["salary"] + int(pay_rmb)
            yj["salary"] = salary_new
            # yj_pay_salary = (yj["salary"])
            print("现在余额为\033[1;31;0m%d\033[0m" %(yj["salary"]))
            with open("user_shopping","w",encoding="utf-8") as ff:
                ff.write(str(yj))
        elif pay == "n":
            f = open(product_list, r)
            product_list = f.readlines()
            while True:
                print("product_list".center(50, -))
                for index,item in enumerate(product_list):
                    item = item.split()
                    print(index,item)
                user_choice = input("请选择购买商品编码,退出请按e: ")
                if user_choice.isdigit():
                    user_choice = int(user_choice)
                    if user_choice < len(product_list)                             and user_choice >= 0:
                        p_item = product_list[user_choice].split()
                        if int(p_item[1])<yj["salary"]:
                            salary_banance = yj["salary"] - int(p_item[1])
                            yj["salary"] = salary_banance
                            yj["shopping_list"].append(p_item)
                            with open("user_shopping","w",encoding="utf-8") as f_new:
                                f_new.write(str(yj))
                            print("商品%s已购买"%p_item)
                        else:
                            print("余额不足,请先充值")
                            break
                    else:
                        print("商品编号%s不存在,请重新输入:"%user_choice)
                        continue
                elif user_choice == e:
                    print(shopping_list.center(50,-))
                    for index,p in enumerate(yj["shopping_list"]):
                        print(index,p)
                    exit("您的余额为:%s,欢迎下次光临" % (yj["salary"]))

 

17.python购物车程序作业