Python3学习笔记6:字符串操作、dict字典、文件file的合理使用----购物车优化之用户端(消费者端)
学习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图片啥的呀,哈哈哈。