需求:

1. 启动程序后,用户通过账号密码登录,然后打印商品列表。

2. 允许用户根据商品编号购买商品。

3. 用户选择商品后,检测余额是否足够,够就直接扣款,不够就提醒充值。

4. 可随时退出,退出时,打印已购买的商品和余额。

  1. #!/usr/bin/env python
  2. # -*- coding: utf-8 -*-
  3.  
  4. count = 0 # 计数器
  5. username = "aaa" # 登录用户名
  6. userpassword = "asd" # 登录密码
  7.  
  8. #创建黑名单表
  9. f=open('name.txt','a')
  10. f.close()
  11. #创建用户余额存放地址
  12. f = open('salary.txt', 'a')
  13. f.close()
  14.  
  15. f = open("name.txt", "r")
  16. file_list = f.readlines()
  17. f.close()
  18.  
  19. lock = []
  20. name = input("登录用户名:")
  21.  
  22. # 判断用户是否在黑名单
  23. for i in file_list:
  24. line = i.strip("\n")
  25. lock.append(line)
  26. if name in lock:
  27. print("您的账号已锁定,请联系管理员。")
  28. exit()
  29. else:
  30. # 如果用户没有在黑名单,判断用户是否存在。
  31. if name == username:
  32. # 如果密码连续输错三次,锁定账号。
  33. while count < 3:
  34. password = input("登录密码:")
  35. if name == username and password == userpassword:
  36. print("\033[92mWelcome to Mr.wang mall\033[0m")
  37. break
  38. else:
  39. print("账号密码不匹配")
  40. count += 1
  41. if count ==3:
  42. print("对不起,您的账号连续输错三次账号已锁定,请联系管理员。")
  43. f = open("aaa.txt", "w+")
  44. li = ['%s' % username]
  45. f.writelines(li)
  46. f.close()
  47. exit()
  48. else:
  49. print("对不起,您的账号连续输错三次账号已锁定,请联系管理员。")
  50. f = open("name.txt", "w+")
  51. li = ['%s' % username]
  52. f.writelines(li)
  53. f.close()
  54. else:
  55. print("用户名不存在,请输入正确的用户名。")
  56. exit()
  57.  
  58. #用户购买商品列表
  59. shopping_list = []
  60. #用户购买物品名称存放列表
  61. goods = []
  62. #用户购买物品价格存放列表
  63. price = []
  64. #商品价格列表
  65. product_list = [
  66. ['Iphone',5800],
  67. ['Mac Pro',9800],
  68. ['Bike',800],
  69. ['Watch',10600],
  70. ['Coffee',31],
  71. ['Alex Python',120],
  72. ]
  73.  
  74. #读取用户的余额,如果首次登陆余额为0
  75. f1 = open("salary.txt", "r")
  76. file_list = f1.readlines()
  77. f1.close()
  78. salary = []
  79. if file_list:
  80. print("")
  81. else:
  82. f2 = open("salary.txt", "w")
  83. f2.write("")
  84. f2.close()
  85. f1 = open("salary.txt", "r")
  86. fil_list = f1.readlines()
  87. f1.close()
  88. for i in fil_list:
  89. lin = i.strip("\n")
  90. salary.append(lin)
  91.  
  92. salary = int(salary[0])
  93.  
  94. #商品购买循环
  95. while True:
  96. #循环打印商品目录
  97. for j in range(1):
  98. print("----shopping list----")
  99. for i,ele in enumerate(product_list):
  100. print (i,ele[0],ele[1])
  101. var = (input("\033[94m请输入你要买的商品序列号(充值:t 余额:b 购买:y 退出:q):\033[0m"))
  102. #判断用户输入的是否为商品序号是否为数字
  103. if var.isdigit():
  104. var = int(var)
  105. #判断用户输入的商品序号是否在范围内
  106. if var >=0 and len(product_list) > var:
  107. p = product_list[var]
  108. #判断用户的余额是否足够买想要的商品
  109. if p[1] <= salary:
  110. shopping_list.append(p)
  111. goods.append(p[0])
  112. price.append(p[1])
  113. salary = salary -p[1]
  114. print("\033[94m您购买\033[0m\033[95m%s\033[0m\033[94m已加入购物车后,您的余额还有\033[0m\033[95m%s\033[0m"%(p[0],salary))
  115. else:
  116. print("\033[91m您的余额不足(余额:%s),请充值后购买(充值:t)。\033[0m"%salary)
  117. else:
  118. print("\033[91m没有找到您想要的商品,请重新输入商品编号。\033[0m")
  119. continue
  120. elif var == "t":
  121. num1 = input("\033[94m请输入充值金额:\033[0m")
  122. if num1.isdigit():
  123. num1 = int(num1)
  124. salary = salary + num1
  125. print("您现在的总余额是:",salary)
  126. else:
  127. print("\033[91m请输入正确的充值金额\033[0m")
  128. num1 = input("\033[94m请输入充值金额:\033[0m")
  129. continue
  130. elif var == "q":
  131. exit()
  132. elif var == "b":
  133. print("\033[91m您当前余额为:%s\033[0m"%salary)
  134. elif var == "y":
  135. print("--------shopping list------")
  136. goods.sort()
  137. s = set(goods)
  138. for item in s:
  139. print (" %s x %d"%(item,goods.count(item)))
  140. sum = 0
  141. for j in price:
  142. sum = sum +j
  143. print("您总计消费:\033[95m % s\033[0m余额:\033[95m % s\033[0m"%(sum,salary))
  144. print("\033[94m欢迎您下次购物\033[0m")
  145. f = open("salary.txt", "w+")
  146. la = ['%s' %salary]
  147. f.writelines(la)
  148. f.close()
  149. exit()
  150. else:
  151. print("\033[91m请输入正确的商品编号。\033[0m")
  152. continue

