Python学习的第二周作业--购物车

作业需求: 
(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             break
19         else:
20             print ("输入密码错误,请重新输入")
21             password = input ("请重新输入密码:")
22             continue
23     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         break
33 
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 =True
66         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)-1
84         if list[number_buy][1]<salary:
85             salary=salary-int(list[number_buy][1])
86             shoppinglist_new.append(list[number_buy])
87         else:
88             print ("\033[31;1m你的余额不足\033[0m")
购物车

 

posted @ 2017-04-10 17:05  Garrett0220  阅读(198)  评论(0编辑  收藏  举报
levels of contents