集合(set)是一个无序的不重复元素序列。
可以使用大括号 { } 或者 set() 函数创建集合,注意:创建一个空集合必须用 set() 而不是 { },因为 { } 是用来创建一个空字典。
1.创建
s = {1, 2, 2, 3, 3, 4, 4, 4} print(s, type(s)) #一个元素 s1 = {1} print(s1, type(s1)) # 空集合定义 s2 = set([]) print(s2)
#利用无序性可以对列表去重复 Li = [1,23,2,2,2,3] Li = list(set(Li)) print(Li)
2.特性
""" 集合只支持:成员操作符,for循环 索引,切片,重复,连接 都不支持 """ s = {1,2,3} print(1 in s) print(1 not in s) #for 循环 for i in s: print(i,end='|') #取值给索引 for i,v in enumerate(s): print('%s %s' %(i,v))
3.基本使用
s = {6,7,8,9} #增加一个 s.add(1) print(s) #增加多个 s.update({5,4,2}) print(s) #删除 s.pop() print(s) #删除指定元素 s.remove(6) print(s) #交集 并集 差集 s1 = {1,2,3} s2 = {2,3,4} #1 print('并集',s1.union(s2)) print('并集',s1 | s2) #2 print('交集',s1.intersection(s2)) print('交集',s1 & s2)
#差集 print('差集',s1.difference(s2)) #s1 - (s1 & s2) print('差集',s2.difference(s1)) #s2 - (s1 & s2)
#对等差集 print('对等差集',s1.symmetric_difference(s2)) print('对等差集',s1^s2)
#子集 超集 s3 = {1,2} s4 = {1,2,3} print(s3.issubset(s4)) #子集 print(s3.issuperset(s4)) #超集 # 不相交 print(s3.isdisjoint(s4)) #排序 print(s) print(sorted(s))
""" 明明想在学校中请一些同学一起做一项问卷调查,为了实验的客观性 他先用计算机生成了N个1~1000之间的随机整数(N<=1000),N是用户输入的,对于 其中重复的数字,只保留一个,把其余相同的数字去掉,不同的数对应着不同的学生的学号,然后再把这些 数从小到大排序,按照排好的顺序去找同学做调查,请你协助明明完成“去重”与排序工作 """ import random s = set([]) for i in range(int(input('N:'))): s.add(random.randint(1,1000)) print(sorted(s))
"""
1.系统里面有多个用户,用户的信息目前保存在列表里面
users = ['root','westos']
passwd = ['123','456']
2.用户登陆(判断用户登陆是否成功
1).判断用户是否存在
2).如果存在
1).判断用户密码是否正确
如果正确,登陆成功,推出循环
如果密码不正确,重新登陆,总共有三次机会登陆
3).如果用户不存在
重新登陆,总共有三次机会
"""
users = ['root', 'westos']
passwds = ['123', '456']
# 尝试登陆的次数
trycount = 0
while trycount < 3:
inuser = input('用户名:')
inpasswd = input('密码:')
# 尝试次数加1
trycount += 1
if inuser in users:
index = users.index(inuser) # 先找出用户对应的索引值
passwd = passwds[index]
if inpasswd == passwd:
print('%s登陆成功' %(inuser))
break
else:
print('%s登陆失败:密码错误' %(inuser))
else:
print('用户%s不存在' %(inuser))
else:
print('已经超过三次机会了~')
""" 在前面的基础上 登陆成功后实现以下四点 1添加用户 2查看用户信息 3删除用户 4退出 """ users = ['admin', 'westos'] passwd = ['admin', '456'] logCount = 3 while logCount > 0: username = input('用户名: ') password = input('密码: ') logCount -= 1 if username in users: if password == passwd[users.index(username)]: print('登录成功') while True: print(""" (1)添加会员 (2)删除会员 (3)查看会员 (4)退出""") opt = int(input('Input: ')) if opt == 4: print('logout') break elif opt == 1: useradd = input('请输入用户名:') passwdadd = input('请输入用户密码: ') if useradd in users: print('添加失败!用户已存在!') else: users.append(useradd) passwd.append(passwdadd) print('添加成功') elif opt == 2: userdel = input('请输入用户名: ') if userdel not in users: print('用户不存在') else: del (passwd[users.index(userdel)]) users.remove(userdel) print('%s用户已删除' % userdel) elif opt == 3: countNum = users.index(users[-1]) print('用户名\t密码\t') for i in range(countNum+1): print('%s\t%s\t' % (users[i], passwd[i])) else: print('输入不合法') input('') print('\n\n\n\n\n\n') break else: print('密码错误!') else: print('登录失败!用户不存在!') else: print('你的三次登录机会已用尽')