购物车程序(函数版)
import os good_list = {'咸鸭蛋': 50, 'iPhone x': 7888, 'mac book': 13888, '康师傅方便面': 5 } shopping_list = {} cost = 0 def register(): print('开始注册!') user_name = input('请输入用户名').strip() if os.path.exists('%s.txt' % user_name): print('该用户已注册,请登录!') login() else: while True: pwd = input('请输入密码') pwd_sure = input('请确认密码') if pwd == pwd_sure: print('注册成功,请登录!') with open(r'%s.txt' % user_name, 'w', encoding='utf-8') as f: f.write('%s|%s' % (user_name, pwd)) f.flush() login() break else: print('两次密码不一致,请重新输入') pass def login(): print('开始登录!') user_name = input('请输入用户名').strip() if not os.path.exists('%s.txt' % user_name): print('该账户尚未注册,请先注册') register() else: while True: pwd = input('请输入密码') with open(r'%s.txt' % user_name, 'r', encoding='utf-8') as f: res = f.read().split('|') if pwd == res[1]: print('登录成功') break else: print('密码输入错误,请重新输入') return user_name def shopping(): global cost print('请先登录!') user_name = login() print('开始购物!') with open(r'%s.txt' % user_name, 'r', encoding='utf-8') as f: res = f.read().split('|') pwd = res[1] if len(res) < 3: print('余额不足,请充值!') mon = recharge(user_name) else: mon = int(res[2]) while True: print('商品列表!') res = list(good_list) for k, v in enumerate(good_list, 1): print(k, v, '%s元' % good_list[v]) buying = input('请输入你想购买的商品:').strip() if buying.isdigit(): buying = int(buying) if buying > 0 and buying < len(good_list): if good_list[res[buying - 1]] < mon: mon -= good_list[res[buying - 1]] cost += good_list[res[buying - 1]] if res[buying - 1] in shopping_list: shopping_list[res[buying - 1]] += 1 else: shopping_list[res[buying - 1]] = 1 quit_or_not = input('请问是否退出购物(Y/N)?') if quit_or_not.lower() == 'y': quit(mon, user_name,pwd) break else: print('余额不足请充值!') charge_or_not = input('是否充值(Y/N)?').strip() if charge_or_not.lower() == 'y': mon = recharge(user_name) else: print('余额不足,结账退出!') quit(mon, user_name, pwd) break pass else: print('没有该商品!') else: print('请输入数字!') pass def recharge(user_name): with open(r'%s.txt' % user_name, 'r', encoding='utf-8') as f: res = f.read().split('|') if len(res) < 3: mon = 0 else: mon = int(res[2]) pwd = res[1] while True: recharge_mon = input('请输入充值金额:') if recharge_mon.isdigit(): recharge_mon = int(recharge_mon) mon += recharge_mon with open(r'%s.txt' % user_name, 'w', encoding='utf-8') as f: f.write('%s|%s|%s' % (user_name, pwd, mon)) f.flush() break else: print('请输入数字!') return mon def quit(mon, user_name, pwd): print('购物清单!') for i in shopping_list: print('购买商品%s\t单价%s\t数量%s\t'%(i,good_list[i],shopping_list[i])) print('总价:%s'%cost) with open(r'%s.txt'%user_name,'w',encoding='utf-8') as f: f.write('%s|%s|%s'%(user_name, pwd, mon)) f.flush() pass while True: choice_list = {1: register, 2: login, 3: shopping} choice = input('1、注册\n' '2、登录\n' '3、购物\n' '请选择功能:') if choice.isdigit(): choice = int(choice) if choice in [1, 2, 3]: if choice == 1: register() if choice == 2: login() if choice == 3: shopping() break else: print('没有该功能!') else: print('请输入数字!')