python3购物车
- python3实现购物车小程序,优化后将程序分成函数,用文件注册和验证用户名密码。
- #!/usr/bin/env python
- # -*- coding: utf-8 -*-
- # @Time : 2020/4/20 下午4:12
- # @Author : hk
- # @Site :
- # @File : 购物车.py
- # @Software: PyCharm
- """
- 需求描述:
- 1.输入正确账号,密码,进入购物车购物
- 2.登录失败,重新输入账号密码
- 3.同一账号连续登录失败超过三次,则锁定该账号
- 4.登录已锁定账号,提示账号已锁定
"""
- #显示已购商品列表函数
- def shoping_list(myshping,money):
- print('=============您的购物清单如下=================')
- dic1={}
- for i in myshping:
- if dic1.get(i) == None:
- dic1[i] =1
- else:
- dic1[i] +=1
- for k,v in dic1.items():
- print(k,v)
- print("===========================================\n您的余额:%d"%money)
- #购物车函数
- def shoping():
- goods = [{'name': '电脑', 'price': 1999},
- {'name': '鼠标', 'price': 10},
- {'name': '游艇', 'price': 20},
- {'name': '美女', 'price': 998},
- {'name': 'iphone', 'price': 5000},
- ]
- flag = False
- my_shopping = []
- while True:
- money = input("请输入您的金额:\n")
- if not money.isdigit():
- keys = input("输入错误,请按任意键重新输入,或输入q退出购买\n")
- if keys.upper() == 'Q':
- break
- continue
- money = int(money)
- while True:
- print('+++++++++++商品列表+++++++++++++')
- for index, key in enumerate(goods):
- print(index + 1, key['name'], key['price']) # 这里key取到的值是每一行的字典,再按key字典的键值打印出来商品明细
- print('我的钱包余额', money)
- num = input("请输入想要购买的商品序号:【或输入q结束购买】\n")
- if num.upper() == 'Q':
- flag = True
- break
- if not num.isdigit():
- print("输入错误,请重新输入!")
- continue
- num = int(num)
- if num > 0 and num < len(goods) + 1:
- # print(num,"开始购物\n----------")
- if money >= goods[num - 1]['price']:
- my_shopping.append(goods[num - 1]['name'])
- money = money - goods[num - 1]['price']
- shoping_list(my_shopping,money)
- # print(my_shopping, "我的余额", money)
- else:
- # print("余额不足")
- while True:
- chongzhi = input("余额不足,请输入充值金额:【或输入q结束购买。]\n")
- if chongzhi.upper() == "Q":
- flag = True
- break
- if not chongzhi.isdigit():
- # keys_1=input("输入错误,请重新输入充值金额:或输入q结束购买。。。充值部分的错误]")
- # if keys_1.upper() == "Q":
- # flag = True
- # break
- print("输入错误,请重新输入")
- continue
- money = money + int(chongzhi)
- break
- # break
- if flag == True:
- break
- else:
- print("请输入正确商品编号")
- continue
- if flag == True:
- # 打印出购物清单并统计,显示余额。
- print("谢谢光临!")
- shoping_list(my_shopping,money)
- exit(0)
- continue
- #注册函数
- def regist():
- """
- 注册用户
- name: 用户名称
- password:用户密码
- :return:
- """
- # 读取用户文件
- with open("user.txt", encoding='utf-8',mode="r") as read_file:
- read_data = read_file.readlines()
- i_name = []
- for i in read_data:
- i_line = i.strip().split(',')
- i_name.append(i_line[0])
- while True:
- username = input('请输入用户名:\n').strip()
- if username in i_name:
- print('用户名已经存在,请重新输入。')
- continue
- else:
- password = input('请输入密码:\n').strip()
- with open('user.txt',encoding='utf-8',mode='a') as read_f1:
- new_user = [username,password,'0']
- new_user ='\n' + ','.join(new_user)
- # print(new_user,type(new_user))
- read_f1.write(new_user)
- print('%s,恭喜您注册成功,请登录'%username)
- break
- #修改用户登录次数函数
- def modify_user(name, mode="add"):
- """
- 修改用户名单中的登录错误次数
- :param name: 用户名称
- :param mode:add,登录错误次数自增1;del,登录错误次数重置为0
- :return:
- """
- # 读取用户文件
- with open("user.txt", encoding='utf-8',mode="r") as read_file:
- read_data = read_file.readlines()
- # 写入用户文件
- with open("user.txt", encoding='utf-8',mode="w") as write_file:
- for line in read_data:
- new_line = line.split(',')
- if new_line[0] == name:
- if mode == "add":
- new_line[2] = int(new_line[2]) + 1
- new_line[2] = str(new_line[2])
- print(">>>>>>>",new_line)
- else:
- new_line[2] = "0"
- new_line = ",".join(new_line) + "\n"
- write_file.write(new_line)
- # print('写入',new_line)
- write_file.flush()
- else:
- write_file.write(line)
- #验证用户名密码函数
- def auth(name, passwd):
- with open("user.txt", encoding='utf-8',mode="r") as read_file:
- for eachLine in read_file:
- user_name, password, errors = eachLine.strip().split(',')
- if name == user_name:
- if int(errors) < 3:
- if password == passwd:
- print ("Dear [%s],欢迎你登录本购物车" % name)
- modify_user(name, "del")
- shoping()
- # return True
- else:
- print ("密码错误,请重新输入用户名密码!")
- modify_user(name, "add")
- return False
- else:
- print ("您的用户已经锁定,请联系管理员!")
- return False
- else:
- print ("用户名不存在,请重新输入!")
- return False
- def login():
- while True:
- name = input("请输入用户名:")
- passwd = input("表输入密码:")
- if auth(name, passwd):
- break
- def menu() :
- while True:
- mode = input('请您注册或登录:\n'
- '注册选1\n'
- '登录选2\n'
- '或按输入q退出\n').strip()
- if mode == '1':
- regist()
- elif mode == '2':
- login()
- elif mode.upper() == 'Q':
- exit(0)
- else:
- print("输入错误,请重新输入,或按q退出。")
- continue
- if __name__ == '__main__':
- menu()
user.txt文件内容
hk,123,2
abc,222,2
haha,1,1
test,1234,0
python3购物车的更多相关文章
- python3 购物车小程序,余额写入文件保存
python3 购物车小程序,余额写入文件保存 #!/usr/bin/env python # -*- coding:utf-8 -*- # Author:Hiuhung Wan goods = ( ...
- python3 购物车 增改查终极版~
还是先来条NLP再说,快没了,以后想抄还没有... 十一,没有挫败,只有回应讯息 “挫败”只是指出过去的做法得不到预期的效果,是给我们需要改变的信号. “挫败”只是在事情画上句号时才能用上,欲想事情解 ...
- python3 购物车练习
# 购物车# 功能要求:# 要求用户输入总资产,例如:2000# 显示商品列表,让用户根据序号选择商品,加入购物车# 购买,如果商品总额大于总资产,提示账户余额不足,否则,购买成功.# 可充值.某商品 ...
- python3 购物车
今天干了啥?喂了喂龟,看了看鱼... 然后就是学习了两个模块:sys模块和os模块,突然觉得python真的好,只要英语学的好,看代码超级舒服的说,嗯,我要好好学英语,今天背了几个啥,唉.写完博客再背 ...
- Python3 list与循环练习(购物车)
#!/usr/bin/env python3 # -*- coding: utf-8 -*- # Author;Tsukasa product_list = [ ('Iphone',5800), (' ...
- Python3.5 Day2作业:购物车程序
需求: 1. 启动程序后,用户通过账号密码登录,然后打印商品列表. 2. 允许用户根据商品编号购买商品. 3. 用户选择商品后,检测余额是否足够,够就直接扣款,不够就提醒充值. 4. 可随时退出,退出 ...
- python3 练习题(用函数完成登录注册以及购物车的功能)
''' 用函数完成登录注册以及购物车的功能 作业需求: 1,启动程序,用户可选择四个选项:登录,注册,购物,退出. 2,用户注册,用户名不能重复,注册成功之后,用户名密码记录到文件中. 3,用户登录, ...
- python3 练习题(购物车)
'''购物车程序需求:1.启动程序后,让用户输入工资,然后打印商品列表2.允许用户根据商品编号购买商品3.用户选择商品后,检查余额是否够,够就直接扣款,不够就提醒4.用户可一直购买商品,也可随时退出, ...
- Python3学习之路~2.2 简单的购物车程序
程序:购物车程序 需求:启动程序后,让用户输入工资,然后打印商品列表允许用户根据商品编号购买商品用户选择商品后,检测余额是否够,够就直接扣款,不够就提醒 可随时退出,退出时,打印已购买商品和余额 代码 ...
随机推荐
- Webpack抽离第三方类库以及common解决方案
前端构建场景有两种,一种是单页面构建,另一种是多入口构建多页面应用程序(我视野比较小,目前就知道这两种),下面我们针对这两种场景总结了几种抽离第三方类库以及公共文件的解决方案. 如果有哪些地方优化不周 ...
- BFC是什么?BFC有什么用?看完全明白
一.BFC是什么? 官方定义 BFC(Block Formatting Context,块格式化上下文) 是Web页面的可视化CSS渲染的一部分,是块盒子的布局过程发生的区域,也是浮动元素与其他元素交 ...
- reset slave all更彻底
reset slave是各版本Mysql都有的功能,可以让slave忘记自己在master binary log中的复制位置. reset slave命令主要完成以下工作内容: -删除master.i ...
- 近期 github 机器学习热门项目top5
磐创智能-专注机器学习深度学习的教程网站 http://panchuang.net/ 磐创AI-智能客服,聊天机器人,推荐系统 http://panchuangai.com/ [导读]:Github是 ...
- 重磅!刷新两项世界纪录的腾讯优图人脸检测算法DSFD开源了!
近日,知名开源社区Github上有个名为DSFD(Dual Shot Face Detector)的算法引起了业内关注,它正是来自于腾讯优图.目前,该算法已经被计算机视觉顶级会议CVPR 2019接收 ...
- 基于Andriod的简易计算器
这学期有安卓这门课,这里做了一个简易的计算器,实现了两位数加减乘除的基本功能,比较简单适合用来入门学习. 运行效果 预备知识 实现这个计算器之前要先了解实现计算器需要的基本组件 1.TextView ...
- 模块 re_正则
模块re_正则 讲正题之前我们先来看一个例子:https://reg.jd.com/reg/person?ReturnUrl=https%3A//www.jd.com/ 这是京东的注册页面,打开页面我 ...
- Babel快速入门
作者:姜瑞涛 Github仓库:https://github.com/jruit/babel-tutorial 博客:姜瑞涛的官方网站 原文链接:https://www.jiangruitao.com ...
- 万物互联—MQTT协议
一.简介 MQTT(Message Queuing Telemetry Transport,消息队列遥测传输),最早是1999年由IBM开发的基于发布/订阅范式的消息协议,是一种极其简单和轻量级的消息 ...
- 一文教会你如何在 Spring 中进行集成测试,太赞了
不得不说,测试真的是太重要了!但并不是所有的开发者都这样认为,这种感觉在我回到洛阳后尤其强烈.竟然有团队成员不经测试就把代码提交到代码库,并且是会报错的那种,我天呐,遇到这种队友我也是醉了. 我之前是 ...