学习Python3,坚持每一次学习都有一点点知识的积累,瞄准目标gogogo!这次仍然是练习,字符串操作、dict字典的合理使用,增加了文件的读和写,使用了一些稍微复杂的逻辑(题目仍然源自老男孩)
购物车程序,消费者入口:
1.商品信息存在文件里
2.已购商品,余额记录
先上代码:
#Author wsp #用户程序,要求如下: # 1.商品信息存在文件里 # 2.已购商品,余额记录 print("这里是个人购物系统".center(70, "#")) #读取用户信息,余额、已购商品列表 while True: #只读方式打开文件 goods_file_r = open("user.txt", "r") lines = goods_file_r.readlines() #使用list存储读取出来的用户信息 user_info = [] for line in lines: user_info.append(line) if user_info.__len__() > 0: # 得到用户剩余金额 salary = int(user_info[0]) # 去掉第一行,得到用户购买商品信息 del user_info[0] else: #用户还没有记录,先输入金额 salary = int(input("目前没有您的记录,请输入您的初始金额:")) #打印相关信息 print("您现在余额是{salary}".format(salary=salary)) print("您当前已购商品及金额列表如下:") for goods in user_info: print(goods.strip()) #只读方式打开商品列表文件 goods_file_r = open("goods.txt", "r") lines = goods_file_r.readlines() #涉及到去重,使用字典 goods_list = {} print("当前商品列表如下:") for line in lines: goods_line = line.split(" ") if goods_line.__len__() == 2: goods_list[goods_line[0].strip()] = goods_line[1].strip() print("{name} {cost}".format(name=goods_line[0].strip(), cost=goods_line[1].strip())) #关闭文件句柄 goods_file_r.close() choice_goods_name = input("商品信息显示完成,请选择想要购买的商品:,'q' 退出>>>:") if goods_list.__contains__(choice_goods_name): if int(goods_list[choice_goods_name]) > salary: print("您的金额不足,只剩 {salary}元!".format(salary=salary)) else: print("添加商品 {goods} 到您的商品列表,并扣款成功 ".format(goods=choice_goods_name)) user_info.append(choice_goods_name+" "+goods_list[choice_goods_name]) salary = salary - int(goods_list[choice_goods_name]) #写入文件中: # 写的方式打开文件 goods_file_w = open("user.txt", "w") goods_file_w.writelines(str(salary)) goods_file_w.write('\n') for input_goods in user_info: goods_file_w.writelines(input_goods) # 关闭写文件句柄 goods_file_w.close() continue; elif choice_goods_name=='q': break; else: print("您的输入不合法!")
要点:
1.读取文件和写入文件,我使用的不同的文件打开句柄,需要注意的是文件操作之后及时关闭
2.使用了以前没有使用过的Str的center()方法,前后补充分隔符,算是黑白屏操作稍微好看点,也好玩一点
3.使用str的strip()方法,去除掉回车符
4.商品列表仍然使用字典,值得注意的是用户的购物信息使用list存储,因为用户有可能买两个相同的产品
练习暂时告一段落了,后面开始学习新的知识了,加油加油老铁们。
什么时候能够自己写爬虫爬点MM图片啥的呀,哈哈哈。