博客园 首页 私信博主 显示目录 隐藏目录 管理 动画

python day2 购物车作业

话不多说上代码。就是有一个小问题。注释刚刚已经打上去了

#定义一个购物列表本来想存在文件中,但是后面碰到文件的一个问题
shopping_list = [
        ['Iphone 6s plus',5800],
        ['Lumia',3800],
        ['Charge',45],
        ['Data line',35],
        ['MI 5 PRO',2299],
        ['MX4',1999],
]

import time

#  '%Y-%m-%d %X' 代表着 年-月-日- 分钟秒
time_format= '%Y-%m-%d %X'
    #用time 模块 记录时间
time_format=time.strftime(time_format)

print(time_format)

#定义一个函数
def shooping():

    #消费金额的变量
    total = 0

    #工资
    salary = 100000
    #定义一个购物的空列表
    shop_list = []
    #进入循环
    while True:
        welcome_1 = "欢迎使用ATM购物商城"
        we_1 = welcome_1.center(30, '*')
        print(we_1)
        choice_1 = "1.注册 2.登陆 q.退出"
        ch_1 = choice_1.center(32, '*')
        exit_1 = "谢谢使用,欢迎下次光临"
        ex_1 = exit_1.center(30, '*')
        error_1 = "您输入的用户已存在,请重新输入"
        e_1 = error_1.center(30, '-')
        error_2 = "密码不能为空,请重新输入"
        e_2 = error_2.center(30, '-')
        error_3 = "您输入的密码太短,请重新输入"
        e_3 = error_3.center(30, '-')
        error_4 = "您的输入有误, 请重新输入"
        e_4 = error_4.center(26, '*')
        error_5 = " 您的账号已被锁定,请联系管理员 "
        e_5 = error_5.center(12, '*')
        print(ch_1)
        sr_1 = input("请输入你选择的项目:")

        #进入1 表示注册新用户
        if sr_1 == '1':
            while True:

                #查看文件中有没有这个用户
                with open('user.txt','r') as f_1:
                    #一行一行匹配
                    temp = f_1.readlines()
                    temp2=[]

                for line in temp:
                    line=line.strip().split(':')
                    temp2.append(line[0])
                user_choie=input("请输入你需要注册是用户名:")
                success_1 = "成功创建用户:%s" % (user_choie)
                #查看这个输入的用户是否存在已经注册的文件中
                if user_choie in temp2:
                    print(e_1)
                elif user_choie == 'exit':
                    break
                #如果没有就输入密码
                else:
                    password=input("请输入您的密码():")
                    password2=input("请再次输入你的密码:")
                    #两次密码一定要一样
                    if password==password2:
                        lenpass1 = len(password2)
                        lenpass=len(password)
                    else:
                        print("两次密码不正确。请重新输入")
                        break
                    #密码长度为0 就提示
                    if lenpass==0 and lenpass1 ==0 :
                        print(e_2)
                    elif lenpass>7 and lenpass1>7:

                        #如果符合条件就把用户添加到user.txt 中。

                        with open('user.txt','a') as f_2:
                            w_1='%s:%s:%s\n' %(user_choie,password,salary)
                            f_2.write(w_1)
                            s_1=success_1.center(30,'-')
                            print(s_1)
                            break

                    else:
                        print(e_4)

        #如果用户输入的是2 就是登录
        elif sr_1=='2':
            flag=False
            while True:

                user_choie2=input("请输入您的用户名:")
                f_3=open('lock.txt','r')
                #with open('lock.txt','r') as f_3:

                #查看这个用是否被锁定
                for line2 in f_3.readlines():
                    line2=line2.strip()
                    if user_choie2 in line2:
                        print("账户已经被锁定")
                        flag=True
                        f_3.close()
                        break
                if flag==True:
                    break
                #如果没有锁定就进入这个文件中查询
                u=open('user.txt','r')
                for uline in u.readlines():
                    #这个文件去除空格和其他的,已: 作为分割
                    user,password,mony=uline.strip().split(':')
                    #判断输入的用户名和文件中的用户名是否一样
                    if user_choie2 == user:
                        i=0
                        #如果一样就进入输入密码阶段
                        while i<3:
                            user_choie3=input("请输入你的密码:")
                            i +=1
                            if user_choie3 == password:
                                print('欢迎%s登陆在线购物平台' % user_choie2)
                                flag=True
                                u.close()
                                break
                                #如果密码输入错误。就显示还有几次机会
                            else:
                                if i>=3:
                                    #如果输入次数超过3次就将此用户锁定
                                    with open('lock.txt','a') as f_4:
                                        f_4.write(user_choie2+'\n')
                                        f_4.close()
                                        exit("试了太多次,将被锁定,请联系管理员")
                                print("输入错误还是有%s次机会"%(3-i))
                        break
                else:
                    print("用户输入错误,请重新输入")
                    break

                #用户登录之后就会出现这几个选项
                while True:
                    print("1.购物 2.查看购物车 3.查询余额 4.充值 b.返回登陆 q.退出")
                    print("------------------------------------------------")
                    choice_2=input("请你输入你需要选择的序号")
                    flag_1 = False


                    #进入购物选项
                    while True:
                        if choice_2 == '1':
                            while True:
                                #循环出 shopping_list 列表中的所有数据
                                for index, line4 in enumerate(shopping_list):
                                    print(index,line4[0],line4[1])
                                print('----------------------')
                                print("c.查看购物车 b.返回 q.退出")
                                print("-------------------------")

                                choice_3=input("请输入你需要购买的商品序号").strip()

                                #判断输入的是否为数字
                                if choice_3.isdigit():
                                    choice_3=int(choice_3)   #如果为数字就改为int
                                    p_price=shopping_list[choice_3][1]  #查询当前商品的价格
                                    # 如果商品的价格小 yu 工资 就把当前的商品加入到空列表当中
                                    if p_price <= salary:
                                        shop_list.append(shopping_list[choice_3])
                                        #再把每次购买的商品的价格一起加起来
                                        total+=p_price
                                        #扣款
                                        salary-=p_price
                                        #把记录记录到文件当中
                                        f_6 = open('log.txt', 'a+',encoding="utf-8")
                                        p_item=shopping_list[choice_3]
                                        f_6.write("%s商品是:%s\n"%(time_format,p_item))
                                        #时刻把商品刷入硬盘当中.
                                        f_6.flush()
                                        print("你购买的商品是%s 你的余额为%s"%(p_item,salary))

                                        #如果商品价格大于工资,就买不起
                                    else:
                                        print("------------------")
                                        print("你的余额不足")
                                        print("-----------------")
                                    #输入c之后可以查看购物车的商品
                                elif choice_3 =='c':
                                    while True:
                                        print("-------购物车-------")
                                        #print(shop_list)
                                        for index2,line5 in enumerate(shop_list):
                                            print(index2,line5)
                                        print("已消费金额%s"%(total))
                                        print("剩余金额%s"%(salary))
                                        print("----------------------")
                                        print("d.删除商品 b.返回购物 q.结算退出")   #这里有几个选项
                                        print("----------------------")
                                        user_choie4=input("请选择操作>>>>")
                                        #进入删除商品选项
                                        if user_choie4 =='d':
                                            print("-------------------------")
                                            for index2, line5 in enumerate(shop_list):
                                                print(index2, line5)
                                            print("输入数字为删除商品,输入字母b为返回购物车")
                                            print("-------------------------")
                                            while True:

                                                user_choie5=input("请选择:")
                                                #首先输入的一定要为数字。这样子好做判断
                                                if user_choie5.isdigit():

                                                    user_choie5=int(user_choie5)
                                                    # 查看删除的尚品的价格
                                                    d_price=shop_list[user_choie5][1]
                                                    #再从shop_list 列表中删除该选项
                                                    shop_list.remove(shop_list[user_choie5])
                                                    #消费金额减去删除尚品
                                                    total-=d_price
                                                    #工资加起删除尚品
                                                    salary+=d_price
                                                    print("你删除是商品是%s 可用的余额为%s"%(shop_list[user_choie5][0],salary))
                                                    print("-----------------------")
                                                elif user_choie5=='b':
                                                    break
                                        elif user_choie4 =='b':
                                            flag=True
                                            break

                                            #打印出已经购买了的尚品
                                        elif user_choie4=='q':
                                            print("-------购物清单--------")
                                            for k,v in enumerate(shop_list):
                                                print(k,v)
                                            print("已消费金额%s" % (total))
                                            print("剩余金额%s" % (salary))
                                            print("----------------------")
                                            exit(0)
                                        else:
                                            print("输入错误请重新输入")
                                    if flag==True:

                                        break

                                elif user_choie3 == 'b':
                                    flag = True
                                    break

                                elif user_choie3 =='q':
                                    exit("bye bye ")

                                else:
                                    print("输入错误。请重新输入>>>")

                        #当输入2的时候打印出购物车中是尚品
                        elif choice_2 =='2':
                            print("-------购物车-------")
                            for index2, line6 in enumerate(shop_list):
                                print(index2, line6[0], line6[1])
                            print("已消费金额%s" % (total))
                            print("剩余金额%s" % (salary))
                            print("----------------------")
                            break
                        #输入3的时候查询的是自己的余额 这里有点问题。
                        elif choice_2=='3':
                            with open("user.txt","r") as f_7:
                                for i in f_7:
                                    user,password,mony=i.strip().split(':')
                                    mony=int(mony)
                                    print(mony)
                                    flag=True
                                    break
                                break
                                
                                #这里添加不了
                        elif choice_2 == '4':
                            z=0
                            while z < 1:
                                user_choie6=int(input("请输入金额:"))

                                user_pass=input("请输入密码:")
                                m=open("user.txt",'r+')
                                m_1=m.readlines()
                                for mline in m_1:
                                    user,password,mony=mline.strip().split(':')
                                    if user_pass == password:
                                        m_2=(user_choie6+int(mony))
                                        w_2='%s:%s:%s\n'%(user,password,m_2)
                                        m.write(w_2)
                                        print("充值成功!!!!")
                                        print(mony)
                                        flag=True
                                        break
                                    continue
                                break
                            if flag==True:
                                break
                        elif choice_2=='b':
                            flag=True
                            break

                        elif choice_2=='q':
                            exit(ex_1)

                if flag==True:

                    break
        elif sr_1 =='q':
            exit("Bye bye ")


        else:
            print("请重新输入")
            print("                                 ")








shooping()
View Code

 

posted @ 2017-11-24 23:11  crazy_py  阅读(648)  评论(0编辑  收藏  举报