python随机字母不重复_python_集合初识_应用(随机生成不重复的字符串)

#!/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'}

{'o', 'b', 'y'}

{'k1', 'k2'}

{'k1', 'k2'}

{('k1', 'k2', 'k2')}

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

# 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)

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('密码不符合要求')

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值