本文实例为大家分享了Python3实现购物车功能的具体代码,供大家参考,具体内容如下
购物车要求:
1、启动程序后,输入用户名密码后,如果是第一次登录,让用户输入工资,然后打印商品列表
2、允许用户根据商品编号购买商品
3、用户选择商品后,检测余额是否够,够就直接扣款,不够就提醒
4、可随时退出,退出时,打印已购买商品和余额
5、在用户使用过程中, 关键输出,如余额,商品已加入购物车等消息,需高亮显示
6、用户下一次登录后,输入用户名密码,直接回到上次的状态,即上次消费的余额什么的还是那些,再次登录可继续购买
7、允许查询之前的消费记录
逻辑图:
执行代码:
#!/usr/bin/env python3 # Author: Robert # --*-- coding: utf-8 --*-- set = False #设置set 当输入为q就可以退出 file = open("购物车用户信息档案.txt","r+",encoding="utf-8") #读取购物车用户信息文件 f = str(file.read()) #将文件内容转化成字符串 for line in f: file_str = str(f) data = eval(file_str) #将字符串转换为字典data name = input("输入姓名:") password = input("输入密码:") while True: if name in data: #用户在档案中 if password in data[name]: #密码和用户名对应,校验正确,登录。 salary = float(data[name][password]) print('''\033[32;1m欢迎登录,当前余额为%s\033[0m'''%salary) break else: #否则密码错误,请重新输入 password = input("密码错误,请重新输入:") continue else: #否则判断为首次登录,将用户名,密码,工资存到用户信息文件中 password_salary = {} salary_str = input("欢迎首次登录,请输入你的工资:") salary = float(salary_str) password_salary[password] = salary #工资对应到密码 data[name] = password_salary #将密码-工资对应到用户名 file.seek(0) file.write(str(data)) file.tell() break list = [#购物清单 ["iphone",5800], ["sifei",800], ["macbook",17500], ["book",75], ["apple",5] ] file_list_r = open("历史购物信息.txt","r+",encoding="utf-8") file_list_r = str(file_list_r.read()) shoppinglist_dict = eval(file_list_r) if name not in shoppinglist_dict: shoppinglist_dict[name] = [] shoppinglist = shoppinglist_dict[name] shoppinglist_dict_now = [] choose = input("\n是否需要查询历史购物记录(y/n):") if choose == 'y': print("\n\n---------->历史购物记录<----------") print(shoppinglist) print("---------->结束<----------") while not set: #购物车开始 print("---------->商品清单<----------") for index,item in enumerate(list,1): print(index,item) print("---------->结束<----------") number = input("请输入想购买商品编号:") if number == "q": set = True data[name][password] = str(salary) file.seek(0) file.write(str(data)) file.tell() print("---------->购物清单<----------") print(shoppinglist) print("您的余额:",salary) print("---------->结束<----------") shoppinglist.extend(shoppinglist) shoppinglist_dict[name] = shoppinglist elif number.isdigit() == False: print("\033[31;1m输入不是编号内容,请重新输入\033[0m") elif int(number)>int(len(list)) or int(number)<= 0: #输入值不在清单中,报错 print("\033[31;1m您所购买的商品不在清单中\033[0m") else: number_buy = int(number)-1 if list[number_buy][1]<(salary): #如果余额足够,提示购买成功并显示余额。 salary = salary - int(list[number_buy][1]) msg = '\033[32;1m您已经将%s加入购物车中,余额为%d\033[0m'%(list[number_buy][0],salary) print(msg) shoppinglist.append(list[number_buy]) #将本次购物信息加到购买记录中 else: print("\033[31;1m余额不足,无法购买!\033[0m") #提示余额不足
购物车用户信息档案.txt
{'name': {'password': '10000'}, 'cx': {'123': '725.0'}, 'robert': {'qw': '440.0'}, 'cv1': {'1': 100.5}, 'ROBERT': {'QW': 1560.0}, 'qwe': {'qw': '1555.0'}}
历史购物信息.txt
{'name': [['iphone', 5800],['bike', 800]], 'cx':[['iphone', 5800],['apple', 5],['apple', 5], ['book', 75]]}
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
python3,购物车
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
《魔兽世界》大逃杀!60人新游玩模式《强袭风暴》3月21日上线
暴雪近日发布了《魔兽世界》10.2.6 更新内容,新游玩模式《强袭风暴》即将于3月21 日在亚服上线,届时玩家将前往阿拉希高地展开一场 60 人大逃杀对战。
艾泽拉斯的冒险者已经征服了艾泽拉斯的大地及遥远的彼岸。他们在对抗世界上最致命的敌人时展现出过人的手腕,并且成功阻止终结宇宙等级的威胁。当他们在为即将于《魔兽世界》资料片《地心之战》中来袭的萨拉塔斯势力做战斗准备时,他们还需要在熟悉的阿拉希高地面对一个全新的敌人──那就是彼此。在《巨龙崛起》10.2.6 更新的《强袭风暴》中,玩家将会进入一个全新的海盗主题大逃杀式限时活动,其中包含极高的风险和史诗级的奖励。
《强袭风暴》不是普通的战场,作为一个独立于主游戏之外的活动,玩家可以用大逃杀的风格来体验《魔兽世界》,不分职业、不分装备(除了你在赛局中捡到的),光是技巧和战略的强弱之分就能决定出谁才是能坚持到最后的赢家。本次活动将会开放单人和双人模式,玩家在加入海盗主题的预赛大厅区域前,可以从强袭风暴角色画面新增好友。游玩游戏将可以累计名望轨迹,《巨龙崛起》和《魔兽世界:巫妖王之怒 经典版》的玩家都可以获得奖励。