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
版权声明:本文为amhk原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。