在网上看到了金角大王(Alex)老师的课,老师讲课很幽默,开始记录每一次学习作业的内容,欢迎大家交流以及代码的使用。

1. day2作业内容
     程序:购物车程序
     需求:
              1.启动程序后,让用户输入工资,然后打印商品列表
              2.允许用户根据商品编号购买商品
              3.用户选择商品后,检测余额是否够,够就直接扣款,不够就提醒
              4.可随时退出,退出时,打印已购买商品和余额
              5.用户入口:
                   5.1商品信息存储在文件里
                   5.2已购商品,余额的记录(采用文本储存)
              6.商家入口:
                   6.1可添加商品,修改商品价格
 2. day2代码
      登入时需先输入账户名称,管理员账号:PyDragon,用户账号:大龙 。对应了两个不同的操作界面,并每次结束程序和开始程序时都从本地文本文件中读取列表信息,实现数据在本地的存储。
      具体代码如下:

#coding:utf-8
#引入python内置函数os
import os#购物系统类
class shoppingSystem():FoodName = NoneFoodCost = 0Function = NoneCost = 0System = TrueUserName = NoneSalary = 0Money = 0user_and_salaryList = [["大龙",0]]productList = []buyList = []tplt = "{0:>4}\t{1:>4}\t{2:>6}"# {1:{3}^8} 1表示位置,{3}表示用第3个参数来填充,^表示居中,8表示占8个位置,chr(12288)中文空格tplt_1 = "{0:>4}\t{1:{3}^8}\t{2:>0}"#数据文件导入初始化def init_file(self):self.read_data(self.buyList,'buyList')self.read_data_2(self.productList,'productList')#用户名登入def MainShop(self):self.read_money('money')self.UserName = input("输入用户名:")if self.GM():self.GM_display()self.GM_function()elif self.check_user():self.display()self.buy()else:print("用户名不存在,请重新输入")self.MainShop()#判断是否为管理员用户名def GM(self):if self.UserName == 'PyDragon':return 1#主界面显示def display(self):print(self.tplt.format('购买编号','食物名称','单价(元)',chr(12288)))for index,item in enumerate(self.productList):print(self.tplt_1.format(index,item[0],item[1],chr(12288)))print('当前账户剩余:'+str(self.Money)+'元')print('已购清单(F)  退出系统(Q)')#管理员主界面显示def GM_display(self):print('----------------管理员后台界面-----------------')print('增加食品(A) 删除食品(D) 修改价格(C) 查询菜单(L)')print('退出系统(Q)')print('-----------------------------------------------')#管理员功能def GM_function(self):self.Function = input("执行功能按键编号:")if self.Function == 'a':self.function_a()elif self.Function == 'd':self.function_d()elif self.Function == 'c':self.function_c()elif self.Function == 'l':self.function_l()elif self.Function == 'q':self.save_data_2(self.productList,'productList')exit()else:print('输入错误,请重新输入执行功能')self.GM_function()#管理员更改食物价格def function_c(self):self.FoodName = input("输入要更改的食物名称:")self.FoodCost = input("输入"+'\033[1;32;0m'+str(self.FoodName)+'\033[0m'+"新价格")if self.FoodCost.isdigit():if not self.check_food():i = self.find_food_number()self.productList[i][1] = self.FoodCostprint(('\033[1;32;0m'+str(self.FoodName)+'\033[0m')+'修改成功')print('继续修改(C)  返回主菜单(R)')choose = input()if choose == 'c':self.function_c()elif choose == 'r':self.GM_display()self.GM_function()else:print('输入错误,自动返回主菜单')self.GM_display()self.GM_function()else:print('食物名重复,请重新核对输入')self.function_a()else:self.GM_display()print('\033[1;31;0m价格非法输入,退回至主菜单\033[0m')self.GM_function()#管理员添加食物功能def function_a(self):self.FoodName = input("输入食物名称:")self.FoodCost = input("输入"+'\033[1;32;0m'+str(self.FoodName)+'\033[0m'+"单价")if self.FoodCost.isdigit():if self.check_food():self.productList.append([self.FoodName,int(self.FoodCost)])print(('\033[1;32;0m'+str(self.FoodName)+'\033[0m')+'添加成功')print('继续添加(A)  返回主菜单(R)')choose = input()if choose == 'a':self.function_a()elif choose == 'r':self.GM_display()self.GM_function()else:print('输入错误,自动返回主菜单')self.GM_display()self.GM_function()else:print('食物名重复,请重新核对输入')self.function_a()else:self.GM_display()print('\033[1;31;0m价格非法输入,退回至主菜单\033[0m')self.GM_function()#管理员查看食物功能def function_l(self):self.show_food()print('返回主菜单(R)')choose = input()if choose == 'r':self.GM_display()self.GM_function()else:print('输入错误,自动返回主菜单')self.GM_display()self.GM_function()#管理员删除食物功能def function_d(self):self.FoodName = input('请输入要删除的食物名称:')if self.check_food():print('食物名称不存在,请检查确认后重新输入')self.function_d()for i in range(len(self.productList)):if self.FoodName == self.productList[i][0]:self.productList.remove(self.productList[i])print("删除"+'\033[1;31;0m'+str(self.FoodName)+'\033[0m'+"成功")breakprint('继续删除(D)   返回主菜单(R)')choose = input()if choose == 'd':self.function_d()elif choose == 'r':self.GM_display()self.GM_function()else:print('输入错误,自动返回主菜单')self.GM_display()self.GM_function()#展示食物清单def show_food(self):print('------------食物清单-------------')print(self.tplt.format('购买编号','食物名称','单价(元)',chr(12288)))for index,item in enumerate(self.productList):print(self.tplt_1.format(index,item[0],item[1],chr(12288)))print('---------------------------------')#检查食物是否重名def check_food(self):for i in range(len(self.productList)):if self.FoodName == self.productList[i][0]:return 0else:return 1#c查询食物编号def find_food_number(self):for i in range(len(self.productList)):if self.FoodName == self.productList[i][0]:return ielse:return -1#用户名核对def check_user(self):for i in range(len(self.user_and_salaryList)):if self.UserName == self.user_and_salaryList[i][0]:self.Salary = input("认证成功,输入存储金额:")try:self.user_and_salaryList[i][1] += int(self.Salary)self.Money += self.user_and_salaryList[i][1]except Exception as e:print("请输入纯数字金额,异常:",e)self.check_user()return 1#购买功能def buy(self):while self.System:choose = input("输入你所要购买的食物编号:")if choose == 'q':self.save_data_1(self.buyList,'buyList')self.save_data_2(self.productList,'productList')self.save_money('money')print('-----------------------')print('欢迎使用本系统,下次再见')print('-----------------------')exit()elif choose == 'f':print('------------购买清单--------------')for i in self.buyList:print(i)print('账户当前余额:',self.Money)print('----------------------------------')self.return_way()elif choose.isdigit():choose = int(choose)if 0 <= choose < len(self.productList):if self.Money >= self.productList[choose][1]:self.Money -= self.productList[choose][1]self.Cost += self.productList[choose][1]self.buyList.append(self.productList[choose][0])self.display()print("-------------------------------------")print('购买成功,请继续输入编号购买或按Q键退出')print("-------------------------------------")else:self.display()print("-------------------")print("余额不足,请重新选择")print("-------------------")self.buy()else:print("-----------------")print("请输入有效食物编号")print("-----------------")else:print('输入错误')self.buy()#返回上级菜单def return_way(self):R = input('按R键返回上一级菜单')if R == 'r':self.display()else:self.return_way()#存储一维清单列表至本地文件def save_data_1(self,self_list,list_name):file_handle = open(list_name+'.txt','w',encoding="utf-8")for item in self_list:file_handle.write(item)file_handle.write('\n')file_handle.close()#存储二维清单列表至本地文件def save_data_2(self,self_list,list_name):file_handle = open(list_name+'.txt','w',encoding="utf-8")#删除原文件数据再写入file_handle.truncate()for item in self_list:file_handle.write(str(item[0]))file_handle.write(' ')file_handle.write(str(item[1]))file_handle.write('\n')file_handle.close()#读取二维清单列表内容def read_data_2(self,self_list,list_name):rs = os.path.exists(list_name+'.txt')if rs == True:file_handle = open(list_name+'.txt',mode='r',encoding="utf-8")contents = file_handle.readlines()for msg in contents:#去除\nmsg = msg.strip('\n')#使用 空格分割存储成一维数组foodfood = msg.split(' ')food[1] = int(food[1])self_list.append(food)file_handle.close()#读取一维清单列表内容def read_data(self,self_list,list_name):rs = os.path.exists(list_name+'.txt')if rs == True:# 1,打开文件file_handle = open(list_name+'.txt',mode='r',encoding="utf-8")#2.读取所有行contents = file_handle.readlines()#3.取出每一个元素for msg in contents:msg = msg.strip('\n')self_list.append(msg)file_handle.close()#存储Money至本地文件def save_money(self,list_name):file_handle = open(list_name+'.txt','w',encoding="utf-8")file_handle.truncate()file_handle.write(str(self.Money))file_handle.close()#读取Moneydef read_money(self,list_name):rs = os.path.exists(list_name+'.txt')if rs == True:file_handle = open(list_name+'.txt',mode='r',encoding="utf-8")try:self.Money = int(file_handle.readline())except Exception as e:print("请检查文件中的数据是否正确,异常:"+ str(e) )finally:file_handle.close()#window系统执行入口
if __name__ == '__main__':shoppingSystem().init_file()shoppingSystem().MainShop()

