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()

时间: 2024-10-09 18:37:44

python day2 购物车作业的相关文章

(转)Python作业day2购物车

Python作业day2购物车 原文:https://www.cnblogs.com/spykids/p/5163108.html 流程图: 实现情况: 可自主注册, 登陆系统可购物,充值(暂未实现),查询余额. 撸了两天一夜的代码,不多说,直接上码,注释神马的后面再说 按 Ctrl+C 复制代码 按 Ctrl+C 复制代码 分类: python作业 标签: 购物车

python基础周作业

python基础周作业 1.执行python脚本的两种方法 脚本前面直接指定解释器 在脚本开始前声明解释器 2.简述位,字节的关系 每一个字节占用八个比特位 3, 简述ascii.unicode.utf- ‐8.gbk的关系 utf--‐8 <-- unicode <-- gbk <-- ascii 按此方向兼容 4..请写出"李杰"分别用utf- ‐8和gbk编码所占的位数 "李杰" 占用utf -8 占6字节 , gbk 占用4字节 5.pyt

Python学习day5作业-ATM和购物商城

Python学习day5作业 Python学习day5作业 ATM和购物商城 作业需求 ATM: 指定最大透支额度 可取款 定期还款(每月指定日期还款,如15号) 可存款 定期出账单 支持多用户登陆,用户间转帐 支持多用户 管理员可添加账户.指定用户额度.冻结用户等 购物车: 商品信息- 数量.单价.名称 用户信息- 帐号.密码.余额 用户可充值 购物历史信息 允许用户多次购买,每次可购买多件 余额不足时进行提醒 用户退出时 ,输出当次购物信息 用户下次登陆时可查看购物历史 商品列表分级显示 1

python实现购物车:新手版

#!/user/bin/env python#一个购物车的程序'''需求: 启动购物车,让用户输入工资,然后打印商品列表 允许用户根据商品编号购买商品 用户选择商品后,检测余额是否够,够就直接扣款,否则提醒 可以随时退出,退出时打印已购买商品和余额''' sal=input("请输入你的工资:")show=[("car","1000"),("dog","2000"),("cat",&qu

Python学习day3作业

Python学习day3作业 days3作业 作业需求     HAproxy配置文件操作 根据用户输入,输出对应的backend下的server信息 可添加backend 和sever信息 可修改backend 和sever信息 可删除backend 和sever信息 操作配置文件前进行备份 添加server信息时,如果ip已经存在则修改;如果backend不存在则创建:若信息与已有信息重复则不操作 [x] 博客 [x] 查询backend下的server信息 [x] 添加backend和se

SPOJ Python Day2: Prime Generator

2. Prime Generator 任务很简单,生成m到n之间的所有质数.一个比较常见的思路是: 自然数$1, 2, -, N$中的最大的质因子要小于$\sqrt{N}$.所以用m到n中的每一个数去试除1到$\sqrt{n}$中的所有数.能整除就是合数,全不能整除就是质数. 但是这么做会超时.. 一般生成质数有一个常用的算法:筛法 http://zh.wikipedia.org/wiki/%E5%9F%83%E6%8B%89%E6%89%98%E6%96%AF%E7%89%B9%E5%B0%B

SPOJ Python Day2: Small factorials

24. Small factorials 这题目非常简单,求"小整数(1-100)"的阶乘.题目规定了时间和程序大小. 所以能想到的最简单的循环,递归,和全算出来查表都是不行的. 正确的方法的算法,如这个博客所示,写的非常清楚了,数组进位法: http://www.open-open.com/home/space-135360-do-blog-id-9620.html 作者的例子举的也非常清晰. 但是...神奇的python有reduce函数,我也惊讶这个函数算阶乘这么快,直接可以AC

python 图像归一化作业代码代编程代写图python作业

python 图像归一化作业代码代编程代写图python作业from PIL import Image import os import sys import numpy as np import time from sklearn import svm # 获取指定路径下的所有 .png 文件 def get_file_list(path): return [os.path.join(path, f) for f in os.listdir(path) if f.endswith(".png&

python之购物车升级1

python之购物车升级1 源码: li = [{'name':'西瓜','price':30},{'name':'苹果','price':10},{'name':'香蕉','price':20}] print('欢迎光临') shopping_car = {} my_money = input('请输入你当前的资金:') if my_money.isdigit() and int(my_money) >0: for i,k in enumerate(li): print('序号{},商品{},