博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Python学习的第二周作业--购物车
阅读量:6232 次
发布时间:2019-06-21

本文共 2933 字,大约阅读时间需要 9 分钟。

作业需求: (1)启动程序后,输入用户名密码后,如果是第一次登录,让用户输入工资,然后打印商品列表 (2)允许用户根据商品编号购买商品 (3)用户选择商品后,检测余额是否够,够就直接扣款,不够就提醒 (4)可随时退出,退出时,打印已购买商品和余额 (5)在用户使用过程中, 关键输出,如余额,商品已加入购物车等消息,需高亮显示 (6)用户下一次登录后,输入用户名密码,直接回到上次的状态,即上次消费的余额什么的还是那些,再次登录可继续购买 (7)允许查询之前的消费记录

 
1 #!/usr/bin/env python 2 # -*- coding:utf-8 -*- 3 # Author:Ahappier 4  5 set = False 6 f =open ("user","r+",encoding="utf-8") #读取user文件 7 f_str = str(f.read())  #文件内容转字符串 8 for line in f_str: 9     f_str_str= str(f_str)   #逐行读取10 data = eval(f_str_str)  #字符串转字典11 name = input ("请输入账号:")12 password = input ("请输入密码:")13 while True:14     if name in data:  #判断用户名在字典15         if password in data[name]:  #判断密码在字典内与用户对应16             salary = int (data[name][password])17             print ("\033[31;1m欢迎登陆,当前余额:%s\033[0m"%salary)18             break19         else:20             print ("输入密码错误,请重新输入")21             password = input ("请重新输入密码:")22             continue23     else:24         salary_p ={} #定义密码、工资空字典25         salary_input = input("请输入你的工资:")26         salary = int (salary_input) #输入的工资转成数字27         salary_p[password] = salary #密码与工资对应28         data[name] =salary_p  #用户名和密码 工资对应29         f.seek(0) #文件读取移到开头30         f.write(str(data))  #写入字典31         f.tell()  #返回到当前位置32         break33 34 h =open("history","r+",encoding="utf-8")35 h_str =str(h.read())36 for line in h_str:37     h_str_str=str(h_str)38 data1=eval(h_str_str) #把history文件内容转成字典39 if name not in data1:40     data1[name]=[]         #如果用户名第一次登陆名字不在字典内,历史记录为空41 shoppinglist = data1[name]42 shoppinglist_new =[]   #再次购物的记录为空43 choose = input ("\033[32;1m是否需要查询历史购物记录(y/n)\033[0m") #询问是否查询历史记录44 if choose == "y":45     print("----历史购物记录-----")46     print (shoppinglist)47 48 49 list =[50     ["Apple Iphone",6000],51     ["Apple Watch",4600],52     ["Books",600],53     ["Bike",750],54     ["cups",120],55     ["Apple",50],56     ["banana",60],57 ]                       #购物清单58 59 while not set:60     print ("----商品清单----")61     for index,i in enumerate(list):62         print(index,i)        #输入商品清单63     number = input("输入你选择的商品标号")  #选择编号64     if number =="q":     #当输入q时,退出,并打印清单65         set =True66         data[name][password]= salary #工资给对应的用户密码位置67         f.seek(0)68         f.write(str(data))    #用户信息写入到文件中69         f.tell()70         print("----已购商品清单----")71         print (shoppinglist_new)  #打印清单72         print ("\033[31;1m你的余额:%s\033[0m"%salary)#打印余额73         shoppinglist.extend(shoppinglist_new)#本次购物记录追加到购物列表中74         data1[name]=shoppinglist   #购物列表和用户名对应75         h.seek(0)76         h.write(str(data1))  #购物记录写入文件77         h.tell()78     elif number.isdigit == False:79         print("\033[31;1m输入的不是编号,请重新输入\033[0m")80     elif int(number)>int(len(list)) or int(number)<0:81         print("\033[31;1m你购买的商品不在清单中\033[0m")82     else:83         number_buy =int(number)-184         if list[number_buy][1]
购物车

 

转载于:https://www.cnblogs.com/garrett0220/articles/6689870.html

你可能感兴趣的文章
NSPredicate笔记
查看>>
cocos2d里面如何实现mvc
查看>>
unicode解码小工具
查看>>
Excel电子表格中如何做数据查找,重复数据删除,标记重复数据
查看>>
检测是否为HTML5新标签
查看>>
在升级过内核的机器上安装docker遇到的一个错误
查看>>
hibernate一个注册小例子
查看>>
zz 圣诞丨太阁所有的免费算法视频资料整理
查看>>
电信无限流量卡
查看>>
Java反射机制的适用场景及其利与弊 ***
查看>>
wine 运行Call of Duty Modern Warfare 2以及starcraft2方法
查看>>
找出表的记录数
查看>>
实现WCF和Unity 的集成
查看>>
Java 和 C#在重写上的区别
查看>>
基础才是重中之重——对var的误会,对不起,我愿望(冤枉)你了
查看>>
集合类型的装配
查看>>
【Linux开发技术之工具使用】配置VIM下编程和代码阅读环境
查看>>
【读书笔记】测试驱动开发(中文版)
查看>>
ExtAspNet v3.0.1
查看>>
javascript 构造函数和方法
查看>>