3. 总结
   3.1 如果要对数据进行添删改查时注意不要使用元组,元组不能进行更改,这里要使用列表
   3.2 元组通常用于创建不可更改的数据,并告诉使用者这个数据不能更改
   3.3 通过引号隔开对可变参数进行字体颜色的修改 '\033[1;31;0m'+str(self.FoodName)+'\033[0m'
   3.4 在进行判断时用 == ,在进行赋值时用 =


"IE编程改善分析:敲代码是最快提升你编程能力的手段" ——————————by.PyDragon

【python_自动化运维教程作业】【day2】餐饮店自助点餐系统相关推荐

  1. 【Python自动化运维之路Day2】

    1. 常量命名规则 在Python中,会在变量命名上标明某变量是常量,通常采用全是大写的方式来标明,如: CONNECT= '127.0.0.1' PORT = '3306' 2.Python编译 p ...

  2. python linux运维教程 推荐_Linux 运维入门到跑路书单推荐

    一.基础入门 <鸟哥的Linux私房菜基础学习篇>:最具知名度的Linux入门书<鸟哥的Linux私房菜基础学习篇>,全面而详细地介绍了Linux操作系统.鸟哥的Linux私房 ...

  3. 一个颜值低但脾气超好的自动化运维实战入门教程

    注:本教程由廖高祥发布于实验楼,版权归原作者所有. 什么是自动化运维? 自动化运维是指将IT运维中日常的.大量的重复性工作自动化,把过去的手工执行转为自动化操作.自动化运维不单纯是一个维护过程,更是一 ...

  4. WebHook入门教程:快速实现自动化运维,如自动热部署、自动重启服务、自动备份数据库等等

    WebHook入门教程 当我们向Github仓库(其他支持webhook的Git仓库都可以)Push代码后,可以通过webhook向特定URL发起一次Post请求,本篇文章所说的WebHook,就是运 ...

  5. 云计算开发教程:Python自动化运维开发实战流程控制

    今天这篇文章是给大家分享一些云计算开发教程,今天讲解的是:Python自动化运维开发实战流程控制. Python条件语句是通过一条或多条语句的执行结果(True或者False)来决定执行的代码块. P ...

  6. DevOps实战 —— 如何高效地远程部署?自动化运维利器 Fabric 教程

    如何高效地远程部署?自动化运维利器 Fabric 教程 关于 Python 自动化的话题,在上一篇文章中,我介绍了 Invoke 库,它是 Fabric 的最重要组件之一.Fabric 也是一个被广泛 ...

  7. 自动化运维--封装win10系统教程

    自动化运维–封装win10系统教程 作者:蓝眼泪 1.拷贝封装资料到D盘 2.安装win10母盘,进入pe系统,选择桌面上的exi系统安装. 3.进入审核模式,按住ctrl+shift+f3. 4.启 ...

  8. MySQL数据库性能优化及自动化运维实践教程!DBA日常工作

    MySQL数据库性能优化及自动化运维实践教程!本文作者将站在更加全面的角度分享他在这一年多 DBA 工作中的经验,希望可以给大家带来启发和帮助. DBA 的日常工作 我觉得 DBA 真的很忙,我们来看 ...

  9. 云计算学习教程,Python自动化运维开发实战

    都忘记是什么时候知道python的了,我是搞linux运维的,早先只是知道搞运维必须会shell,要做一些运维自动化的工作,比如实现一些定时备份数据啊.批量执行某个操作啊.写写监控脚本什么的. 后来发 ...

