python使用笔记009--小练习
1.密码生成器
1 '''
2 1、写一个生产密码的程序,输入几,就产生几条密码,密码产生的不重复。
3 要求密码:长度6-12,密码必须包含 大写字母、小写字母、数字
4 产生完密码后存到一个文件里面
5 '''
6 import random
7 import string
8 #大小写字母列表
9 #l_chrs = list(string.ascii_letters)
10 #大写字母
11 u_chrs = set(string.ascii_uppercase)
12 #小写字母
13 lower_chrs = set(string.ascii_lowercase)
14 #数字列表
15 nums = [i for i in range(10)]
16 #将字母列表和数字列表合成一个大的列表
17 #l_chrs.extend(nums)
18 l_chrs = set(string.ascii_letters+string.digits)#生成小写字母,大写字母,0-9的数字集合
19 #批量生成密码
20 def create_pwd():
21 pwd_count_str = input('请输入要生成的密码条数:').strip()
22 if pwd_count_str.isdigit() and int(pwd_count_str) > 0 :#判断输入的密码条数为int类型
23 #pwd_l = {}#定义一个空的密码列表,用来保存密码
24 with open('密码.txt','a+',encoding='utf-8') as pwd_file:
25 #每次执行密码生成器之前都需要清空密码.txt文件
26 pwd_file.seek(0)
27 pwd_file.truncate()
28 for i in range(int(pwd_count_str)):#循环生成密码
29 pwd_len = random.randint(6,12)#随机生成密码的长度,范围在6-12之间
30 pwd = ran_create_pwd(pwd_len)#随机生成密码
31 if pwd in pwd_file.readlines():#如果密码已存在,则重新生成密码
32 pwd = ran_create_pwd(pwd_len)
33 else:
34 pwd_file.write(pwd)
35 else:
36 print('输入的密码条数不合格')
37 create_pwd()
38
39 #根据密码长度随机生成一个密码,密码包含大写字母,小写字母,数字
40 def ran_create_pwd(pwd_len):
41 l_chrs_set = set(l_chrs)#将列表转成集合
42 pwd = random.sample(l_chrs,pwd_len)#从list中随机取N个元素
43 pwd_set = set(pwd)
44 #判断密码中包含大写字母,小写字母,数字
45 if (pwd_set & u_chrs) and (pwd_set & lower_chrs) and (pwd_set & set(nums)):
46 pwd_str = ''.join(str(i) for i in pwd)+'\n'#将数组转成字符串
47 return pwd_str
48 else:
49 return ran_create_pwd(pwd_len)
50
51 #执行密码生成器
52 create_pwd()
2.大乐透号码生成器
1 '''
2 写一个生产大乐透号码的程序。
3 前区号码由01—35共35个号码组成,后区号码由01—12共12个号码组成
4 01 02 03 04 05 01 08
5 输入100,产生一百条号码,这一百条不能重复
6 产生完之后存到文件里面
7 注意:不能用1 2 3 4 5 1 11 #如果是个位数,要补零
8 '''
9 import random
10
11 #数字列表
12 # nums1 = [i+1 for i in range(35)]
13 # nums2 = [i+1 for i in range(12)]
14 nums1 = list(range(1,36))
15 nums2 = list(range(1,13))
16 def create_dlts():
17 dlts_count_str = input('请输入要生成的大乐透号码条数:').strip()
18 if dlts_count_str.isdigit() and int(dlts_count_str) > 0: # 判断输入的密码条数为int类型
19 with open('大乐透号码.txt','a+',encoding='utf-8') as dlthm_file:
20 #每次执行大乐透号码生成器之前都需要清空大乐透号码.txt文件
21 dlthm_file.seek(0)
22 dlthm_file.truncate()
23 for i in range(int(dlts_count_str)):#循环生成大乐透号码
24 dlthm = create_dlthm()
25 if dlthm in dlthm_file.readlines():#如果文件中存在该号码,则应该重新生成
26 dlthm = create_dlthm()
27 else:
28 dlthm_file.write(dlthm)#不存在则写入大乐透号码
29 else:
30 print('输入的大乐透条数不合格')
31 create_dlts()
32
33
34 def create_dlthm():
35 temp1 = random.sample(nums1,5)#随机取5个数
36 temp2 = random.sample(nums2,2)#随机取2个数
37 #对这两个列表进行升序排序
38 temp1 = sorted(temp1)
39 temp2 = sorted(temp2)
40 temp1.extend(temp2)
41 dlthm_str = ' '.join(str(i).zfill(2) for i in temp1)+'\n'#将列表中的值个位数补0,十位数不变,转成字符串
42 return dlthm_str
43
44 #执行大乐透号码生成器
45 create_dlts()
3.商品管理
1 import json
2
3 with open('goods.json', encoding='utf-8') as goods_file:
4 goods = json.load(goods_file) # 将商品读取出来,并放入字典中
5
6 def product_manager():
7 choice_num = input('请输入你的选择:1、查看商品信息2、添加商品3、修改4、删除:').strip()
8 if choice_num == '1':
9 show()
10 elif choice_num == '2':
11 add_product()
12 elif choice_num == '3':
13 modify_product()
14 elif choice_num == '4':
15 delete()
16 else:
17 print('输入格式有误!!!')
18 product_manager()#重新输入
19
20 def show():#查询商品
21 show_type = input('请输入需要查看的商品:all、查看全部商品,具体商品名称、查看单个商品').strip()
22 if show_type.lower() == 'all':
23 goods_str = json.dumps(goods,indent=4,ensure_ascii=False)
24 print('全部商品信息为:%s'%goods_str)
25 else:
26 good_temp = goods.get(show_type)#根据传入的单个商品名称,查询单个商品信息
27 if good_temp:
28 print('%s的商品信息为:%s'%(show_type,good_temp))
29 else:
30 print('你输入的商品信息不存在!!!')
31
32
33 def delete():#删除商品
34 pro_name = input('请输入需要删除的商品名称').strip()
35 if pro_name:
36 if goods.get(pro_name): # 商品已存在,能删除
37 goods.pop(pro_name)
38 print('删除商品信息成功')
39 with open('goods.json', 'w', encoding='utf-8') as goods_del_file:
40 json.dump(goods, goods_del_file, indent=4, ensure_ascii=False) # 将新增商品信息写入文件中
41 else:
42 print('商品不存在,删除失败!!!')
43 else:
44 print('输入的商品信息不能为空!!!')
45
46
47 def add_product():#添加商品
48 pro_name = input('请输入需要添加的商品名称').strip()
49 if pro_name:
50 if goods.get(pro_name):#商品已存在,不能添加
51 print('商品已存在,不能添加!!!')
52 else:
53 good_info = checkProduct()
54 if good_info:
55 goods[pro_name] = good_info
56 print('新增商品信息成功')
57 with open('goods.json','w', encoding='utf-8') as goods_add_file:
58 json.dump(goods, goods_add_file, indent=4, ensure_ascii=False) # 将新增商品信息写入文件中
59 else:
60 print('输入的商品名称不能为空!!!!')
61
62
63 def modify_product():#修改商品
64 pro_name = input('请输入需要修改的商品名称').strip()
65 if pro_name:
66 if goods.get(pro_name): # 商品已存在,可以修改
67 good_info = checkProduct()
68 if good_info:
69 goods[pro_name] = good_info
70 print('修改商品信息成功')
71 with open('goods.json', 'w', encoding='utf-8') as goods_modify_file:
72 json.dump(goods, goods_modify_file, indent=4, ensure_ascii=False) # 将修改商品信息写入文件中
73 else:
74 print('商品不存在,不能修改!!!')
75 else:
76 print('输入的商品名称不能为空!!!!')
77
78 #判断输入的值是否合格,合格则返回三个参数
79 def checkProduct():
80 good_info = {}
81 pro_color = inputProColor()
82 if pro_color:
83 pro_price = inputProPrice()
84 if pro_price:
85 pro_count = inputProCount()
86 if pro_count:
87 good_info['color'] = pro_color
88 good_info['price'] = float(pro_price)
89 good_info['count'] = int(pro_count)
90 else:
91 print('输入商品数量不合格')
92 else:
93 print('输入商品价格不合格')
94 else:
95 print('输入商品颜色不合格')
96
97 return good_info
98
99
100 #校验颜色
101 def checkColor(proColor):
102 color_list = ['红色','黄色','白色','黑色','绿色','橙色','蓝色','紫色']
103 color_bool = False
104 if proColor in color_list:
105 color_bool = True
106 return color_bool
107
108 #价格需要是大于0的正整数或者大于0的小数
109 def checkPrice(proPrice):
110 boolean = False
111 s = str(proPrice)
112 if s.isdigit() and int(s) > 0:#正数可以
113 boolean = True
114 elif s.count('.') == 1:
115 left, right = s.split('.') # 根据小数点进行分割,价格只能是两位小数
116 if right.isdigit() and left.isdigit() and (int(left) != 0 or int(right) != 0) and len(right) < 3:
117 boolean = True
118 return boolean
119
120 #判断商品数量必须是大于0的整数
121 def checkProCount(proCount):
122 boolean = False
123 s = str(proCount)
124 if s.isdigit() and int(s) > 0: # 正数可以
125 boolean = True
126
127 return boolean
128
129 #输入商品颜色
130 def inputProColor():
131 for i in range(3):
132 pro_color = input('请输入商品颜色:').strip()
133 if checkColor(pro_color):
134 return pro_color
135 else:
136 print('商品颜色输入次数已用完!!!')
137 return None
138
139 #输入商品价格
140 def inputProPrice():
141 for i in range(3):
142 pro_price = input('请输入商品价格:').strip()
143 if checkPrice(pro_price):
144 return pro_price
145 else:
146 print('商品价格输入次数已用完!!!')
147 return None
148
149
150 #输入商品数量
151 def inputProCount():
152 for i in range(3):
153 pro_count = input('请输入商品数量:').strip()
154 if checkProCount(pro_count):
155 return pro_count
156 else:
157 print('商品数量输入次数已用完!!!')
158 return None
159
160 product_manager()
161 #print(checkProCount(1))
python使用笔记009--小练习的更多相关文章
- Python学习笔记009—函数
1. 空函数 如果想定义一个什么事也不做的空函数,可以用pass语句: def nop(): pass pass语句什么都不做,那有什么用?实际上pass可以用来作为占位符,比如现在还没想好怎么写函数 ...
- Python学习笔记009
不换行 print("Hello,world!",end='')print("Hello,world!",end='')print("Hello,wo ...
- python自学笔记
python自学笔记 python自学笔记 1.输出 2.输入 3.零碎 4.数据结构 4.1 list 类比于java中的数组 4.2 tuple 元祖 5.条件判断和循环 5.1 条件判断 5.2 ...
- [Python爬虫笔记][随意找个博客入门(一)]
[Python爬虫笔记][随意找个博客入门(一)] 标签(空格分隔): Python 爬虫 2016年暑假 来源博客:挣脱不足与蒙昧 1.简单的爬取特定url的html代码 import urllib ...
- OpenCV之Python学习笔记
OpenCV之Python学习笔记 直都在用Python+OpenCV做一些算法的原型.本来想留下发布一些文章的,可是整理一下就有点无奈了,都是写零散不成系统的小片段.现在看 到一本国外的新书< ...
- Python学习笔记(六)
Python学习笔记(六) Ubuntu重置root密码 Ubuntu 16.4 目录结构 Ubuntu 命令讲解 1. Ubuntu重置root密码 启动系统,显示GRUB选择菜单(如果默认系统启动 ...
- Deep learning with Python 学习笔记(11)
总结 机器学习(machine learning)是人工智能的一个特殊子领域,其目标是仅靠观察训练数据来自动开发程序[即模型(model)].将数据转换为程序的这个过程叫作学习(learning) 深 ...
- python学习笔记(一)、列表和元祖
该一系列python学习笔记都是根据<Python基础教程(第3版)>内容所记录整理的 1.通用的序列操作 有几种操作适用于所有序列,包括索引.切片.相加.相乘和成员资格检查.另外,Pyt ...
- 近期Python学习笔记
近期Python 学习笔记--一篇文入门python 作者:Pleiades_Antares(www.cnblogs.com/irischen) 写在前面的话 想学Python已经许久,一年多以前(应 ...
- Python机器学习笔记:使用Keras进行回归预测
Keras是一个深度学习库,包含高效的数字库Theano和TensorFlow.是一个高度模块化的神经网络库,支持CPU和GPU. 本文学习的目的是学习如何加载CSV文件并使其可供Keras使用,如何 ...
随机推荐
- 高频访问SQLite数据库
SQLite 是一款开源的 SQL 数据库引擎,由于其自包含.无服务.零配置和友好的使用许可(完全免费)等特点,在桌面和移动平台被广泛使用. 在应用开发过程中,如果想保存点数据,自然而然地就会想到 S ...
- Jmeter- 笔记7 - 服务器监控(ServerAgent配置)
文件:ServerAgent - 2.2.3.zip 放网盘了 在服务器的操作:只需要把这个文件上传到被监控服务器,然后解压,启动sh startagent.sh --udp-port 0 --tc ...
- TensorFlow分布式在Amazon AWS上运行
TensorFlow分布式在Amazon AWS上运行 Amazon AWS 提供采用 NVIDIA K8 GPU 的 P2.x 机器.为了能够使用,第一步还需要创建一个 Amazon AWS 账户, ...
- Git 快速控制
Git 快速控制 聊聊学习 Git 那些事 现在回想起来,其实接触 Git 的时候是在大一的时候表哥带入门的.当时因为需要做一个项目,所以他教如何使用 Git 将写好的代码推送到 GitHub 上,然 ...
- Comparison of Laser SLAM and Visual SLAM
Comparison of Laser SLAM and Visual SLAM 目前,SLAM技术广泛应用于机器人.无人机.无人机.AR.VR等领域,依靠传感器可以实现机器的自主定位.测绘.路径规划 ...
- 阿里面试挂了,就因为面试官说我Spring 事务管理(器)不熟练?
前言 事务管理,一个被说烂的也被看烂的话题,还是八股文中的基础股之一.但除了八股文中需要熟读并背诵的那些个传播行为之外,背后的"为什么"和核心原理更为重要. 写这篇文章之前,我 ...
- NCF WebApi中 Controller的全解析
简介 上一篇我们说了如何实现一个WebApi,并运行起来 这次我们来说说WebApi的内在,我们到底做了哪些事情 仓库地址:https://github.com/NeuCharFramework/NC ...
- 『动善时』JMeter基础 — 43、JMeter对数据库的查询操作
目录 1.使用"用户自定义变量"实现参数化 2. 在SQL Query中使用占位符传递参数 (1)传递的参数值是常量 (2)传递的参数值是变量 3.Variables names参 ...
- Pytest学习笔记2-setup和teardown
前言 我们在做自动化的时候,常常有这样的需求: 执行每一条用例时,都重新启动一次浏览器 每一条用例执行结束时,都清除测试数据 在unittest中,我们可以使用 setUp() 和 tearDown( ...
- VisualStudio自动添加注释
1.VisualStudio 新开页自动添加注释 a 在团队开发或者公司开发中,我们一般都喜欢给自己所创建的类或者接口以及其它模板设置版权说明,但是每个类一个一个的去加又是非常的费劲,所以一般情况下 ...