''' 作业:用函数完成登录注册以及购物车的功能。 1,启动程序,用户可选择四个选项:登录,注册,购物,退出。 2,用户注册,用户名不能重复,注册成功之后,用户名密码记录到文件中。 3,用户登录,用户名密码从文件中读取,进行三次验证,验证不成功则退出整个程序。 4,用户登录成功之后才能选择购物功能进行购物,购物功能(就是将购物车封装到购物的函数中)。 5,退出则是退出整个程序。 ''' flag_login = 0 def register(): # 定义注册函数 while 1: global flag_login flag_login = 0 # 将登录状态重置为退出状态 register_name = input('请输入注册用户名:') register_password = input('请输入注册密码:') f1 = open('name_password', encoding='utf-8', mode='r+') content = f1.read() f1.write(register_name + '|' + register_password + '\n') f1.close() # for i in range(len(content)): if register_name in content: print('用户名已被注册,请重新输入') continue else: print('恭喜你注册成功。') break def sign_in(): # 定义登录函数 while 1: n = 0 sign_in_name = input('请输入登录用户名:') sign_in_password = input('请输入密码:') f1 = open('name_password', encoding='utf-8', mode='r') for line in f1: content = line.strip().split('|') if sign_in_name == content[0] and sign_in_password == content[1]: print('恭喜你登录成功。') global flag_login # 在局部将flag_login定义为一个全局变量 flag_login = 1 # 标识登录状态,0-表示未登录状态,1-表示登录状态 break else: n = n + 1 if n > 3: # 进行3次验证 print('用户名或者密码错误。') break f1.close() break def shopping(): #定义购物车函数 if flag_login == 0: print('未登录系统,无法进行购物。') if flag_login == 1: goods = { 1: {'name': '电脑', 'price': 1999}, 2: {'name': '鼠标', 'price': 10}, 3: {'name': '键盘', 'price': 50}, 4: {'name': '显示器', 'price': 1000}, } # 定义我的账户 my = { 'account_balance': 0, # 账户余额默认为0 'shopping_cart': {}, # 购物车默认为空 'order': {} # 订单默认为空 } # 按照商品序号存储购买数量 dic1 = { 1: {'name': '电脑', 'price': 1999, 'num': ''}, 2: {'name': '鼠标', 'price': 10, 'num': ''}, 3: {'name': '键盘', 'price': 50, 'num': ''}, 4: {'name': '显示器', 'price': 1000, 'num': ''}, } # 用户进行充值 while True: charge = input('账户余额为0 ,请您充值:') # 首先进行账户充值 if charge.strip().replace('.', '', 1).isdigit(): my['account balance'] = charge charge = int(charge) print('恭喜您,充值成功' + ',' + '账户余额为' + my['account balance']) break else: print('您的充值失败,请您重新充值') continue # 商品页面显示 for k, v in goods.items(): print(k, v['name'], v['price']) count = 0 balance = 0 while True: goods_serial_number = input('请选择您购买的商品序号:').upper() # 用户输入Q或者q退出购买程序 if goods_serial_number == 'Q': if my['shopping_cart'] == '': print('账户余额:' + str(balance)) print('总共花费金额:' + str(charge - balance)) elif my['shopping_cart'] != '': for k, v in dic1.items(): if k in my['shopping_cart'].items(): dic1[k]['name'] = my['shopping_cart'][k] print(v['name'], v['price'], v['num']) print('总共花费金额:' + str(charge - balance)) print('账户余额:' + str(balance)) break # 用户输入n进行购物车结算 elif goods_serial_number == 'N': for i in dic1.keys(): if i in my['shopping_cart'].keys(): dic1[i]['num'] = my['shopping_cart'][i] for l in dic1.keys(): # 依次显示用户购物车里面的商品,数量及单价 if l in my['shopping_cart'].keys(): msg = ''' ---------------------购买信息------------------ 商品名称:%(name)s 商品数量:%(num)s 商品单价:%(price)s --------------------end--------------------- ''' % dic1[l] print(msg) else: pass # 计算各个商品的总价 for k in dic1: if k in my['shopping_cart']: count = dic1[k]['num'] * dic1[k]['price'] + count # 计算花费金额 balance = charge - count # 计算账户余额 if balance >= 0: print('恭喜您,购买成功!') elif balance < 0: print('余额不足,请删除部分商品。') while balance < 0: del_goods_serial_number = input('请输入删除物品的序号:').upper() if (del_goods_serial_number == 'Q') or (del_goods_serial_number == 'N'): break elif del_goods_serial_number.isdigit(): if int(del_goods_serial_number) in my['shopping_cart']: if my['shopping_cart'][int(del_goods_serial_number)] >= 1: my['shopping_cart'][int(del_goods_serial_number)] = my['shopping_cart'][int( del_goods_serial_number)] - 1 print(my['shopping_cart']) balance = balance + dic1[int(del_goods_serial_number)]['num'] * \ dic1[int(del_goods_serial_number)]['price'] else: print('购物车中已经无该商品,请重新选择') else: print('购物车中无该商品,请重新选择') continue else: print('恭喜你,购买成功') elif goods_serial_number.isdigit() == False: print("商品序号输入有误,请重新输入!") continue elif int(goods_serial_number) in goods: goods_serial_number = int(goods_serial_number) if goods_serial_number in my['shopping_cart']: my['shopping_cart'][goods_serial_number] = int(my['shopping_cart'][goods_serial_number]) + 1 else: my['shopping_cart'].setdefault(goods_serial_number) my['shopping_cart'][goods_serial_number] = 1 print(my['shopping_cart']) def sign_out(): # 定义退出函数 print('退出整个程序') quit() dic = { 1: sign_in, 2: register, 3: shopping, 4: sign_out, } flag_login = 0 while 1: choice = input('请输入数字1/2/3/4(1-登录/2-注册/3-购物/4-退出):') if choice.isdigit(): choice = int(choice) dic[choice]() else: pass
python基础(三)作业题
猜你喜欢
转载自www.cnblogs.com/mayugang/p/9886256.html
今日推荐
周排行