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. 5分钟就能学会的简单结构 | MLP-Mixer: An all-MLP Architecture for Vision | CVPR2021

    文章转自:微信公众号「机器学习炼丹术」 作者:炼丹兄(欢迎交流,共同进步) 联系方式:微信cyx645016617 论文名称:「MLP-Mixer: An all-MLP Architecture f ...

  2. npm ERR! Error: tunneling socket could not be established的解决问题

    一般是代理问题 可以通过在命令行运行下列命令解决: npm run server npm run webdriver-update

  3. CVPR2020最新论文扫描盘点(上)

    CVPR2020最新论文扫描盘点(上) 最近计算机视觉三大顶会之一CVPR2020接收结果已经公布,一共有1470篇论文被接收,接收率为22%,相比去年降低3个百分点,竞争越来越激烈.这里整理来自Tw ...

  4. 字符识别OCR原理及应用实现

    字符识别OCR原理及应用实现 文本是人类最重要的信息来源之一,自然场景中充满了形形色色的文字符号.光学字符识别(OCR)相信大家都不陌生,就是指电子设备(例如扫描仪或数码相机)检查纸上打印的字符,通过 ...

  5. linux环境下jmeter安装和运行

    linux环境部署: 在Linux服务器先安装jdk:2.以jdk-8u172-linux-x64.tar.gz为例:下载地址:http://www.oracle.com/technetwork/ja ...

  6. jvm调优神器——arthas

    在上一篇<jvm调优的几种场景>中介绍了几种常见的jvm方面调优的场景,用的都是jdk自带的小工具,比如jps.jmap.jstack等.用这些自带的工具排查问题时最大的痛点就是过程比较麻 ...

  7. MySQL必知必会笔记-Mysql基本操作

    Mysql基本操作 mysql的基本操作包括增.删.改.查,本书中前三章简单的介绍MySQL为何物,查是mysql中非常重要的功能,4-6章展示了mysql的查(查询--select)的简单实现,my ...

  8. 使用NDepend衡量代码的SOLID程度

    SOLID是面向对象的软件开发中的5条准则,也是开发人员可以提升自己代码质量的准则.那么如何衡量自己的代码是否符合SOLID准则呢?NDepend这款工具也许可以帮得上忙.本文将介绍一些NDepend ...

  9. 【NX二次开发】Block UI 图层

    属性说明 常规         类型 描述     BlockID     String 控件ID     Enable     Logical 是否可操作     Group     Logical ...

  10. 【NX二次开发】Block UI 超级截面

    属性说明 属性   类型   描述   常规           BlockID    String    控件ID    Enable    Logical    是否可操作    Group    ...