一.元组的创建
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
退出操作