最新文章

  1. html loading原理,加载HTML-Loading HTML
  2. 日志库EasyLogging++学习系列(4)—— 格式说明符
  3. C语言插入排序算法及代码
  4. LeetCode LCP 33. 蓄水(暴力枚举)
  5. linux下添加apt-get命令,Ubuntu Linux系统下apt-get命令整理
  6. 机器 学习中的方差和偏差
  7. vb excel 连续多个值赋值_VB实现向数组中插入元素
  8. php方法重载方法重写_Java基础之方法的重载
  9. 企业邮件系统的发展和变化
  10. 使用静态库的一些问题 -all_load
  11. 检测PYthon标识符合法性脚本
  12. STK MATLAB联合仿真(一)STK与MATLAB的连接(COM与Connector)
  13. [RS] 地理空间数据云 使用ftp批量下载影像(以批量下载Landsat8数据为例)
  14. 阿里巴巴-菜鸟网络和申通快递面试
  15. 如何让Loadrunner或Jmeter发送邮件报告
  16. 什么是自媒体、自媒体平台???
  17. 解决1KB文件夹快捷方式病毒
  18. android设备如何苹果,手机怎么玩:如何像安卓一样管理iPhone文件?_苹果 iPhone 5_手机生活新闻-中关村在线...
  19. linux下网口监控软件_管理员必备的20个Linux系统监控工具 | 旺旺知识库
  20. 开发板ping不通虚拟机

热门文章

  1. adf机器_adf(adf文件转成shp)
  2. 利用vue实现“显示更多”功能
  3. 最新版微信 C# 微信HOOK 源代码,微信版本 3.0.0.57
  4. 【Python】大数据挖掘课程作业3——使用朴素贝叶斯分类对B站评论进行分析
  5. R语言学习(一)前言
  6. 教你如果恢复硬盘直接删除的视频资料
  7. java计算机毕业设计HTML5“守护萌宠”网站设计与实现MyBatis+系统+LW文档+源码+调试部署
  8. 【小白目标检测】手把手教你做视频中的实时目标检测(基于Pelee算法)
  9. 音频标准AES的一点理解
  10. 车牌识别定位 matlab基本方法和操作