【18】Python半成品购物车
- 2020 年 1 月 7 日
- 笔记
#!/usr/bin/env python #Author:Li QW
''' 程序需求: 1、启动程序后,输入用户名密码后,如果是第一次登录,让用户输入工资,然后打印商品列表 2、允许用户根据商品编号购买商品 3、用户选择商品后,检测余额是否够,够就直接扣款,不够就提醒 4、可随时退出,退出时,打印已购买商品和余额 5、在用户使用过程中, 关键输出,如余额,商品已加入购物车等消息,需高亮显示 6、用户下一次登录后,输入用户名密码,直接回到上次的状态,即上次消费的余额什么的还是那些,再次登录可继续购买(未实现) 7、允许查询之前的消费记录
流程图可供参考
import sys product_list=[ ('Iphone',7000), ('Watch',333), ('Water',10), ('coffer',54), ('Xiaomi',2490), ] ###将文件转换成字典 f=open('user.txt','r') user_lis=f.read() f.close() user_info=user_lis.split("#") user_dict={} ###工资 salary=10000 sa=[] ###历史购物车 show_shopping_log=[] ###购物车 add_cart=[] for item in user_info: item_list=item.split(":") user_dict[item_list[0]]=item_list[-1] print(user_dict) while True: ####用户部分#### print("输入1:用户注册,输入2:老用户登录,输入q退出") login_num=input("请选择: ") if login_num.isdigit(): login_num=int(login_num) if login_num==1: while True: user_1=input("输入注册用户名:") if user_1 in user_dict: ###判断注册用户是否存在,存在则退出当前循环 print("用户已存在,请重新注册") continue else: pass_1=input("请设置密码:") ###设置新用户密码 f=open('user.txt','a+') ###将注册用户与密码保存账户文件中(a+,追加内容,不会覆盖原本内容) f.write("#%s:%s"%(user_1,pass_1)) f.close() a1="恭喜,注册成功" a11=a1.center(20,"-") print(a11) break ####注册成功,返回初始界面 elif login_num==2: while True: with open('user.txt','r') as f: user_lis2=f.read() user_info2=user_lis2.split("#") user_dict1={} for item1 in user_info2: item_list1 = item1.split(":") user_dict1[item_list1[0]] = item_list1[-1] print(user_dict1) user_2=input("输入用户名登录:") if user_2 in user_dict1: pass_2=input("输入密码:") if pass_2 == user_dict[user_2]: a2="登录成功,欢迎进入" a22=a2.center(20,'-') print(a22) while True: print("选择a购物/选择b查询余额/选择c充值/选择q退出") print("------------------------------------------------") choice_1=str(input("根据提示选择模式>>>")) if choice_1 =="a": ###购物模式 while True: for index,t in enumerate(product_list):###添加索引 print(index,t) #打印商品 print("------------------------------") print("选择a查询购物车、选择b返回、q退出") user_choice1=input("选择购买的商品序号或进入其它菜单>>>>>") #选择购买的商品 if user_choice1.isdigit(): #修整字符类型 user_choice1=int(user_choice1) if 0<=user_choice1<len(product_list): #不在范围内,表示商品不存在 p_item = product_list[user_choice1] print(p_item) if p_item[1] <=salary: ###判断余额 print("您已购买商品") salary -= p_item[1] #减去金额 add_cart.append(p_item) ###加入购物车 show_shopping_log=add_cart.copy() ###拷贝到购物历史中 print("您已购买 33[31;1m{} 33[0m,余额还剩 33[31;1m{} 33[0m".format(p_item,salary)) continue else: print('----------已购商品---------') print("-----退出a购物模式------") print(show_shopping_log) break else: print("----------------------------") print("您输入的商品不存在,请重新购买") elif user_choice1=="a": #####a查询购物车 print("-----购物车------") print("已购买",show_shopping_log) elif user_choice1 == 'b': ###退出当前模式,并打印已购买商品。 print(" ") print('返回-----已购买商品如下') print(add_cart) break elif user_choice1=='q': ###退出购物 sys.exit() elif choice_1=="b": ###b查看余额 print("-----还剩 33[31;1m{} 33[0m-----".format(salary)) continue elif choice_1=="c": ##c充值 while True: print("您的余额不足,是否充值。(充值1/返回b)") salary_11 = input("请确认是否充值:") if salary_11.isdigit(): salary_11 = int(salary_11) if salary_11 == 1: print("------输入充值金额-------") salary_22 = int(input("充值>>>")) salary += salary_22 print("充值完成后,还剩 33[31;1m{} 33[0m".format(salary)) continue elif salary_11=="b": break elif choice_1=="q": ###退出购物 sys.exit() else: a3="密码错误,请重新输入" print(a3.ljust(13,"!")) #字符串补位 continue else: a4="用户不存在,请重新输入" print(a4.ljust(14,'!')) continue elif login_num=='q': sys.exit()