【18】Python半成品购物车

发布时间:2019-09-11 07:44:06编辑:auto阅读(1421)

    #!/usr/bin/env python
    #Author:Li QW

    '''
    程序需求:
    1、启动程序后,输入用户名密码后,如果是第一次登录,让用户输入工资,然后打印商品列表
    2、允许用户根据商品编号购买商品
    3、用户选择商品后,检测余额是否够,够就直接扣款,不够就提醒
    4、可随时退出,退出时,打印已购买商品和余额
    5、在用户使用过程中, 关键输出,如余额,商品已加入购物车等消息,需高亮显示
    6、用户下一次登录后,输入用户名密码,直接回到上次的状态,即上次消费的余额什么的还是那些,再次登录可继续购买(未实现)
    7、允许查询之前的消费记录

    流程图可供参考

    【18】Python半成品购物车
    【18】Python半成品购物车

    import sys
    product_list=[
        ('Iphone',7000),
        ('Watch',333),
        ('Water',10),
        ('coffer',54),
        ('Xiaomi',2490),
    ]
    
    ###将文件转换成字典
    f=open('user.txt','r')
    user_lis=f.read()
    f.close()
    user_info=user_lis.split("#")
    user_dict={}
    ###工资
    salary=10000
    sa=[]
    ###历史购物车
    show_shopping_log=[]
    ###购物车
    add_cart=[]
    
    for item in user_info:
        item_list=item.split(":")
        user_dict[item_list[0]]=item_list[-1]
        print(user_dict)
    
    while True:
        ####用户部分####
        print("输入1:用户注册,输入2:老用户登录,输入q退出")
        login_num=input("请选择: ")
        if login_num.isdigit():
            login_num=int(login_num)
            if login_num==1:
                while True:
                    user_1=input("输入注册用户名:")
                    if user_1 in user_dict:   ###判断注册用户是否存在,存在则退出当前循环
                        print("用户已存在,请重新注册")
                        continue
                    else:
                        pass_1=input("请设置密码:") ###设置新用户密码
                        f=open('user.txt','a+')  ###将注册用户与密码保存账户文件中(a+,追加内容,不会覆盖原本内容)
                        f.write("#%s:%s"%(user_1,pass_1))
                        f.close()
                        a1="恭喜,注册成功"
                        a11=a1.center(20,"-")
                        print(a11)
                        break  ####注册成功,返回初始界面
            elif login_num==2:
                while True:
                    with open('user.txt','r') as f:
                        user_lis2=f.read()
                        user_info2=user_lis2.split("#")
                        user_dict1={}
                        for item1 in user_info2:
                            item_list1 = item1.split(":")
                            user_dict1[item_list1[0]] = item_list1[-1]
                            print(user_dict1)
                        user_2=input("输入用户名登录:")
                        if user_2 in user_dict1:
                            pass_2=input("输入密码:")
                            if pass_2 == user_dict[user_2]:
                                a2="登录成功,欢迎进入"
                                a22=a2.center(20,'-')
                                print(a22)
                                while True:
                                    print("选择a购物/选择b查询余额/选择c充值/选择q退出")
                                    print("------------------------------------------------")
                                    choice_1=str(input("根据提示选择模式>>>"))
                                    if choice_1 =="a": ###购物模式
                                        while True:
                                            for index,t in enumerate(product_list):###添加索引
                                                print(index,t)  #打印商品
                                            print("------------------------------")
                                            print("选择a查询购物车、选择b返回、q退出")
                                            user_choice1=input("选择购买的商品序号或进入其它菜单>>>>>")  #选择购买的商品
                                            if user_choice1.isdigit():   #修整字符类型
                                                user_choice1=int(user_choice1)
                                                if 0<=user_choice1<len(product_list): #不在范围内,表示商品不存在
                                                    p_item = product_list[user_choice1]
                                                    print(p_item)
                                                    if p_item[1] <=salary:  ###判断余额
                                                        print("您已购买商品")
                                                        salary -= p_item[1] #减去金额
                                                        add_cart.append(p_item)  ###加入购物车
                                                        show_shopping_log=add_cart.copy()  ###拷贝到购物历史中
                                                        print("您已购买\033[31;1m{}\033[0m,余额还剩\033[31;1m{}\033[0m".format(p_item,salary))
                                                        continue
                                                    else:
                                                        print('----------已购商品---------')
                                                        print("-----退出a购物模式------")
                                                        print(show_shopping_log)
                                                        break
                                                else:
                                                    print("----------------------------")
                                                    print("您输入的商品不存在,请重新购买")
                                            elif user_choice1=="a": #####a查询购物车
                                                print("-----购物车------")
                                                print("已购买",show_shopping_log)
                                            elif user_choice1 == 'b':  ###退出当前模式,并打印已购买商品。
                                                print("                      ")
                                                print('返回-----已购买商品如下')
                                                print(add_cart)
                                                break
                                            elif user_choice1=='q': ###退出购物
                                                sys.exit()
                                    elif choice_1=="b": ###b查看余额
                                        print("-----还剩\033[31;1m{}\033[0m-----".format(salary))
                                        continue
                                    elif choice_1=="c":  ##c充值
                                        while True:
                                            print("您的余额不足,是否充值。(充值1/返回b)")
                                            salary_11 = input("请确认是否充值:")
                                            if salary_11.isdigit():
                                                salary_11 = int(salary_11)
                                                if salary_11 == 1:
                                                    print("------输入充值金额-------")
                                                    salary_22 = int(input("充值>>>"))
                                                    salary += salary_22
                                                    print("充值完成后,还剩\033[31;1m{}\033[0m".format(salary))
                                                    continue
                                            elif salary_11=="b":
                                                break
                                    elif choice_1=="q":  ###退出购物
                                        sys.exit()
    
                            else:
                                a3="密码错误,请重新输入"
                                print(a3.ljust(13,"!"))  #字符串补位
                                continue
                        else:
                            a4="用户不存在,请重新输入"
                            print(a4.ljust(14,'!'))
                            continue
        elif login_num=='q':
            sys.exit()

关键字