程序要求:
1.商品信息保存在文件中。
2.打印商品信息,包括名称及编号,价格
3.输入工资
4.选择商品编号将商品放入购物车,并计算剩余工资。
5.工资不够时提醒余额不足
6.将已购商品,余额记录长久保存
7.打印已购商品名单
8.可以添加商品及价格
流程图
扫描二维码关注公众号,回复:
3846036 查看本文章
所用开发软件:pycharm
开发环境:win10
所用文件:
- 购物记录文件,名为shopping_date.txt
内容默认为空
- 商品信息文件,名为product_date.txt
内容为:apple:10000
huawei:10000
具体实现代码
# Author: Mina product_list = [] # 构建空列表以存放商品信息 shopping_list = [] # 构建空列表以存放已购商品信息 while True: choice = input('查看购物记录请按W\n添加商品信息请按A\n购物请按S') if choice == 'w' or choice == 'W': with open('shopping_date', 'r')as f_shop: # 以只读模式打开购物信息文件 shop_list = f_shop.readlines() # 读取购物信息并转为列表 for shop_line in shop_list: # 利用循环打印购物记录 shop_line = shop_line.strip() print(shop_line) else: pass elif choice == 'A' or choice == 'a': new_product = input('添加的商品名称:') new_price = input('商品价格:') with open('product_date', 'a') as f_prod: # 以只写模式打开商品信息文件 f_prod.writelines([new_product, ':', new_price, '\n']) # 将商品信息以列表的形式写入商品文件 # 商品名与价格用分号隔开,以便于之后的读取 elif choice == 's' or choice == 'S': break # 跳出本循环,执行下个模块的命令 else: print('无效指令,请重新输入') flag = input('退出请按q,继续请按g') if flag == 'Q' or flag == 'q': exit('退出程序') elif flag == 'g' or flag == 'G': continue else: print('无效命令,请重新输入') else: exit() salary = input('请输入你的工资:') if salary.isdigit(): # 判断输入工资是否为整数,返回值不为0 salary = int(salary) # 实际输入为字符串,强制转换为整数,便于之后的计算 else: print('输入有误,请重新输入工资') while True: with open('product_date', 'r') as f_prod: # 以只读模式打开商品信息文件 prod_list = f_prod.readlines() # 读取商品信息 i = len(prod_list) # 计算列表长度,用于后面判断是否有该商品 for prod_line in prod_list: (prod, price) = prod_line.strip().split(':') # 分别提取商品名与价格,以分号为分割 print(prod_list.index(prod_line), '\t', prod, '\t', price) # 将列表下标作为商品编号,打印商品信息 price = int(price) # 将价格转为整数类型,便于计算 product_list.append([prod, price]) # 将商品信息以列表的形式追加到商品信息列表便于查找 else: pass user_choice = input('请输入商品编号:\n(如果需要退出请按Q)') if user_choice.isdigit(): user_choice = int(user_choice) if 0 <= user_choice < i: # 判断有无该商品 prod_item = product_list[user_choice] # 提取商品信息 if prod_item[1] <= salary: # 判断工资余额是否充足 salary = salary-prod_item[1] # 计算购买商品后的余额 shopping_list.append(prod_item) # 将已购商品信息列表追加到购物记录列表 print("将%s加入购物车,剩余工资为%s" % (prod_item, salary)) else: print('\033[31;1m\033[0m 你的余额不足,为%s\033[0m' % salary) else: print('\033[32;1m\033[0m 没有这件商品\033[0m') elif user_choice == 'q' or user_choice == 'Q': # 退出购买程序 print('shopping list'.center(30, '-')) # 打印购物记录 for p in shopping_list: # 利用循环打印已购商品信息 print(p) with open('shopping_date', 'a')as f_shop: # 以追加模式打开购物记录文件 f_shop.writelines(str(p) + '\n') # 将已购商品信息以列表形式写人购物记录文件 f_shop.write(str(salary) + '\n') # 将余额写入购物记录文件 else: pass exit('你的余额为%d' % salary) # 退出程序,并打印余额 else: print('错误操作')