练习--手机产品信息--函数、文件读写
'''
手机销售系统
手机品牌 手机价格 库存数量
vivoX9 2798 25
iphone7(32G) 4888 31
iphone7(128G) 5668 22
iphone7P(128G) 6616 29
iphone6(16G) 3858 14
....
....
....
功能要求:
四个选项:
1.查看所有手机品牌
1.vivoX9
2.iphone7(32G)
......
分支选项:
1.选择产品序号查看详情(根据序号输出产品名称,价格,库存)
1.购买(库存数量-1,库存为0时,删除该产品)
2.返回
2.返回
2.更改产品库存信息
1.添加新产品(添加新产品,包括产品名称、价格、库存)
2.修改原有产品
输出所有产品信息(将产品的名称 价格 库存)
1.根据选择序号进行修改
2.返回
3.移除产品库存信息
1.查看所有产品,根据序号移除
2.移除所有产品
3.返回
4.退出程序
'''
#查看产品信息的函数
def query():print('1.查看所有手机品牌')print('2.选择产品序号查看详情')num=int(input('请输入您的选择:'))while num not in range(1,3):num = int(input('该选项不存在,请您重选选择:'))if num==1:if len(product_list) == 0:print('没有产品信息!')# 强制结束函数的执行 return 下面的代码 都不会再执行了returnfor x in range(0,len(product_list)):kind=product_list[x]#print('手机品牌:%s'% kind[0])print('序号:%s手机品牌:%s手机价格:%s手机库存:%s' % (x, kind[0], kind[1], kind[2]))else:if len(product_list) == 0:print('没有产品信息,无法进行查看!')# 强制结束函数的执行 return 下面的代码 都不会再执行了returnindex=get_index('查询')kind=product_list[index]print('序号:%s手机品牌:%s手机价格:%s手机库存:%s' % (index, kind[0], kind[1], kind[2]))print('~~~~~~~~~~~~~~1.购买~~~~~~~~~~~~')print('~~~~~~~~~~~~~~2.返回~~~~~~~~~~~~')num = int(input('请输入您的选择:'))while num not in range(1, 3):num = int(input('没有改选项,请重选:'))if num==1:print('购买成功')total_number=int(kind[2])total_number-=1kind[2]=total_numberif total_number==0:del product_list[index]print('该产品已无库存!')else:print('返回')#封装判断选择学员序号是否在范围的函数
#带返回值的函数 函数执行完之后,会返回一个结果,可以声明变量接收这个结果
def get_index(type):'''函数的功能描述:获取用户选择的学员序号:param type: 选择序号类型:return: 选择的序号'''index = input('请选择要%s的产品序号:'%type)# 转换为整数类型index = int(index)while index not in range(0, len(product_list)):index = input('选择的产品序号不存在,请重选:')index = int(index)#返回选择的序号return indexdef update():print('1.添加新产品')print('2.修改原有产品')num = int(input('请输入您的选择:'))while num not in range(1, 3):num = int(input('改选项不存在,请重选:'))if num==1:# 添加产品信息name = input('请输入手机品牌:')price = input('请输入手机价格:')number = input('请输入库存数量:')# 把name、age、phone放在小列表中kind = [name, price, number]product_list.append(kind)print('****添加产品成功****')else:#判断是否有产品信息,如果没有,直接结束函数的执行if len(product_list) == 0:print('没有产品信息,无法进行修改操作!')# 强制结束函数的执行 return 下面的代码 都不会再执行了returnfor x in range(0,len(product_list)):kind=product_list[x]print('序号:%s手机品牌:%s手机价格:%s手机库存:%s' % (x, kind[0], kind[1], kind[2]))#选择要修改的产品序号index=get_index('修改')kind=product_list[index]new_name=input('请输入修改后的手机品牌(%s):'%kind[0])new_price=input('请输入修改后的手机价格(%s):'%kind[1])new_number=input('请输入修改后的库存数量(%s):'%kind[2])#修改小列表中的数据kind[0]=new_namekind[1]=new_pricekind[2]=new_numberprint('------------------修改数据完成------------')#移除产品函数
def delete():print('1.根据序号移除')print('2.移除所有产品')num = int(input('请输入您的选择:'))while num not in range(1, 3):num = int(input('没有改选项,请重选:'))if num==1:for x in range(0, len(product_list)):kind = product_list[x]print('序号:%s手机品牌:%s手机价格:%s手机库存:%s' % (x, kind[0], kind[1], kind[2]))index=get_index('删除')rs = input('确定要删除序号为(%s)的手机信息?y(是的)/n(不是):' % index)if rs == 'y':# 根据索引删除列表中的数据del product_list[index]print('************删除数据成功*******')else:rs = input('确定要删除所有信息?y(是的)/n(不是):')if rs == 'y':# 根据索引删除列表中的数据product_list.clear()else:print('取消删除数据操作!!!')#保存数据
def save_data():file_handle=open('product.txt',mode='w')for kind in product_list:s=' '.join(kind)file_handle.write(s)file_handle.write('\n')file_handle.close()#读取数据
import os
def read_data():#判断文件是否存在rs=os.path.exists('product.txt')if rs==True:file_handle=open('product.txt',mode='r')#读取所有行contents=file_handle.readlines()for msg in contents:#去除\nmsg=msg.strip('\n')kind=msg.split(' ')product_list.append(kind)file_handle.close()product_list=[]
read_data()
while True:print('-------------------手机销售系统----------------')print('1.查看所有手机品牌')print('2.更改产品库存信息')print('3.移除产品库存信息')print('4.退出程序')num=int(input('请输入您的选择:'))while num not in range(1,5):num = int(input('改选项不存在,请重选:'))if num==1:query()save_data()elif num==2:update()save_data()elif num==3:delete()save_data()else:print('-----------程序运行结束-------------')break
练习--手机产品信息--函数、文件读写相关推荐
- Python的open函数文件读写线程不安全,logging模型文件读写线程安全!
工作中遇到的问题:如何在多线程的程序中同时记录日志? 最初图省事,使用了最原始的open函数来写日志,因为开始使用的写文件模式的是追加('a'),发现并没有线程不安全的现象,各个线程的的日志信息都写入 ...
- python以追加方式打开文件 线程安全吗,Python的open函数文件读写线程不安全,logging模型文件读写线程安全!...
工作中遇到的问题:如何在多线程的程序中同时记录日志? 最初图省事,使用了最原始的open函数来写日志,因为开始使用的写文件模式的是追加('a'),发现并没有线程不安全的现象,各个线程的的日志信息都写入 ...
- vb 字符串截取_VB进阶之玩转文件读写
点击上方蓝字关注我们 今天我们聊一聊VB中文件数据的读与写,读与写可以让你批量导入计算再把计算结果导出去,而不是人为的输入计算这样效率太低.我今天将从以下几点进行讲解说明: 批量的输入输出控件 文件读 ...
- 全网最详细C/C++文件读写总结
1.linux系统函数文件读写 open函数: int open(const char * pathname, int flags); int open(const char * pathname, ...
- C语言文件读写操作主要函数及其用例
C语言把磁盘文件看成是字符(或字节)的序列,按照存储信息的形式来说,文件主要是有文本文件和二进制文件.文本文件由一个个字符组成,每个字节存放一个ASCII码制,代表一个字符.二进制文件把内存中的数据按 ...
- VC INI文件读写 和 GetProfileString,WriteProfileString函数的使用
VC中用函数读写ini文件的方法 ini文件(即Initialization file),这种类型的文件中通常存放的是一个程序的初始化信息.ini文件由若干个节(Section)组成,每个Sectio ...
- C语言 文件读写 ferror 函数 - C语言零基础入门教程
目录 一.ferror 函数简介 二.ferror 函数实战 三.猜你喜欢 零基础 C/C++ 学习路线推荐 : C/C++ 学习目录 >> C 语言基础入门 一.ferror 函数简介 ...
- 使用FileSystem类进行文件读写及查看文件信息
使用FileSystem类进行文件读写及查看文件信息 在这一节我们要深入了解Hadoop的FileSystem类--这是与与hadoop的文件系统交互的重要接口.虽然我们只是着重于HDFS的实现,但我 ...
- numpy文件读写的三对函数
在Python很多库中,使用文件名的地方都可以使用文件对象来替代. 在下述三种方法中,都是如此. 一.a.tofile()和np.fromfile() numpy中的ndarray对象有一个函数tof ...
最新文章
- 17委托异步调用方法
- 深入Atlas系列:客户端网络访问基础结构示例(1) - 编写并使用自定义的WebRequestExecutor...
- LightGBM 相关知识理解
- Socket编程实践(2) --Socket编程导引
- python调用函数_Python 函数中的 4 种参数类型
- 软帝java培训实习日志,在软帝学习的第一个星期的小总结
- 科大讯飞刘聪:如何持续保持语音识别技术的领先
- python艺术分形数_分形维度特征——基于Python实现
- matlab 正交park变换 功率守恒,第二章功率变换.ppt
- ReportMachine如何导出PDF文档?
- 解决在VsCode中使用CodeRunner中文乱码
- 恩尼格码机的原理以及破解方法
- 计算机显示器性能指标的是,简述显示器的主要性能指标
- 网络电视广告屏蔽教程
- diskpart建立新卷
- PEEKABOO——冲刺总结
- 栈中的peek()、pop()和push()、Add()方法
- 实习日志 (2021.09.13)
- centos无法识别NTFS格式的U盘解决办法
- 关于inetd和xinetd
热门文章
- 效率神奇,这是最好用的电子笔记工具
- 蓝桥杯算法训练合集一 1.印章2.拿金币3.数字游戏4.无聊的逗5.礼物
- pygame教你从0到1一步步实现点到点的智能追踪系统(其二)
- Windows逆向学习提纲
- ROS-Industrial Robot Driver Specification
- 元器件的非线性与线性
- Nginx配置二级目录反向代理本机不同端口
- K_A07_002 基于 STM32等单片机驱动ULN2003模块按键控制步进电机正反转
- ansible入门快速上手使用教程
- 如何选择最佳的绩效考核评级表