'''
手机销售系统
    手机品牌    手机价格    库存数量
     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

练习--手机产品信息--函数、文件读写相关推荐

  1. Python的open函数文件读写线程不安全,logging模型文件读写线程安全!

    工作中遇到的问题:如何在多线程的程序中同时记录日志? 最初图省事,使用了最原始的open函数来写日志,因为开始使用的写文件模式的是追加('a'),发现并没有线程不安全的现象,各个线程的的日志信息都写入 ...

  2. python以追加方式打开文件 线程安全吗,Python的open函数文件读写线程不安全,logging模型文件读写线程安全!...

    工作中遇到的问题:如何在多线程的程序中同时记录日志? 最初图省事,使用了最原始的open函数来写日志,因为开始使用的写文件模式的是追加('a'),发现并没有线程不安全的现象,各个线程的的日志信息都写入 ...

  3. vb 字符串截取_VB进阶之玩转文件读写

    点击上方蓝字关注我们 今天我们聊一聊VB中文件数据的读与写,读与写可以让你批量导入计算再把计算结果导出去,而不是人为的输入计算这样效率太低.我今天将从以下几点进行讲解说明: 批量的输入输出控件 文件读 ...

  4. 全网最详细C/C++文件读写总结

    1.linux系统函数文件读写 open函数: int open(const char * pathname, int flags); int open(const char * pathname, ...

  5. C语言文件读写操作主要函数及其用例

    C语言把磁盘文件看成是字符(或字节)的序列,按照存储信息的形式来说,文件主要是有文本文件和二进制文件.文本文件由一个个字符组成,每个字节存放一个ASCII码制,代表一个字符.二进制文件把内存中的数据按 ...

  6. VC INI文件读写 和 GetProfileString,WriteProfileString函数的使用

    VC中用函数读写ini文件的方法 ini文件(即Initialization file),这种类型的文件中通常存放的是一个程序的初始化信息.ini文件由若干个节(Section)组成,每个Sectio ...

  7. C语言 文件读写 ferror 函数 - C语言零基础入门教程

    目录 一.ferror 函数简介 二.ferror 函数实战 三.猜你喜欢 零基础 C/C++ 学习路线推荐 : C/C++ 学习目录 >> C 语言基础入门 一.ferror 函数简介 ...

  8. 使用FileSystem类进行文件读写及查看文件信息

    使用FileSystem类进行文件读写及查看文件信息 在这一节我们要深入了解Hadoop的FileSystem类--这是与与hadoop的文件系统交互的重要接口.虽然我们只是着重于HDFS的实现,但我 ...

  9. numpy文件读写的三对函数

    在Python很多库中,使用文件名的地方都可以使用文件对象来替代. 在下述三种方法中,都是如此. 一.a.tofile()和np.fromfile() numpy中的ndarray对象有一个函数tof ...

最新文章

  1. 17委托异步调用方法
  2. 深入Atlas系列:客户端网络访问基础结构示例(1) - 编写并使用自定义的WebRequestExecutor...
  3. LightGBM 相关知识理解
  4. Socket编程实践(2) --Socket编程导引
  5. python调用函数_Python 函数中的 4 种参数类型
  6. 软帝java培训实习日志,在软帝学习的第一个星期的小总结
  7. 科大讯飞刘聪:如何持续保持语音识别技术的领先
  8. python艺术分形数_分形维度特征——基于Python实现
  9. matlab 正交park变换 功率守恒,第二章功率变换.ppt
  10. ReportMachine如何导出PDF文档?
  11. 解决在VsCode中使用CodeRunner中文乱码
  12. 恩尼格码机的原理以及破解方法
  13. 计算机显示器性能指标的是,简述显示器的主要性能指标
  14. 网络电视广告屏蔽教程
  15. diskpart建立新卷
  16. PEEKABOO——冲刺总结
  17. 栈中的peek()、pop()和push()、Add()方法
  18. 实习日志 (2021.09.13)
  19. centos无法识别NTFS格式的U盘解决办法
  20. 关于inetd和xinetd

热门文章

  1. 效率神奇,这是最好用的电子笔记工具
  2. 蓝桥杯算法训练合集一 1.印章2.拿金币3.数字游戏4.无聊的逗5.礼物
  3. pygame教你从0到1一步步实现点到点的智能追踪系统(其二)
  4. Windows逆向学习提纲
  5. ROS-Industrial Robot Driver Specification
  6. 元器件的非线性与线性
  7. Nginx配置二级目录反向代理本机不同端口
  8. K_A07_002 基于 STM32等单片机驱动ULN2003模块按键控制步进电机正反转
  9. ansible入门快速上手使用教程
  10. 如何选择最佳的绩效考核评级表