作业要求

实现一个商品管理的一个程序,
运行程序有三个选项,输入1添加商品;输入2删除商品;输入3 查看商品信息
1、添加商品:
商品名称:xx 商品如果已经存在,提示商品已存在
商品价格:xx数量只能为大于0的整数
商品数量:xx,数量只能是大于0的整数
2、删除商品:
输入商品名称 ,就把商品删掉
输入输入的商品名称不存在,要提示不存在
3、查看所有的商品
输入商品名称,查出对应价格、数量
输入all 打印出所有的商品信息
输入的商品不存在提示商品不存在

提示

def函数、文件操作、json与字典的转换

相关教程

python学习笔记(四):python文件操作

python学习笔记(五):python中json与字典格式转换

python学习笔记(六):函数--def自定义函数

代码范例

# 定义一个变量,最好用大写字母,表示它是一个常量,不会改变
product_file = 'product_file.json'
import json # 定义一个公共函数,获取文件内容并转换成字典,共后面三个调用
def read_goods(): with open(product_file,encoding='utf-8') as f:#读取文件 contend=f.read()#读取文件 if len(contend)>0:#判断文件不为空
# if contend:#这两种写法都可以,因为非空即真 rf=json.loads(contend) # json转化成字典 else:
rf= {} # 否则返回一个空字典,说明文件里没东西 return rf # 增加和删除都是写文件,定义一个函数,供他们俩使用
def write_file_comtent(dic):
with open (product_file,'w',encoding='utf-8') as f :
json.dump(dic,f,indent=4,ensure_ascii=False)#空四格,中文要显示 #判断是否为int类型和是否>0,供增加商品使用
def check_digit(st:str): #告诉他传过来的是str类型
if st.isdigit():# 判断是否为整数
st=int(st)
if st>0:# 再判断是否大于0
return st
else:
return 0
else:
return 0 # 增加商品
def add_good():
good=input('请输入商品名称:').strip()
count=input('请输入商品数量:').strip()
price=input('请输入商品价格:').strip() all=read_goods() #获取全部内容
if good=='':
print('商品名称不能为空')
elif good in all:
print('商品已经存在') elif check_digit(count)==0:
print('商品数量为大于0的整数')
elif check_digit(price)==0:
print('商品价格为大于0的整数') else:
all[good]={'price':int(price),'count':int(count)}#将商品加入到字典中,添加一个key和他的值
write_file_comtent(all) # 调用函数,写入文件中 # 查看商品
def show_good():
s_good=input('请输入要查看的商品名称').strip()
all=read_goods() if s_good=='all':
print(all)
elif s_good not in all:
print('商品不存在') else:
print(all.get(s_good)) # 删除商品
def del_good():
d_good=input('请输入要删除的商品名称:').strip() if d_good in all:
all.pop(d_good)
print('已将商品 %s 成功删除'%d_good)
write_file_comtent(all) # 调用函数,将字典写入文件中 choice=input('请选择您的操作:\n1、添加商品\n2、删除商品\n3、查看商品')
if choice=='':
add_good()
elif choice=='':
del_good()
elif choice=='':
show_good()
else:
print('输入有误')
 

