#!/usr/bin/env python
# _*_ coding:utf-8 _*_
#去重方法:
#list去重操作
# lis1 = [1,2,5,3,1,2,3,6,8]
# lis2 = []
# for i in lis1 :
# if i not in lis2:
# lis2.append(i)
# print(lis2)
##########################
1.集合創建
s = set()#空集合 s = {11,22,33,44} #注意在創建空集合的時候只能使用s=set(),因為s={}創建的是空字典
a=set('boy') b=set(['y', 'b', 'o','o']) c=set({"k1":'v1','k2':'v2'}) d={'k1','k2','k2'} e={('k1', 'k2','k2')} print(a,type(a)) print(b,type(b)) print(c,type(c)) print(d,type(d)) print(e,type(e)) 輸出: {'o', 'b', 'y'} <class 'set'> {'o', 'b', 'y'} <class 'set'> {'k1', 'k2'} <class 'set'> {'k1', 'k2'} <class 'set'> {('k1', 'k2', 'k2')} <class 'set'>
2.集合元素
增加:
set1.add(999)
set1.update([1,2,3])
刪除:
s1.remove(777)#刪除元素,如果元素不存在會報錯
s1.pop()#刪除一個隨機的元素,並返回刪除的元素
s1.discard('dddd')#如果刪除的元素存在,刪除,不存在不做處理
合並集合:
print(s1.union(s2))
print(s1|s2)
交集:
print(s1.intersection(s2))
print(s1&s2)
##########################
#集合的兩種方式,一種通過set轉化,一種直接定義
lis = [1,2,5,3,1,2,3,6,8]
slist = set(lis)
slist2 = {1,2,3,6}
s = {}#這是空字典,不是集合
s = set()#這是空集合
xn = [1,4,2,7,8]
python = [5,1,2,3,9,4]
s1 = set(xn)
s2 = set(python)
s3 = {1,2}
s4 = {1,2,3,6}
#並集,兩種方法
print(s1.union(s2))
print(s1|s2)
#交集,
print(s1.intersection(s2))
print(s1&s2)
print(s1 - s2)#返回s2中有s1中沒有的
print(s2 - s1)#返回s1中有s2中沒有的
print(s3.issubset(s1))#子集
print(s4.issuperset(s3))#父集
print(s1.isdisjoint(s2))#有交集返回false,沒有交集返回TRUE
#差集
print(s1.difference(s2))
#去掉相同元素,保留其他元素
print(s1.symmetric_difference(s2))
print(s1^s2)
#集合也是無序的
#集合不能直接加到集合中,要變為字符串加入集合中
#
s1.add(999)#添加元素
s2.update([1,2,3])
s1.remove(777)#刪除元素,如果元素不存在會報錯
s1.pop()#刪除一個隨機的元素,並返回刪除的元素
s1.discard('dddd')#如果刪除的元素存在,刪除,不存在不做處理
#非空即真,非0即真
#if 判斷時只要是空的或者是0就走else
#用集合的方式產生隨機8的密碼,並且確認密碼中包含大小寫字母和數字,生成后保存至文件中
# import random,string
# num = input('輸入次數:').strip()
# lis = []
# pwds = set()
# if num.isdigit() :
# i = 0#while 循環時必須有計數器
# while i<int(num):
# password = set(random.sample(string.ascii_letters+string.digits,8))
# upper_set = set(string.ascii_uppercase)
# lower_set = set(string.ascii_lowercase)
# letter_set = set(string.ascii_letters)
# set1 = password.intersection(upper_set)
# set2 = password.intersection(lower_set)
# set3 = password.intersection(letter_set)
# #判斷密碼是否即包含大小寫字符和數字的方法有如下兩種方法:
# # if len(set1)>0 and len(set2)>0 and len(set3)>0:
# # print('密碼符合要求')
# # else :
# # print('密碼不符合要求')
# if set1 and set2 and set3:
# print('密碼符合要求')
# str = ''.join(password)+'\n'
# i = i + 1
# if str not in lis :
# lis.append(str)
#
# fw = open('pwds.txt','w')
# fw.writelines(lis)
# else:
# print('密碼不符合要求')
import random,string
num = input('輸入次數:').strip()
lis = []
pwds = set()
if num.isdigit() :
while len(pwds)<int(num):
password = set(random.sample(string.ascii_letters+string.digits,8))
upper_set = set(string.ascii_uppercase)
lower_set = set(string.ascii_lowercase)
letter_set = set(string.ascii_letters)
set1 = password.intersection(upper_set)
set2 = password.intersection(lower_set)
set3 = password.intersection(letter_set)
if set1 and set2 and set3:
print('密碼符合要求')
str = ''.join(password)+'\n'
pwds.add(str)
fw = open('pwds.txt','w')
fw.writelines(pwds)
else:
print('密碼不符合要求')