Python3.5 Day2作业:购物车程序的更多相关文章

  1. python基础day2作业:购物车

    #功能:1.可注册账号2.登录买家账号3.可查询编辑购物车里商品4.可以余额充值5.可提示余额不足6.购物车结算 #使用:1.第一次使用先注册账号填写账号金额2.账号金额信息保存在buyer_acco ...

  2. Python培训12期-day2作业-购物车

    #!/usr/bin/env python import sys import os import getpass 商品={ '图书': { "<Puppet实战>": ...

  3. python3.x Day2 购物车程序练习

    购物车程序: 1.启动程序后,输入用户名密码后,如果是第一次登录,让用户输入工资,然后打印商品列表 2.允许用户根据商品编号购买商品 3.用户选择商品后,检测余额是否够,够就直接扣款,不够就提醒 4. ...

  4. Python初学者第十二天 购物车程序小作业

    12day 作业题目: 购物车程序 作业需求: 数据结构: goods = [ {"name": "电脑", "price": 1999}, ...

  5. Python3学习之路~2.2 简单的购物车程序

    程序:购物车程序 需求:启动程序后,让用户输入工资,然后打印商品列表允许用户根据商品编号购买商品用户选择商品后,检测余额是否够,够就直接扣款,不够就提醒 可随时退出,退出时,打印已购买商品和余额 代码 ...

  6. python第七天-作业[购物车]

    作业要示: 购物车程序:启动程序后,输入用户名密码后,如果是第一次登录,让用户输入工资,然后打印商品列表允许用户根据商品编号购买商品用户选择商品后,检测余额是否够,够就直接扣款,不够就提醒 可随时退出 ...

  7. Python学习-购物车程序

    程序:购物车程序 需求: 启动程序后,让用户输入工资,然后打印商品列表 允许用户根据商品编号购买商品 用户选择商品后,检测余额是否够,够就直接扣款,不够就提醒 可随时退出,退出时,打印已购买商品和余额 ...

  8. 利用JSP编程技术实现一个简单的购物车程序

    实验二   JSP编程 一.实验目的1. 掌握JSP指令的使用方法:2. 掌握JSP动作的使用方法:3. 掌握JSP内置对象的使用方法:4. 掌握JavaBean的编程技术及使用方法:5. 掌握JSP ...

  9. 简单购物车程序(Python)

    #简单购物车程序:money_all=0tag=Trueshop_car=[]shop_info={'apple':10,'tesla':100000,'mac':3000,'lenovo':3000 ...

随机推荐

  1. Android实现双击事件的两种方式

    Work around的方法是先监听onTouch事件来监听连续点击次数,每次点击都布置一个间隔时间的延时任务,延时任务执行时判断间隔内是否还有点击,如果没有则发布点击次数,重置计数. 实现代码如下: ...

  2. ScriptedSandbox64.exe 在写Winform程序Debug时不停提交数据

    抓包时发现不停的在提交数据,导致抓包内容看不到. 取消方式:Tools -> Options -> Debugging -> General -> Enable Diagnos ...

  3. ACM/ICPC 之 Dinic+枚举最小割点集(可做模板)(POJ1815)

    最小割的好题,可用作模板. //Dinic+枚举字典序最小的最小割点集 //Time:1032Ms Memory:1492K #include<iostream> #include< ...

  4. using namespace std 和 using std::cin

    相较using std::cin使用using namespace std不会使得程序的效率变低,或者稳定性降低,只是这样作会将很多的名字引入程序,使得程序员使用的名字集合变小,容易引起命名冲突. 在 ...

  5. React学习笔记-8-属性和状态详解

    属性的含义和用法props=properties 英文中属性的意思.属性不可以修改,也就是属性不可以由组件进行修改,组件的属性是由父组件传递过来的,相当于组件在出生的时候带的.用法第一种:直接在调用组 ...

  6. Webbench性能测试

    1.下载安装:立即下载  官网:http://home.tiscali.cz/~cz210552/webbench.html 2.解压缩:tar -zxvf webbench-1.5.tar.gz 3 ...

  7. 与你相遇好幸运,用sinopia搭建npm私服

    需求: >在企业内部搭建私有npm服务器,企业开发人员上传下载自己开发的npm包 >私有npm服务器包不存在时,找npm或者taobao的镜像站点 >服务器硬盘有限,希望只缓存下载过 ...

  8. Tensorflow 处理libsvm格式数据生成TFRecord (parse libsvm data to TFRecord)

    #写libsvm格式 数据 write libsvm     #!/usr/bin/env python #coding=gbk # ================================= ...

  9. Linux C编程学习之开发工具3---多文件项目管理、Makefile、一个通用的Makefile

    GNU Make简介 大型项目的开发过程中,往往会划分出若干个功能模块,这样可以保证软件的易维护性. 作为项目的组成部分,各个模块不可避免的存在各种联系,如果其中某个模块发生改动,那么其他的模块需要相 ...

  10. Java基础学习(三)

    /* java中的八种基本数据类型: 整数: byte . short . int . long 小数: float double 字符: char 布尔: boolean 字符串的类型: Strin ...