师从百测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字典操作+文件操作+函数的更多相关文章

  1. Python复习笔记-字典和文件操作

    抽时间回顾2年前自己做过的python工具,突然感觉不像自己写的,看来好久没用过python的字典和文件操作了,查询资料和网页,整理如下: 一.字典 键值对的集合(map) 字典是以大括号“{}”包围 ...

  2. Python基础2 列表 元祖 字符串 字典 集合 文件操作 -DAY2

    本节内容 列表.元组操作 字符串操作 字典操作 集合操作 文件操作 字符编码与转码 1. 列表.元组操作 列表是我们最以后最常用的数据类型之一,通过列表可以对数据实现最方便的存储.修改等操作 定义列表 ...

  3. 跟着ALEX 学python day3集合 文件操作 函数和函数式编程 内置函数

    声明 : 文档内容学习于 http://www.cnblogs.com/xiaozhiqi/  一. 集合 集合是一个无序的,不重复的数据组合,主要作用如下 1.去重 把一个列表变成集合 ,就自动去重 ...

  4. python基础之 列表、元组操作 字符串操作 字典操作 集合操作 文件操作 字符编码与转码

    本节内容 列表.元组操作 字符串操作 字典操作 集合操作 文件操作 字符编码与转码 1. 列表.元组操作 列表是我们最以后最常用的数据类型之一,通过列表可以对数据实现最方便的存储.修改等操作 定义列表 ...

  5. python【第二篇】列表、元组、字典及文件操作

    本节内容 列表 元组操作 字符串操作 字典操作 集合操作 文件操作 字符编码与转码 1.列表 列表是我们最以后最常用的数据类型之一,通过列表可以对数据实现最方便的存储.修改等操作:列表有序.可变.元素 ...

  6. python3笔记十八:python列表元组字典集合文件操作

    一:学习内容 列表元组字典集合文件操作 二:列表元组字典集合文件操作 代码: import pickle  #数据持久性模块 #封装的方法def OptionData(data,path):    # ...

  7. Python的高级文件操作(shutil模块)

    Python的高级文件操作(shutil模块) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 如果让我们用python的文件处理来进行文件拷贝,想必很多小伙伴的思路是:使用打开2个 ...

  8. python os&shutil 文件操作

    python os&shutil 文件操作 # os 模块 os.sep 可以取代操作系统特定的路径分隔符.windows下为 '\\' os.name 字符串指示你正在使用的平台.比如对于W ...

  9. Python之路-文件操作(py3)

    文件操作的基本步骤: 1.打开文件:f=open('filename'),with open('filename') as f 2.操作文件:增,删,改,查 3.关闭文件:f.close 打开文件 p ...

  10. python 历险记(三)— python 的常用文件操作

    目录 前言 文件 什么是文件? 如何在 python 中打开文件? python 文件对象有哪些属性? 如何读文件? read() readline() 如何写文件? 如何操作文件和目录? 强大的 o ...

随机推荐

  1. JavaScript教程——函数(arguments 对象)

    arguments 对象 定义 由于 JavaScript 允许函数有不定数目的参数,所以需要一种机制,可以在函数体内部读取所有参数.这就是arguments对象的由来. arguments对象包含了 ...

  2. DTcmsV4.0分析学习——(3)URL重写

    3.URL重写 3.1 控制流程 通过IHttpModule控制所有页面请求,具体流程如下 (1)真实路径可正常访问 (2)前台页面通过URL重写映射aspx目录,后台页面通过URL重写映射admin ...

  3. 牛客练习赛3 绝对半径 ——k尺取法

    题目 链接 题意:一个n个数字的序列,最多去掉其中k个,使得连续相同数字序列的长度尽量长 分析 如果不考虑去掉元素,就是普通的尺取.考虑到去元素,则只需做一点修改. 先离散化,再把每种元素的位置用va ...

  4. Codeforces Round #509 (Div. 2) F. Ray in the tube(思维)

    题目链接:http://codeforces.com/contest/1041/problem/F 题意:给出一根无限长的管子,在二维坐标上表示为y1 <= y <= y2,其中 y1 上 ...

  5. BZOJ 3439: Kpm的MC密码 (trie+dfs序主席树)

    题意 略 分析 把串倒过来插进trietrietrie上, 那么一个串的kpmkpmkpm串就是这个串在trietrietrie上对应的结点的子树下面的所有字符串. 那么像 BZOJ 3551/354 ...

  6. 题解 [CF803C] Maximal GCD

    题面 解析 一开始以为这题很难的... 其实只要设\(d\)为\(a\)的最大公因数, 即\(a[i]=s[i]*d\), 因为\(n=\sum_{i=1}^{n}a[i]=\sum_{i=1}^ns ...

  7. Python基础--基于ubuntu linux基础知识点

    part1:Python编译 1.直接在终端编译-----在ubuntu中Python是在home文件夹下的,输入Python(Python2编译,想要Python3直接输入python3) 一般推荐 ...

  8. ie8中如何使用base64

    由于ie8中不能使用jQuery2.0以上版本所以无法使用 window.btoa()加密 window.atob()解密 所以只能使用最原生的base64加密方法如下: /** * Created ...

  9. 总结调试webview的方式(安卓)

    参考文章: 移动端真机调试指南 Mac 平台 Android 使用 Charles 抓包方法 Charles使用Map Local和Rewrite提高开发效率 通过chrome直接进行调试 chrom ...

  10. MySql数据类型及对应存储空间

    整数型数据类型 类型名称 说明 存储需求 TINYINT 很小的正数 1个字节 SMALLINT 小正数 2个字节 MEDIUMINT 中等大小的正数 3个字节 INT(INTEGER) 普通大小的正 ...