Python--元组

一.元组的创建
1.元组的定义
元组与列表类似,均可以存储任意的数据类型。但是元组中的元素,不可以任意做更改,没有增删改
2.定义一个元组
在( )中输入任意类型的元素,每个元素之间以,隔开

>>> t = (1,2,3.2,True,'westos')  
>>> t
(1, 2, 3.2, True, 'westos')
>>> type(t)
<class 'tuple'>

当元组内仅由一个元素时,必须以,隔开,否则元组的类型不确定

>>> k = (2)未加逗号时,( )被当作运算符,里面的元素为什么类型,则输出什么类型
>>> type(k)
<class 'int'>
>>> k = ('class')
>>> type(k)
<class 'str'>
>>> k = (True,)
>>> type(k)
<class 'tuple'>

3.元组内元素的更改
注意:元组内的元素不可以做更改,但是当元组内包含可变的数据类型时,可以通过改变可变的数据类型来间接对元组进行更改

>>> t = ([2,3,4],1.2,'redhat')
>>> t[1]=2  ##直接对元组内的元素进行更改,出现报错
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'tuple' object does not support item assignment
>>> t[0].append(5)  ##t[0]为列表,列表可以修改,对此列表进行更改
>>> t
([2, 3, 4, 5], 1.2, 'redhat')
>>> t[0]
[2, 3, 4, 5]
>>> t[0][3] = 8  ##针对性的对列表中的某一元素进行更改
>>> t
([2, 3, 4, 8], 1.2, 'redhat')

4.空元组的创建
空元组创建:tup = ()

>>> tup = ()
>>> type(tup)
<class 'tuple'>

二.元组的特性
1.索引

>>> t = (1,2,3.5,True,'westos')
>>> t[0]   ##通过索引找到指定的元素
1
>>> t[4]
'westos'
>>> t[-1]  ##从右往左数,第一个元素
'westos'

2.切片

>>> t[:-1]
(1, 2, 3.5, True)  ##除过最后一个元素以外的所有元素
>>> t[1:]  ##除过第一个元素以外的所有元素
(2, 3.5, True, 'westos')
>>> t[2:]  ##除过前2个元素以外的所有元素
(3.5, True, 'westos')
>>> t[::-1]  ##对元组内的元素进行反转
('westos', True, 3.5, 2, 1)

3.连接

>>> t+('one','two','three')
(1, 2, 3.5, True, 'westos', 'one', 'two', 'three')
>>> t+[1,2,2.3]  ##不同类型的数据之间不可进行连接
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: can only concatenate tuple (not "list") to tuple

4.重复
格式:元组*n ##n:重复的次数

>>> t*3
(1, 2, 3.5, True, 'westos', 1, 2, 3.5, True, 'westos', 1, 2, 3.5, True, 'westos')

5.for循环遍历 可以取得元组内的每一个元素

t = ('westos',1,2.1)
for i in t:
    print(i)
westos
1
2.1

6.成员操作符
in ##元素在元组里,在为True,不在为False
not in ##元素不再元组里,不在为True,在为False

t = ('westos',1,2.1)
print(1 in t)
print(2.1 not in t)
True
False

三.元组的常用方法
count() ## 统计指定的元素在元组中出现的次数
index() ##表示指定元素的最小索引值

t = ('westos',1,2.1,'redhat','westos')
print(t.count('westos'))
print(t.index('westos'))
print(t.index(2.1))
2  ##元素'westos'在元组中出现2次
0  ##出现元素'westos'的最小索引为t[0]
2  ##出现元素2.1的最小索引为t[2]

min() # 找出元组中的最小数
max() #找出元组中的最大数
sum() # 对元组中的元素求和

t = (2,5,9.5,8.4)
print(min(t))
print(max(t))
print(sum(t))
2
9.5
24.9

四.元组的应用场景
1.交换两变量

a = 1
b = 4
b,a = a,b  ##b,a=(1,4)  b=(1,4)[0]  a=(1,4)[1]
print(a)
print(b)
4
1

2.打印变量

name = 'luck'
age = 17
t = (name,age)
print('%s的年龄是%d' %(name,age))
print('%s的年龄是%d' %(t))
luck的年龄是17
luck的年龄是17

3.元组的赋值:有多少个元素,就用多少个变量接收

>>> t = ('luck',18,87)
>>> name,age = t  ##当变量个数少于元素个数时,会出现报错
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: too many values to unpack (expected 2)
>>> name,age,score = t
>>> print(name,age,score)
luck 18 87

五.习题测试
系统里面有多个用户,用户的信息目前保存在列表里面
users = [‘root’,‘westos’]
passwd = [‘123’,‘456’]

  • 添加用户:
    1). 判断用户是否存在?
    2). 如果存在, 报错;
    3). 如果不存在,添加用户名和密码分别到列表中;

  • 删除用户
    1). 判断用户名是否存在
    2). 如果存在,删除;
    3). 如果不存在, 报错;

  • 用户登陆

  • 用户查看

  • 退出

user = ['root','westos','luck']
passwd = ['123','456','789']
import getpass
while True:
    action = input('请输入您的操作:[L]ogin|[P]rint|[C]reat|[D]elet|[E]xit:')
    if action=='P':  ##查看用户
        max = len(user)
        print('用户\t\t密码')
        for i in range(max):
            print('%s\t\t%s' %(user[i],passwd[i]))
    elif action=='C':  ##创建用户
        while True:
            username = input('请输入用户名:')
            if username not in user:
                user.append(username)
                password = getpass.getpass('请输入用户密码')
                print('用户创建成功!!')
                break
            else:
                print('该用户存在!!')
    elif action == 'D':  ##删除用户
        while True:
            username=input('请输入用户名:')
            if username in user:
                U=user.index(username)
                user.pop(U)
                passwd.pop(U)
                print('用户删除成功!!')
                break
            else:
                print('用户不存在!!')
    elif action == 'L':  ##登录用户
        while True:
            username=input('请输入用户名:')
            if username in user:
                while True:
                    password = getpass.getpass('请输入用户密码:')
                    U = user.index(username)
                    if password == passwd[U]:
                        print('登录成功!!')
                        break
                    else:
                        print('登录失败!!')
                break
            else:
                print('该用户不存在!!')
    elif action == 'E':  ##退出登录
        print('退出操作')
        exit()
    else:
        print('错误操作,请重输:')

操作结果:

[kiosk@foundation4 0529]$ /usr/local/python3/bin/python3 01.py
请输入您的操作:[L]ogin|[P]rint|[C]reat|[D]elet|[E]xit:P
用户		密码
root		123
westos		456
luck		789
请输入您的操作:[L]ogin|[P]rint|[C]reat|[D]elet|[E]xit:C
请输入用户名:root
该用户存在!!
请输入用户名:haha
请输入用户密码
用户创建成功!!
请输入您的操作:[L]ogin|[P]rint|[C]reat|[D]elet|[E]xit:D
请输入用户名:westos
用户删除成功!!
请输入您的操作:[L]ogin|[P]rint|[C]reat|[D]elet|[E]xit:L
请输入用户名:root
请输入用户密码:
登录成功!!
请输入您的操作:[L]ogin|[P]rint|[C]reat|[D]elet|[E]xit:E
退出操作
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值