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. 如何查看Oracle SID即instance_name 和 dbname区别

    SID 和  instance_name是一个实例名字db_name 是数据库名字搞清两个概念,数据库和实例 实例:实例是数据库启动时初始化的一组进程和内存结构 数据库:数据库则指的是用户存储数据的一 ...

  2. Spring的controller接受Date类型数据,接受枚举类型数据

    1. Controller接收Date类型的数据 核心使用@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") 来将传递过来的时间字符串 ...

  3. C++ 扩展 Op

    C++ 扩展 Op 本文将介绍如何使用 C++ 扩展 Op,与用 Python 扩展 Op 相比,使用 C++ 扩展 Op,更加灵活.可配置的选项更多,且支持使用 GPU 作为计算设备.一般可使用 P ...

  4. TensorFlowMNIST数据集逻辑回归处理

    TensorFlow逻辑回归处理MNIST数据集 本节基于回归学习对 MNIST 数据集进行处理,但将添加一些 TensorBoard 总结以便更好地理解 MNIST 数据集. MNIST由https ...

  5. 智能物联网(AIoT,2020年)(中)

    智能物联网(AIoT,2020年)(中) 05 中国AIoT产业图谱 06 中国AIoT商业模式 标准程度越低人力和时间成本投入越多,2B2C模式附加值高 07 中国AIoT玩家分布简介 四类玩家,优 ...

  6. TorchScript神经网络集成技术

    TorchScript神经网络集成技术 create_torchscript_neuropod 将TorchScript模型打包为neuropod包. create_torchscript_neuro ...

  7. 如何为应用选择最佳的FPGA(下)

    如何为应用选择最佳的FPGA(下) How to select an FPGA board? FPGA板的选择在很大程度上受FPGA本身的影响,也受整个板的特性和性能的影响.们已经在上面的章节中讨论了 ...

  8. 解决git冲突

    多个开发者同时操作git中的同一个文件,第一个人在commit和push的时候是可以正常提交的,而之后的开发者执行pull,就会报冲突异常conflict. 解决方案: 全部采用当前更改 之后再去gi ...

  9. 【题解】斐波拉契 luogu3938

    题目 题目描述 小 C 养了一些很可爱的兔子. 有一天,小 C 突然发现兔子们都是严格按照伟大的数学家斐波那契提出的模型来进行 繁衍:一对兔子从出生后第二个月起,每个月刚开始的时候都会产下一对小兔子. ...

  10. Centos8.3、docker部署springboot项目实战记录

    引言    目前k8s很是火热,我也特意买了本书去学习了一下,但是k8s动辄都是成百上千的服务器运维,对只有几台服务器的应用来说使用k8s就有点像大炮打蚊子.只有几台服务器的应用运维使用传统的tomc ...