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