作业需求: (1)启动程序后,输入用户名密码后,如果是第一次登录,让用户输入工资,然后打印商品列表 (2)允许用户根据商品编号购买商品 (3)用户选择商品后,检测余额是否够,够就直接扣款,不够就提醒 (4)可随时退出,退出时,打印已购买商品和余额 (5)在用户使用过程中, 关键输出,如余额,商品已加入购物车等消息,需高亮显示 (6)用户下一次登录后,输入用户名密码,直接回到上次的状态,即上次消费的余额什么的还是那些,再次登录可继续购买 (7)允许查询之前的消费记录
1 #!/usr/bin/env python 2 # -*- coding:utf-8 -*- 3 # Author:Ahappier 4 5 set = False 6 f =open ("user","r+",encoding="utf-8") #读取user文件 7 f_str = str(f.read()) #文件内容转字符串 8 for line in f_str: 9 f_str_str= str(f_str) #逐行读取10 data = eval(f_str_str) #字符串转字典11 name = input ("请输入账号:")12 password = input ("请输入密码:")13 while True:14 if name in data: #判断用户名在字典15 if password in data[name]: #判断密码在字典内与用户对应16 salary = int (data[name][password])17 print ("\033[31;1m欢迎登陆,当前余额:%s\033[0m"%salary)18 break19 else:20 print ("输入密码错误,请重新输入")21 password = input ("请重新输入密码:")22 continue23 else:24 salary_p ={} #定义密码、工资空字典25 salary_input = input("请输入你的工资:")26 salary = int (salary_input) #输入的工资转成数字27 salary_p[password] = salary #密码与工资对应28 data[name] =salary_p #用户名和密码 工资对应29 f.seek(0) #文件读取移到开头30 f.write(str(data)) #写入字典31 f.tell() #返回到当前位置32 break33 34 h =open("history","r+",encoding="utf-8")35 h_str =str(h.read())36 for line in h_str:37 h_str_str=str(h_str)38 data1=eval(h_str_str) #把history文件内容转成字典39 if name not in data1:40 data1[name]=[] #如果用户名第一次登陆名字不在字典内,历史记录为空41 shoppinglist = data1[name]42 shoppinglist_new =[] #再次购物的记录为空43 choose = input ("\033[32;1m是否需要查询历史购物记录(y/n)\033[0m") #询问是否查询历史记录44 if choose == "y":45 print("----历史购物记录-----")46 print (shoppinglist)47 48 49 list =[50 ["Apple Iphone",6000],51 ["Apple Watch",4600],52 ["Books",600],53 ["Bike",750],54 ["cups",120],55 ["Apple",50],56 ["banana",60],57 ] #购物清单58 59 while not set:60 print ("----商品清单----")61 for index,i in enumerate(list):62 print(index,i) #输入商品清单63 number = input("输入你选择的商品标号") #选择编号64 if number =="q": #当输入q时,退出,并打印清单65 set =True66 data[name][password]= salary #工资给对应的用户密码位置67 f.seek(0)68 f.write(str(data)) #用户信息写入到文件中69 f.tell()70 print("----已购商品清单----")71 print (shoppinglist_new) #打印清单72 print ("\033[31;1m你的余额:%s\033[0m"%salary)#打印余额73 shoppinglist.extend(shoppinglist_new)#本次购物记录追加到购物列表中74 data1[name]=shoppinglist #购物列表和用户名对应75 h.seek(0)76 h.write(str(data1)) #购物记录写入文件77 h.tell()78 elif number.isdigit == False:79 print("\033[31;1m输入的不是编号,请重新输入\033[0m")80 elif int(number)>int(len(list)) or int(number)<0:81 print("\033[31;1m你购买的商品不在清单中\033[0m")82 else:83 number_buy =int(number)-184 if list[number_buy][1]