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] =1else:dic1[i] +=1for 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 = Falsemy_shopping = []while True:money = input("请输入您的金额:\n")if not money.isdigit():keys = input("输入错误,请按任意键重新输入,或输入q退出购买\n")if keys.upper() == 'Q':breakcontinuemoney = 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 = Truebreakif not num.isdigit():print("输入错误,请重新输入!")continuenum = 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 = Truebreakif not chongzhi.isdigit():# keys_1=input("输入错误,请重新输入充值金额:或输入q结束购买。。。充值部分的错误]")# if keys_1.upper() == "Q":#     flag = True#     breakprint("输入错误,请重新输入")continuemoney = money + int(chongzhi)break# breakif flag == True:breakelse:print("请输入正确商品编号")continueif 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('用户名已经存在,请重新输入。')continueelse: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]) + 1new_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 Trueelse:print ("密码错误,请重新输入用户名密码!")modify_user(name, "add")return Falseelse:print ("您的用户已经锁定,请联系管理员!")return Falseelse:print ("用户名不存在,请重新输入!")return Falsedef 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退出。")continueif __name__ == '__main__':menu()

user.txt文件内容

hk,123,2
abc,222,2
haha,1,1
test,1234,0

利用python开发购物车系统相关推荐

  1. 利用python开发app实战

    我很早之前就想开发一款app玩玩,无奈对java不够熟悉,之前也没有开发app的经验,因此一直耽搁了.最近想到尝试用python开发一款app,google搜索了一番后,发现确实有路可寻,目前也有了一 ...

  2. 利用Python开发App

    我很早之前就想开发一款app玩玩,无奈对java不够熟悉,之前也没有开发app的经验,因此一直耽搁了.最近想到尝试用python开发一款app,google搜索了一番后,发现确实有路可寻,目前也有了一 ...

  3. 利用Python开发App,来一起看看他是怎么做的。

    本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理 本文来自腾讯云,作者:Python小二 最近想到尝试用python开发一款app, ...

  4. python开发app的软件_如何利用python开发手机app

    python语言虽然很万能,但用它来开发app还是显得有点不对路,因此用python开发的app应当是作为编码练习,加上目前这方面的模块还不是特别成熟,bug比较多. 准备工作 利用python开发a ...

  5. python微信爬取教程_PYTHON爬虫之旅系列教程之【利用Python开发微信公众平台一】...

    感谢大家的等待,好啦,都准备好瓜子.板凳,老司机要发车啦-- 本系列课程讲述"PYTHON爬虫之旅",具体大纲可参考:[PYTHON爬虫之旅]概要目录. 本节课讲述如何利用Pyth ...

  6. [539]利用python开发app

    说在前面的话 python语言虽然很万能,但用它来开发app还是显得有点不对路,因此用python开发的app应当是作为编码练习.或者自娱自乐所用,加上目前这方面的模块还不是特别成熟,bug比较多,总 ...

  7. python手机app开发_利用python开发app实战的方法

    我很早之前就想开发一款app玩玩,无奈对java不够熟悉,之前也没有开发app的经验,因此一直耽搁了.最近想到尝试用python开发一款app,google搜索了一番后,发现确实有路可寻,目前也有了一 ...

  8. 怎么用python编写记事本_利用Python开发实现简单的记事本

    利用Python开发实现简单的记事本 最近想对 python 加深学习一下,同时也是想试着做一些东西,所以使用 python, 结合 Tkinter 来做一个简单的跨平台记事本.最终实现的记事本如下, ...

  9. 怎样利用Python开发天气预报软件,这份教程查收一下

    今天要分享的是怎样利用Python开发天气预报软件,那话不多说,马上开始-- 1.首先建一个文件weather.py 2.创建窗口与显示窗口 3.为窗口设置标题与大小,保存运行如下图: 4.接下来创建 ...

最新文章

  1. 擒贼先擒王,简单谈一下JavaScript作用域链(Scope Chain)
  2. bootstrap中图片的一些小事情
  3. JS动态获取当前时间
  4. 图解排序算法之谈「选择排序」
  5. Android studio 使用Cmake完成C/C++ 的使用以及生成so文件
  6. Android打包(一)
  7. performance 查看页面性能
  8. ODBC数据源选项卡中的系统DNS,用户DNS和文件DNS
  9. Laravel-admin 分类避免踩坑
  10. 计算机考试internet应用好考吗,2015年职称计算机考试XP好考还是internet应用好考...
  11. Ubuntu16.04--code::blocks16.01 的代码拷贝到Windows 8.1--visual studio 2013 注意事项
  12. SQLServer批量倒入目录文件
  13. iframe高度自适应的6个方法
  14. 第1章—Spring之旅—简化Spring的java开发
  15. Java StringBuffer 用法
  16. 1g等于多少mb计算机网络,1KB等于多少MB?1G等于多少MB?等于多少kb呢?
  17. 基于Java Socket的局域网聊天系统
  18. Halcon区域形状特征-area_center、area_holes、select_shape、inner_circle和smallest_rectangle2算子
  19. 场景图生成论文阅读笔记 之 LinkNet: Relational Embedding for Scene Graph
  20. 对比深度学习十大框架

热门文章

  1. Sql Server导入sql文件
  2. 在windows下rust编译出现gcc.exe的错误
  3. 洛谷——P1478 陶陶摘苹果(升级版)
  4. iOS音频播放 (二):AudioSession 转
  5. Web Hacking 101 中文版 十八、内存(一)
  6. 使用Advanced Installer将.exe程序重新封装为.msi程序
  7. SQL Server 日志传送
  8. 在WEB中实现打印分页
  9. Nginx Image缩略图模块加强网站运行速度
  10. 【sql那些事】时间处理的一揽子事