作业要求

实现一个商品管理的一个程序,
运行程序有三个选项,输入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. SSL证书部署HTTPS站点Apache/Nginx配置

    SSL证书及HTTPS协议 SSL 证书是一种数字证书,它使用 Secure Socket Layer 协议在浏览器和 Web 服务器之间建立一条安全通道,从而实现:1.数据信息在客户端和服务器之间的 ...

  2. 洛谷P4169 [Violet]天使玩偶/SJY摆棋子(CDQ分治)

    [Violet]天使玩偶/SJY摆棋子 题目传送门 解题思路 用CDQ分治开了氧气跑过. 将输入给的顺序作为第一维的时间,x为第二维,y为第三维.对于距离一个询问(ax,ay),将询问分为四块,左上, ...

  3. VB - FSO的常见对象和方法

    1. set fs=wscript.createobject(“scripting.filesystemobject”) 这样就建立了fso的模型.如果要释放的话也很简单, set fs=nothin ...

  4. luoguP2184 贪婪大陆 题解(树状数组)

    P2184 贪婪大陆  题目 其实很容易理解就是询问一段区间内有多少段不同的区间 然后再仔细思索一下会发现: 1.只要一个区间的开头在一个节点i的左边,那么这个区间包含在区间1~i中. 2.只要一个区 ...

  5. luoguP1525 关押罪犯 题解(NOIP2010)(并查集反集)

    P1525 关押罪犯  题目 #include<iostream> #include<cstdlib> #include<cstdio> #include<c ...

  6. 同一台机器上有多个Python版本?

    有关Python网站上的官方文档,如何在Linux上的同一台机器上安装和运行多个版本的Python? 我可以找到大量的博客帖子和答案,但我想知道是否有“标准”官方方式这样做? 或者这完全取决于操作系统 ...

  7. Add a system call on Ubuntu 13.04(x64) with x86_64

    We added a system call to modify idt table, then programed it in modify_idt.c 1. Put our modify_idt. ...

  8. 【目录】sql server 架构篇系列

    随笔分类 - sql server 架构篇系列 sql server 高可用镜像 摘要: 一.什么是数据库镜像 基本软件的高可用性解决方案 快速的故障转移恢复(3秒转移),低硬件成本 基于数据库级别的 ...

  9. vue-router中的router-link的active-class

    vue-router中的router-link的active-class   在vue-router中要使用选中样式的方法有两种: 1.直接在路由js文件中配置linkActiveClass 2.在r ...

  10. solaris系统动态查看swap的使用情况

    root@tt # root@tt # prstat  -aPlease wait... PID USERNAME  SIZE   RSS STATE  PRI NICE      TIME  CPU ...