1 #!usr/bin/env python

2 #-*-coding:utf-8-*-

3 #Author calmyan

4 importtime,sys,os5 user_file=open("user_file.txt",'r+',encoding='utf-8')#打开用户列表文件

6 #with open('user_file.txt','r+',encoding='utf-8') as user_file:

7 user_list=eval(user_file.readline())#转换用户文件中的字符串 user_list:注册用户列表

8 lock_name=open('lock_name.txt','r+',encoding='utf-8')#打开锁定用户列表文件

9 lock_list=eval(lock_name.readline())#转换锁定用户文件中的字符串

10

11

12 defregis():13 whileTrue:14 name=input("请输入您要注册的用户名:")15 if name not inuser_list:16 print("恭喜!该用户名可以被注册!>>>")17 password=input('请输入密码:')18 password2=input('请再次确认密码:')19 if password==password2:20 name_infor='''恭喜您用户注册成功!21 用户名:{name}22 密 码:{password}23 请牢记您的用户名与密码24 '''

25 print(name_infor.format(name=name,password=password2))26 user_list[name]=password2#增加注册用户到字典中

27 user_file.seek(0)#称到最前

28 user_file.write(str(user_list))#写入文件

29 user_file.flush()#即可保存

30

31 #confirm()

32 break

33 else:34 print("该用户名已经被注册啦!请重新来过<<

36 continue

37

38

39

40 def userchar(_user_name):#检测用户名的函数

41 whileTrue:42 if _user_name in user_list and _user_name not in lock_list:#判断用户是否存在并正常

43 return True#存在返回真

44 elif _user_name in user_list and _user_name in lock_list:#判断用户是否被锁定

45 print('您的用户已经被锁定,请联系商家解锁!')46 break

47 else:48 reg=input('您输入用户不存在,请先注册!按\033[31;1m Q/q\033[0m 直接退出 \033[31;1m Y/y\033[0m 确定注册,其它键返回!')49 if reg=='y' or reg=='Y':50 regis()#用户注册函数

51 print('是否直接退出商城?')52 break

53 elif reg=='q' or reg=='Q':54 print("您已经退出!")55 exit()56 else:57 break

58

59 def confirm():#退出确认函数

60 qu=input("是否退出!按\033[31;1mY/y\033[0m退出? 按其它键返回<<

64 else:65 pass

66

67 defuser_pass():68 bool=True#定义退出循环条件变量

69 whilebool:70 print("用户登陆".center(30,'-'))71 _user_name=(input('请输入用户名:'))72 if userchar(_user_name.strip()):#运行检测用户名的函数判断,去除两边空格

73 count=3#定义锁次数

74 while count>0 :#如果密码错误次数超过退出密码输入

75 #password=getpass.getpass('请输入密码:')

76 password=input('请输入密码:')77 if password==user_list[_user_name]:#密码通过验证结束循环

78 print("密码通过验证")79 bool=False80 print("欢迎您 \033[32;1m%s\033[0m 您已经登陆成功!" %_user_name)81 return _user_name#返回用户名

82 else:83 count -=1#次数减少

84 print("密码错误请重试,剩余:\033[31;1m%s\033[0m次!"%count)85 pass

86 else:87 print("\033[31;1m超出所试次数,账户已锁定!请联系商家!\033[0m")88 lock_list.append(_user_name)#将用户名加出锁定列表

89 lock_name.seek(0)#指针移动到开头,以免产生多个元组

90 lock_name.write(str(lock_list))#写入锁定用户文件

91 lock_name.tell()#获取当前指针,以免产生多个元组

92 lock_name.close()#关闭锁定用户文件

93 confirm()#退出确认函数

94 #continue#退回到输入用户名的位置

95 else:#如果用户名出错新来过

96 confirm()97 pass

98

99 def infor():#打开用户信息函数

100 with open('user_infor','r+',encoding='utf-8') as user_infor:#打开用户购物信息文件

101 infor_list=eval(user_infor.readline())#转换文件的字符串

102 returninfor_list103

104 def history_user():#用户购物历史记录函数

105 with open('history','r',encoding="utf-8") as user_history:#读取用户文件

106 history_list=eval(user_history.readline())#用户购物信息

107 returnhistory_list108

109 def history():#用户消费记录函数

110 history_list=history_user()#用户购物历史记录

111 history=history_list[_user_name]#用户购物记录信息

112 print('您的购物记录如下:')113 for k,v in history.items():#转为列表进行输出

114 print(k,v)#输出购物记录

115 choose_index=input("请选择您想要的操作:按\033[32;1mq/Q\033[0m直接退出商城!其它键返回!")116 if choose_index=='Q' or choose_index=='q':117 choo=input('''>>>>>\033[42;1m您确定出退商城吗?\033[0m118 如果您已经添加商品,此操作将不进行结算,119 您就无法将心爱的东东买回家了,按\033[31;1my/Y\033[0m确定直接退出!''')120 if choo=='y'or choo=='Y':121 print("您已经出退商城!")122 exit()123 else:124 pass

125 #程序开始:

126 if os.path.exists('history'):#确认文件是否存在

127 pass

128 else:129 with open('history','w',encoding='utf-8') as user_history:#创建一个用户帐户购物记录文件

130 user_history.write('{}')#写入空值

131 pass

132

133 if os.path.exists('user_infor'):#确认文件是否存在

134 pass

135 else:136 with open('user_infor','w',encoding='utf-8') as user_infor:#创建一个用户帐户信息记录文件

137 user_infor.write('{}')#写入空值

138 pass

139

140 print("欢迎来到\033[31;1mpython\033[0m购物商城!")141

142 time_format='%y-%m-%d %X'#定义时间格式

143 times=time.strftime(time_format)#定义时间

144 _user_name= user_pass()#将通过验证的用户名赋于变量

145

146 if _user_name in infor():#如果用户信息存在记录就跳过

147 pass

148 else:149 whileTrue:150 name_char=input("首次登陆,请输入工资(购物资金):")#用户输入工资(购物资金)

151 if name_char.isdigit():#检测输入是否为整数

152 name_char=int(name_char)#转为int

153 with open('history','r+',encoding='utf-8') as user_history:#打开用户帐户购物记录文件

154 history_list=eval(user_history.readline())#将文本读为字典

155 history_list[_user_name]={}#创建用户购物记录

156 user_history.seek(0)#移到开头

157 user_history.write(str(history_list))#写入文件

158 with open('user_infor','r+',encoding='utf-8') as user_infor:159 infor_list=eval(user_infor.readline())#转换首登用户文件中的字符串

160 infor_list[_user_name]={"金额":name_char}161 user_infor.seek(0)162 user_infor.write(str(infor_list))#写入用户信息

163 print("充值成功,充值金额:\033[32;1m%s\033[0m元."%name_char)164 break

165 else:166 print('金额不能为0或负数请正确输入金额!')167 continue

168

169 #再次登陆直接显示用户信息

170 infor_list=infor()#使用用户信息函数 获取用户信息字典

171 name_char=int(infor_list[_user_name]['金额'])#获取余额

172 print("\n您的帐户信息:")173 print('用户名:\033[32;1m%s\033[0m:'%_user_name)#输出用户信息

174 print('您的余额:\033[31;1m%s\033[0m元.:'%name_char)175 whileTrue:176 print('''您可以进行以下相关操作:\n177 按 1 >>>查询购物记录。178 按 2 >>>显示商品列表开始购物!179 按 3 >>>直接出退商城!180 ''')181 choose=input("请选择您所要的功能:")#请用户可以查询

182 if choose=='1':183 history()#查询消费记录

184 elif choose=='2':185 ###进入商品列表###

186 shoplist=[]#购物车列表

187 shop_count=0#购物金额统计

188 goodsname=[]#定义商品列表

189 print('加载商品列表:')190 for i in range(40):#加载动画

191 sys.stdout.write('#')192 sys.stdout.flush()193 time.sleep(0.05)194 print('\n')195 with open('goodslist.txt','r',encoding='utf-8') as f:#打开商品列表文件

196 for line inf:197 a=line.find(',')#定位分割符的索引进行分割

198 goodsname.append((line[0:a],int(line[a+1:])))#元组模式追加到列表,价格转为整数

199 whileTrue:200 print("商品列表".center(50,'='))201 for index,p_item in enumerate(goodsname):#取出下标输出 商品列表

202 print(index,p_item)#输出商品列表

203 print("列表底部".center(50,'='))204 user_index=input('请输入商品编号添加你所在购买的商品,按\033[31;1mc/C\033[0m>> 查看当前购物清单, \033[31;1mh/H\033[0m查看消费记录 \033[31;1mq/Q\033[0m结算商品退出>>>:')205 if user_index.isdigit():#判断是否为整数

206 user_index=int(user_index)#转为数字

207 if user_index < len(goodsname) and user_index>=0:#判断所选商品编号在在列表

208 p_item=goodsname[user_index]#读取下标所在(元素)商品

209 if p_item[1]<=name_char:#余额是否足够

210 shoplist.append(p_item)#添加到购物车

211 name_char-=p_item[1]#扣除金额

212 shop_count+=p_item[1]#累加购物金额

213 print("添加 \033[32;1m%s\033[0m 到购物车,价格: \033[32;1m%s\033[0m 元"%p_item)214 print("你的购物金额余: \033[31;1m%s\033[0m 元"%name_char)215 else:216 print("你的购物金额余: \033[41;1m%s\033[0m 元,无法购买该商品!" %name_char)217 else:218 print('输入错误,该编号 \033[41;1m%s\033[0m 的商品不存在!'%user_index)219 elif user_index=='q'or user_index=='Q':220 print('你的购物清单:')221 for up in shoplist:#打印购物清单

222 print(up)223 print("你的购物总金额为:\033[32;1m%s\033[0m 元!"%shop_count)224 print("你的购物金额余: \033[31;1m%s\033[0m 元!" %name_char)225 whileTrue:226 confirm=input("你是否确定结算商品并退出商城?\033[31;1m Y/y\033[0m是, \033[31;1mN/n\033[0m否:")227 if confirm== 'Y'or confirm== 'y':228 infor_list[_user_name]['金额']=name_char#修改用户金额(购物后)

229 shoplist.append(('总额:',shop_count))#列表加入总额

230 history_list=history_user()#用户消费记录函数

231 history_list[_user_name][times+'购物清单:']=shoplist#添加时间:清单

232 with open('user_infor','w',encoding="utf-8") as user_infor:#写入文件用户信息

233 user_infor.seek(0)#移到最前

234 user_infor.write(str(infor_list))#写入

235 with open('history','r+',encoding='utf-8') as user_history:#购物信息写入文件

236 user_history.seek(0)#移到最前

237 user_history.write(str(history_list))#写入

238 exit(print("谢谢!\033[31;1mpython\033[0m 商城欢迎您再次光临!"))239 elif confirm=='N'or confirm== 'n':240 break

241 else:242 print("输入错误!请按提示输入!")243 continue

244 elif user_index=='h'or user_index=='H':245 history()#查消费记录

246 elif user_index=='c'or user_index=='C':247 print("当前购物清单:")248 for up in shoplist:#打印购物清单

249 print(up)250 print("总金额:\033[32;1m%s\033[0m"%shop_count)251 continue

252 else:253 print('\033[41;1m输入商品编号错误,请重新输入!\033[0m')254

255 elif choose=='3':256 print("您已经出退商城!")257 exit()#退出商城

258 else:259 print("\033[31;1m输入有误,请重新输入!\033[0m")260 continue

python购物车结算不了_python第八天)——购物车作业优化完成相关推荐

  1. python编程超市购物系统_python实现简单购物车系统(练习)

    #!Anaconda/anaconda/python#coding: utf-8 #列表练习,实现简单购物车系统 product_lists= [('iphone',5000), ('computer ...

  2. python购物车结算不了_python中购物车

    python的基础语法 python数据类型:(按特征划分) 数字类型: 1.整形:布尔形.长整型L.标准整形 2.非整形:双精度型.复数.decimal(不是内建类型) 序列类型: 1.字符串(st ...

  3. python购物车结算不了_Python——购物车问题

    product_list=[('Mac',9000), ('kindle',800), ('tesla',900000), ('book',50), ('bike',2000)] money=inpu ...

  4. python随机森林变量重要性_python中随机森林如何优化

    2.声纳数据集案例研究 在本节中,我们将把随机森林算法应用到声纳数据集. 该示例假定数据集的CSV副本位于当前工作目录中,文件名为sonar.all-data.csv. 首先加载数据集,将字符串值转换 ...

  5. python购物车结算_python购物车-基础版本

    # 1. 用户先给自己的账户充钱:比如先充3000元. # 2. 页面显示 序号 + 商品名称 + 商品价格,如: # 1 电脑 1999 # 2 鼠标 10 # - # n 购物车结算 # 3. 用 ...

  6. python购物车程序详解用字典_Python_购物车程序[列表嵌套字典]

    1 product = [{"名称": "电脑", "价格": 999, '数量': 0}, {"名称": " ...

  7. python log函数怎么打_Python的log日志功能及设置方法

    python log函数怎么打_Python的log日志功能及设置方法_Elaine要当律师的博客-CSDN博客

  8. python判断素数的函数_Python素数prime函数练习_Python源码实操

    Python素数prime函数练习_Python源码实操 素数prime函数练习 1) 写一个函数isprime(x) 判断x是否为素数,如果是素数,返回True,否则返回False def ispr ...

  9. java循环购物车结算系统_原生JS实现购物车结算功能代码

    html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD ...

最新文章

  1. 十张图了解2020年数据中心市场现状与发展趋势
  2. 企业服务总线需求说明
  3. BZOJ3244 [Noi2013]树的计数 【数学期望 + 树遍历】
  4. (转载)找工作那年,我真的哭了
  5. proteus元件图片_proteus元件库
  6. BPSK调制系统MATLAB仿真实现(1)
  7. iCloud开发入门
  8. Effect Modern c++翻译
  9. 几行烂代码,我赔了16万。
  10. DveC++编译[Error] ld returned 1 exit status
  11. SkyEye天目全数字实时仿真软件功能介绍
  12. 基于FFmpeg的视频播放器之十一:倍速播放
  13. 图的最小生成树(Prim算法、Kruskal算法)
  14. QT实现固高运动控制卡示波器
  15. Windows 10 启用telnet client功能
  16. GLAMD: Global and Local Attention Mask Distillation for Object Detectors
  17. raid管理软件MegaRAID Storage Manager(MSM)的安装和使用
  18. java环形buff_环形缓冲区.ringbuff(C#和java)
  19. 怎样将计算机硬盘的资料彻底删除吗,3种技巧|如何从USB永久删除/清除文件
  20. 用dreamweaver打开asp网页出现乱码怎么办

热门文章

  1. 芯科EmberZNet_ZigBee3.0_EFR32MG开发日记四:ZigBee例程下载至开发套件
  2. Windows壁纸和Bing主页壁纸提取(仅作测试MarkDown)
  3. 从台风背后看待云计算 大数据迎来大挑战
  4. list<map>转xml
  5. centos7——Linux系统下如何连接网络图文讲解教程
  6. ZOJ 3790 Consecutive Blocks
  7. OAM EFM原理总结
  8. Java file类中的renameTo方法
  9. 灌区智能测控一体化闸门系统解决方案
  10. js 跳出循环(break, try catch, return)