python字典操作+文件操作+函数
师从百测besttest
今天老牛教了些函数调用的知识,布置了个作业如下: # 1、写一个商品管理的小程序
# 2、商品存在文件里面
# 1、添加商品
# 输入产品名称、颜色、价格
# 要校验商品是否存在,价格是否合法
# 输入是否为空
# 2、修改商品信息
# 输入产品名称、颜色、价格
# 要校验商品是否存在,价格是否合法
# 输入是否为空
# 3、查看商品信息
# 输入商品名称
# 输入all就展示全部商品
# 输入的是其他的商品名称,
# 4、删除商品
# 输入商品名称 如果需要运行下列代码,请先在代码同级目录创建一个shangpin.txt文件,并写入一些内容,目前目录为空还没有做判断,如果为空会报错,内容例如:
{
"iphone": {
"color": "高亮黑",
"price": "99.99"
},
"电视": {
"color": "红色",
"price": "99.99"
},
"冰箱": {
"color": "白色",
"price": "99.99"
}
}
代码如下:
import json #读取商品信息
def goods():
with open('shangpin.txt', encoding='utf-8') as f:
str = json.load(f)
return str #判断商品是否存在
def is_good(name):
if name in goods():
return False
else:
return True #判断价格的正确性
def is_price(price):
price = price.strip()
if price and price.count('.') == 1:
left,right = price.split('.')
if left.isdigit() and right.isdigit() and int(right) < 100 and float(price) > 0:
return True
else:
return False
elif price.isdigit() and int(price) > 0:
return True
else:
return False #添加或修改商品信息
def updata_add(name,color,price):
all_goods = goods()
all_goods[name] = {'color': color, 'price': price}
with open('shangpin.txt', 'w', encoding='utf-8') as f:
json.dump(all_goods, f, ensure_ascii=False, indent=4) #添加商品
def inset_goods():
name = (input('请输入商品名称:')).strip()
color = (input('请输入颜色:')).strip()
price = (input('请输入价格:')).strip()
if name and color and price and is_good(name) and is_price(price):
updata_add(name,color,price)
print('添加成功!')
elif name and is_good(name) is False:
print('商品已存在!')
else:
print('输入错误!') #修改商品
def updata_goods():
name = (input('请输入商品名称:')).strip()
color = (input('请输入颜色:')).strip()
price = (input('请输入价格:')).strip()
if name and color and price and is_good(name) is False and is_price(price):
updata_add(name,color,price)
print('修改成功!')
elif name and is_good(name):
print('商品不存在!')
else:
print('输入错误') #查看商品信息
def see_goods():
goods_name = input('输入具体商品名称,要查看所有输入all:')
if goods_name.strip() != '':
if goods_name == 'all':
print(goods())
elif goods_name in goods():
print(goods_name,goods()[goods_name])
else:
print('没有这个商品!')
else:
print('输入错误!') #删除商品
def del_goods():
goods_name = (input('请输入商品名称:')).strip()
if goods_name.strip() != '':
if goods_name in goods():
all_goods = goods()
del all_goods[goods_name]
with open('shangpin.txt', 'w', encoding='utf-8') as f:
json.dump(all_goods, f, ensure_ascii=False, indent=4)
print('删除成功!')
else:
print('没有这个商品!')
else:
print('输入错误!') while True:
check = (input('请输入数字,1表示查询、2表示新增、3表示修改、4表示删除:')).strip()
if check.isdigit():
check = int(check)
if check == 1:
see_goods()
elif check == 2:
inset_goods()
print(goods())
elif check ==3:
updata_goods()
print(goods())
elif check == 4:
del_goods()
print(goods())
else:
print('输入错误请重新输入!')
else:
print('输入非数字!')
python字典操作+文件操作+函数的更多相关文章
- Python复习笔记-字典和文件操作
抽时间回顾2年前自己做过的python工具,突然感觉不像自己写的,看来好久没用过python的字典和文件操作了,查询资料和网页,整理如下: 一.字典 键值对的集合(map) 字典是以大括号“{}”包围 ...
- Python基础2 列表 元祖 字符串 字典 集合 文件操作 -DAY2
本节内容 列表.元组操作 字符串操作 字典操作 集合操作 文件操作 字符编码与转码 1. 列表.元组操作 列表是我们最以后最常用的数据类型之一,通过列表可以对数据实现最方便的存储.修改等操作 定义列表 ...
- 跟着ALEX 学python day3集合 文件操作 函数和函数式编程 内置函数
声明 : 文档内容学习于 http://www.cnblogs.com/xiaozhiqi/ 一. 集合 集合是一个无序的,不重复的数据组合,主要作用如下 1.去重 把一个列表变成集合 ,就自动去重 ...
- python基础之 列表、元组操作 字符串操作 字典操作 集合操作 文件操作 字符编码与转码
本节内容 列表.元组操作 字符串操作 字典操作 集合操作 文件操作 字符编码与转码 1. 列表.元组操作 列表是我们最以后最常用的数据类型之一,通过列表可以对数据实现最方便的存储.修改等操作 定义列表 ...
- python【第二篇】列表、元组、字典及文件操作
本节内容 列表 元组操作 字符串操作 字典操作 集合操作 文件操作 字符编码与转码 1.列表 列表是我们最以后最常用的数据类型之一,通过列表可以对数据实现最方便的存储.修改等操作:列表有序.可变.元素 ...
- python3笔记十八:python列表元组字典集合文件操作
一:学习内容 列表元组字典集合文件操作 二:列表元组字典集合文件操作 代码: import pickle #数据持久性模块 #封装的方法def OptionData(data,path): # ...
- Python的高级文件操作(shutil模块)
Python的高级文件操作(shutil模块) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 如果让我们用python的文件处理来进行文件拷贝,想必很多小伙伴的思路是:使用打开2个 ...
- python os&shutil 文件操作
python os&shutil 文件操作 # os 模块 os.sep 可以取代操作系统特定的路径分隔符.windows下为 '\\' os.name 字符串指示你正在使用的平台.比如对于W ...
- Python之路-文件操作(py3)
文件操作的基本步骤: 1.打开文件:f=open('filename'),with open('filename') as f 2.操作文件:增,删,改,查 3.关闭文件:f.close 打开文件 p ...
- python 历险记(三)— python 的常用文件操作
目录 前言 文件 什么是文件? 如何在 python 中打开文件? python 文件对象有哪些属性? 如何读文件? read() readline() 如何写文件? 如何操作文件和目录? 强大的 o ...
随机推荐
- 【HDU5952】Counting Cliques
题目大意:给定一个\(N\)个点,\(M\)条边的无向图,求图中有多少个大小为\(S\)的团.\(N \le 100,deg(i)\le 20,i\in [1,n]\). 题解: 考虑搜索. 需要确定 ...
- 第三章 URL与视图
配置文件两种方式详解 先讲两种直接传参: 直接简单传参 app =Flask(__name__) app.config['DEBUG']=True app.config.update( DEBUG=t ...
- config文件的实现
https://www.cnblogs.com/jiayouwyhit/p/3836510.html //Config.h #pragma once #include <string> # ...
- 对JavaScript 模块化的深入-----------------引用
什么是模块化 好的代码模块分割的内容一定是很合理的,便于你增加减少或者修改功能,同时又不会影响整个系统. 为什么要使用模块 1.可维护性:根据定义,每个模块都是独立的.良好设计的模块会尽量与外部的 ...
- jmeter-post请求自动变成get,提示请求方式错误,修改协议即可
修改协议: http 改为 https 或反之
- 通信网络(CCF)【图的遍历】
问题描述 某国的军队由N个部门组成,为了提高安全性,部门之间建立了M条通路,每条通路只能单向传递信息,即一条从部门a到部门b的通路只能由a向b传递信息.信息可以通过中转的方式进行传递,即如果a能将信息 ...
- Luogu P2516 [HAOI2010]最长公共子序列 DP
首先$LIS$显然:$f[i][j]=max(f[i][j-1],f[i-1][j],(a[i]==b[j])*f[i-1][j-1])$ 考虑如何转移数量: 首先,不管$a[i]$是否等于$b[j] ...
- idea tomcat服务器运行打印日志到控制台是乱码解决方案
1.试过网上很多方面,给启动的时候加参数,什么-Dfile.encoding=utf8等等都没用. 2.最后是修改了tomcat-conf-logger.properties中的 我的一开始utf-8 ...
- 路由器配置——路由重分布2(OSPF)
一.实验目的:使用路由重分布达到全网互通的效果 二.拓扑图: 三.具体步骤配置: 1.先给各台主机配置ip地址及网关,以PC1为例: 2.路由器配置: (1)R1路由器配置 Router>ena ...
- Rapid Object Detection using a Boosted Cascade of Simple Features 部分翻译
Rapid ObjectDetection using a Boosted Cascade of Simple Features 使用简单特征级联分类器的快速目标检测 注:部分翻译不准处以红色字体给出 ...