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--小练习的更多相关文章

  1. Python学习笔记009—函数

    1. 空函数 如果想定义一个什么事也不做的空函数,可以用pass语句: def nop(): pass pass语句什么都不做,那有什么用?实际上pass可以用来作为占位符,比如现在还没想好怎么写函数 ...

  2. Python学习笔记009

    不换行 print("Hello,world!",end='')print("Hello,world!",end='')print("Hello,wo ...

  3. python自学笔记

    python自学笔记 python自学笔记 1.输出 2.输入 3.零碎 4.数据结构 4.1 list 类比于java中的数组 4.2 tuple 元祖 5.条件判断和循环 5.1 条件判断 5.2 ...

  4. [Python爬虫笔记][随意找个博客入门(一)]

    [Python爬虫笔记][随意找个博客入门(一)] 标签(空格分隔): Python 爬虫 2016年暑假 来源博客:挣脱不足与蒙昧 1.简单的爬取特定url的html代码 import urllib ...

  5. OpenCV之Python学习笔记

    OpenCV之Python学习笔记 直都在用Python+OpenCV做一些算法的原型.本来想留下发布一些文章的,可是整理一下就有点无奈了,都是写零散不成系统的小片段.现在看 到一本国外的新书< ...

  6. Python学习笔记(六)

    Python学习笔记(六) Ubuntu重置root密码 Ubuntu 16.4 目录结构 Ubuntu 命令讲解 1. Ubuntu重置root密码 启动系统,显示GRUB选择菜单(如果默认系统启动 ...

  7. Deep learning with Python 学习笔记(11)

    总结 机器学习(machine learning)是人工智能的一个特殊子领域,其目标是仅靠观察训练数据来自动开发程序[即模型(model)].将数据转换为程序的这个过程叫作学习(learning) 深 ...

  8. python学习笔记(一)、列表和元祖

    该一系列python学习笔记都是根据<Python基础教程(第3版)>内容所记录整理的 1.通用的序列操作 有几种操作适用于所有序列,包括索引.切片.相加.相乘和成员资格检查.另外,Pyt ...

  9. 近期Python学习笔记

    近期Python 学习笔记--一篇文入门python 作者:Pleiades_Antares(www.cnblogs.com/irischen) 写在前面的话 想学Python已经许久,一年多以前(应 ...

  10. Python机器学习笔记:使用Keras进行回归预测

    Keras是一个深度学习库,包含高效的数字库Theano和TensorFlow.是一个高度模块化的神经网络库,支持CPU和GPU. 本文学习的目的是学习如何加载CSV文件并使其可供Keras使用,如何 ...

随机推荐

  1. MySQL 通过.frm文件和.ibd文件实现InnoDB引擎的数据恢复

    起因是这样的,公司的领导表示说服务器崩了,修理好之后,只剩下数据库目录下的物理文件(即.frm文件与.ibd文件).然后,整了一份压缩包给我,叫我瞅一下能不能把数据恢复出来.我当场愣了一下,这都啥文件 ...

  2. [leetcode] (周赛)868. 二进制间距

    868. 二进制间距 读懂题意就出来了 class Solution { public int binaryGap(int N) { String s = Integer.toBinaryString ...

  3. logstash收集时filebeat区分日志

    logstash收集时filebeat区分日志     1.场景 filebeat在服务器中同时收集nginx和web项目日志,需要对两个日志在logstash中分别处理 2.版本区别 ==6.x之前 ...

  4. RADAR毫米波雷达传感器

    RADAR毫米波雷达传感器 TI 利用先进的集成式射频 CMOS 雷达技术提供品类齐全的 60GHz 和 77GHz 传感器产品系列 通过高性能集成射频互补金属氧化物半导体 (CMOS) 雷达技术,可 ...

  5. TVM 高效保护隐私 ML

    TVM 高效保护隐私 ML 这篇文章描述了Myelin,一个在值得信赖的硬件飞地中保护隐私的机器学习框架,以及TVM如何使Myelin快速.关键的想法是,TVM,不像其它流行的ML框架,将模型编译成轻 ...

  6. Python 扩展 Op

    Python 扩展 Op 注意 :本文涉及的 Python Kernel 仅在 gcc 4.8.5 编译环境下充分测试,进一步的完善计划见 Issue 3951. 背景介绍 OneFlow 将各种对于 ...

  7. 1、java数据结构和算法---循环队列

    直接上代码: public class CircleArrayQueueLvcai { private int[] array; private int maxSize;//循环队列大小 privat ...

  8. mybatis——解决属性名和数据库字段名不一致问题

    首先说一下,我的数据库名字叫mybatis,里边有一张user表,表中有三个字段,id.name.pwd:然后实体类中对应三个属性id.name.password(id和name跟数据库字段名一致,但 ...

  9. 从一道高大上的面试题来学习位图算法BitMap

    今天我偶然刷到了一篇文章,"华为二面:一个文件里面有5亿个数据,一行一个,没有重复的,进行排序".不知道又是哪个无良媒体瞎起的标题,夺人眼球. 不过说归说,这题听着就很高大上,5亿 ...

  10. 04:全局解释器锁(GIL)

    1 全局解释器锁(GIL) 0 pypy(没有全局解释器锁) cpython(99.999999%)    -pypy python好多模块用不了,1 全局解释器锁,GIL锁(cpython解释器的问 ...