python作业/练习/实战:3、实现商品管理的一个程序的更多相关文章

  1. python作业/练习/实战:2、注册、登录(文件读写操作)

    作业要求 1.实现注册功能输入:username.passowrd,cpassowrd最多可以输错3次3个都不能为空用户名长度最少6位, 最长20位,用户名不能重复密码长度最少8位,最长15位两次输入 ...

  2. python作业/练习/实战:1、简单登录脚本

    作业要求 写一个登陆的小程序 username = xiaoming passwd = 123456 1.输入账号密码,输入正确就登陆成功, 提示:欢迎xxxx登陆,今天的日期是xxx. 2.输入错误 ...

  3. python作业/练习/实战:生成双色球小程序

    作业要求: 每注投注号码由6个红色球号码和1个蓝色球号码组成.红色球号码从1--33中选择:蓝色球号码从1--16中选择 代码范例 import random all_red_ball = [str( ...

  4. python作业/练习/实战:生成随机密码

    作业要求1.写一个函数,函数的功能是生成一批密码,存到文件里面 def gen_password(num): #num代表生成多少条密码2.密码复杂度要求 1)长度在,8-16位之间 2)密码必须包括 ...

  5. python作业/练习/实战:下载QQ群所有人的头像

    步骤与提示:1.在腾讯群网页中进入任意一个群,获取相关信息,可以用postman是试一下,可以看到我们要的是mems里面的数据,需要获取到QQ号和群名片,如果没有群名片的话取昵称2.根据QQ号下载头像 ...

  6. python logging模块“另一个程序正在使用此文件,进程无法访问。”问题解决办法

    在多进程下使用python的logging模块,经常会遇到"另一个程序正在使用此文件,进程无法访问."的错误. 解决办法: https://github.com/Preston-L ...

  7. python作业ATM(第五周)

    作业需求: 额度 15000或自定义. 实现购物商城,买东西加入 购物车,调用信用卡接口结账. 可以提现,手续费5%. 支持多账户登录. 支持账户间转账. 记录每月日常消费流水. 提供还款接口. AT ...

  8. oldboy s21day12.设计商城系统,主要提供两个功能:商品管理、会员管理。

    #!/usr/bin/env python# -*- coding:utf-8 -*- # 1.写出三元运算的基本格式及作用?'''a if a>b else b''' # 2.什么是匿名函数? ...

  9. Python作业-选课系统

    目录 Python作业-选课系统 days6作业-选课系统: 1. 程序说明 2. 思路和程序限制 3. 选课系统程序目录结构 4. 测试帐户说明 5. 程序测试过程 title: Python作业- ...

随机推荐

  1. 0.OpenCV框架

    reference: https://docs.opencv.org/4.1.2/ 基本使用 1.图片和视频,读写(2,8) 2.OpenCV基本数据类型(3) 3.OpenCV大型数据类型及操作:图 ...

  2. C++中的智能指针类模板

    1,智能指针本质上是一个对象,这个对象可以像原生的指针一样使用,因为智能指 针相关的类通过重载的技术将指针相关的操作符都进行了重载,所以智能指针对象可以像原生指针一样操作,今天学习智能指针类模板,通过 ...

  3. ELK+filebeat+redis 日志分析平台

    一.简介 ELK Stack是软件集合Elasticsearch.Logstash.Kibana的简称,由这三个软件及其相关的组件可以打造大规模日志实时处理系统. 其中,Elasticsearch 是 ...

  4. HTTPS 301错误码 以及 SSL错误

    301 redirect: 301 代表永久性转移(Permanently Moved) 解决方法:修改请求 http 改为 https PHP通过cURL访问https时出现SSL certific ...

  5. 拓展练习:Linux权限管理--基础权限/ 特殊权限

    目录 基础权限拓展练习 特殊权限拓展练习 基础权限拓展练习 1.用户基础权限为9位,每三位为一组,每组代表着谁的权限? 前三位代表属主权限位 中间三位代表属组权限位 后三位代表其他用户权限位 2.权限 ...

  6. 生成token

    利用中间件生成token 1.安装中间件 npm install jsonwebtoken 2. 使用 Sign() 里面有3个参数,第一个是token里面传递的数据    ,第二个是 key ,第三 ...

  7. SGU438 The Glorious Karlutka River =)

    传送门 sgu原来搬到cf了呀点了好几个链接才找到233 传说中的动态流(?) 反正很暴力就对了QwQ 有容量限制->拆点 对于每个点拆成入点和出点 时间限制->分层 对于每个时刻的每个石 ...

  8. docker 运行jenkins及vue项目与springboot项目(四.docker运行nginx)

    docker 运行jenkins及vue项目与springboot项目: 一.安装docker 二.docker运行jenkins为自动打包运行做准备 三.jenkins的使用及自动打包vue项目 四 ...

  9. Vue学习笔记【28】——Vue路由(使用 children 属性实现路由嵌套)

    使用 children 属性实现路由嵌套   <div id="app">    <router-link to="/account"> ...

  10. Oracle with as语法

    with as优点 增加了sql的易读性,如果构造了多个子查询,结构会更清晰: 更重要的是:“一次分析,多次使用”,这也是为什么会提供性能的地方,达到了“少读”的目标 用法:给查询的语句起个别名 e. ...