作业要求

实现一个商品管理的一个程序,
运行程序有三个选项,输入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. MultipartFile 图片上传到Linux服务器Tomcat下的webapps目录

    第一次接触 linux 服务器,做图片上传的时候遇到了些坑,搞了些天总算成功了,记录一下 /** * 上传图片 * * @param request * @param file * @return * ...

  2. OSG+Visual Studio2015项目变量设置;

    OSG源码经过CMAKE编译后: 1.配置OSG环境变量: 用户变量的PATH中添加路径 C:\OSG\bin系统变量中添加新变量OSG_FILE_PATH为 C:\OSG\data 2.VS新建项目 ...

  3. (4.10)sql server导入导出

    SQL Server快速导入数据分享 核心参考:官网~~https://docs.microsoft.com/zh-cn/sql/relational-databases/import-export/ ...

  4. 51-python基础-python3-列表-常用列表方法- index()方法

    index()方法 1-可以传入一个值,如果该值存在于列表中,就返回它的下标. 实例1: 2-如果该值不在列表中,Python 就报 ValueError. 实例2: 3-如果列表中存在重复的值,就返 ...

  5. Java数组遍历

    1.数组声明格式: 数据类型 [] 数组名 = new 数据类型[长度]: 数组长度一旦确定无法更改. 数组里的数据必须是相同类型或自动向上转型后兼容的类型 2.数组遍历 //一维数组 String ...

  6. js与html中unicode编码的使用

    js中 // unicode在字符串中使用格式:\u四位编码,一定是四位,否则报错 // 显示 @ 符 console.log(`十六进制 unicode 编码 0x0040 对应的字符是:${'\u ...

  7. JavaScript 下载大文件解决方案(Blob+OjbectURL)

    结合Blob和OjbectURL实现更大的文件下载: var a = document.createElement('a'); var txt = '.....content....'; for(va ...

  8. vue.config.js配置前端代理

    // vue.config.js 配置说明 //官方vue.config.js 参考文档 https://cli.vuejs.org/zh/config/#css-loaderoptions // 这 ...

  9. Jenkins的安装、部署、启动(完整教程)

    测试环境 Linux系统 Centos 7 安装步骤: 1.安装jdk 我安装的是jdk8,此处就不多说了,自己百度哈,很简单 2.安装jenkins 首先依次执行如下三个命令: 2.1.导入镜像: ...

  10. Hashtable、HashMap、TreeMap、ConcurrentHashMap、ConcurrentSkipListMap区别

    原创转载请注明出处:https://www.cnblogs.com/agilestyle/p/11444013.html 并发场景下的Map容器使用场景 如果对数据有强一致要求,则需使用Hashtab ...