python集合

集合(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('你的三次登录机会已用尽')

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值