1.列表的创建
""" 数组:存储同一数据类型的集合score=[10,20,30] 列表:可以存储任意数据类型的集合 """ #列表里可以存储任意数据类型 li=[1,1.2,'hello',True] print(li) print(type(li)) #列表嵌套 li1=[1,1.3,'hello',[1,23,3,4,5]] print(li1) print(type(li1))
注:列表中可以嵌套列表。
2.列表的特性:
service=['http','ssh','ftp','dns']
#索引
# print(service[0])
# print(service[-1])
#切片
# print(service[1:])
# print(service[:-1])
# print(service[::-1])
#重复
# print(service*3)
#连接
# service1=['mysql','firewalld']
# print(service+service1)
#成员操作符
# print('mysql' in service)
# print('mysql' in service1)
#迭代
# print('显示所有服务'.center(50,'*'))
# for se in service:
# print(se)
# print('服务显示完毕'.center(50,'*'))
#列表里嵌套列表
service2 = [['http',80],['ssh',22],['ftp',21]]
#索引
# print(service2[0][1])
# print(service2[-1][-1])
#切片
print(service2[1])
print(service2[:-1][-1])
print(service2[0][:-1])
3.列表的练习:
#假定有下面的列表:
names=['fentiao','fendai','fensi','apple']
#输出结果为:'I have fentiao,fendai,fensi and apple'
print('I have '+','.join(names[:-1])+' and '+names[-1])
print('---'.join(names[:]))
#在join()括号里面的字符中间加上前面的字符
4.列表的添加:
添加方法1 :
print(service+['firewalld']) ##这样的添加的方法是直接的,需要注意的是在添加的时候需要加上中括号,就是直接添加的时候要添加同一数据类型的数据。
就是只能在后面接上list类型的数据
2.append:追加一个元素到列表中:
service.append('firewalld') ###将firewalld添加到列表后面。
print(service)
注:append方法的添加方式只能添加一个数据到列表中
在用append添加一个列表的时候会将一整个列表添加到这个列表中。
3.extend:拉伸,追加多个元素到列表中:
service.extend(['firewalld','mysql']) ###将firewalld和mysql加入到service列表中
4.insert:在制定索引位置插入元素
service.insert(1,'samba')
print(service)
5.删除列表中的元素
1.用pop函数
service.pop() ###将service列表中的元素弹出来
默认是从service中最后一个元素开始弹出来:
弹出之后数组中的元素会变。
2.用service.remove函数
service=['http','ssh','ftp','dns']
service.remove('http')
将对应的元素删除,但是pop删除的时候会将弹出的数据存储,用remove删除的时候会直接将元素在内存空间中删除。
3.从内存中删除列表:
service=['http','ssh','ftp','dns'] del service print(service)
NameError: name 'service' is not defined
基于列表的用户登录程序:
users=['root','westos']
passwd=['123','456']
for i in range(3):
i+=1
name=input('请输入用户名:')
if name in users:
index=users.index(name)
password=input('请输入密码:')
if password == passwd[index]:
print('登录成功!')
break
else:
print('密码输入错误!请重新登录!')
else:
print('用户不存在!')
实验结果:
脚本目标:
编辑一个具体增删查的会员管理系统:
代码实现:
huiyuan= ['sun']
huiyuanpasswd= ['123']
for i in range(3):
print('管理员登录'.center(50, '*'))
inuser = input('username:')
inpasswd = input('password:')
if inuser=='admin' and inpasswd=='admin' :
while True:
print("""
操作目录
1,添加会员信息
2.删除会员信息
3.查看会员信息
4.退出
""")
choice=int(input('请输入你要进行的操作:'))
if choice == 1:
addname=input('请输入要添加的会员名字:')
if addname in huiyuan:
print('会员名已被占用!')
else:
huiyuan.append(addname)
addpasswd=input('为会员%s设置密码:'%addname)
huiyuanpasswd.append(addpasswd)
print('添加成功!')
elif choice== 2:
delname=input('请输入要删除的会员:')
if delname in huiyuan:
caozuoqueren=input('确认要删除会员%s吗?y/n'%delname)
if caozuoqueren == 'y':
index=huiyuan.index(delname)
huiyuan.pop(index)
huiyuanpasswd.pop(index)
print('会员%s已经成功删除'%delname)
else:
print('删除操作取消')
else:
print('查无此人!')
elif choice == 3:
print(huiyuan[:])
print(huiyuanpasswd[:])
else:
print('输入有误')
else:
print('密码错误!你还有%d次机会'%(2-i))
zuoye:
import random
num=int(input('请输入你要产生多少个数:'))
t=set([])
for i in range(num) :
t.add(random.randint(1,1000))
print(sorted(t))
6.列表的修改
#1.通过索引直接赋值
service=['http','ssh','ftp','dns']
# service[0]='httpd'
# print(service)
#2.通过切片,一次性赋多个值
service[:2]=['samba','nfs']
print(service)
列表的查看:
service = ['http','ssh','ftp','dns','ftp']
print(service.count('ftp'))
print(service.count('ssh'))
- 查看元素出现的次数:
- 查看指定元素的索引值
service = ['ftp','http','ssh','ftp','dns']
print(service.index('http'))
print(service.index('ftp',1,4))
列表的排序:
排序:
实验代码:
service = ['http','ssh','ftp','dns']
service.sort()
print(service)
实验结果:
这个排序是按照ascii码来排序的。
打乱:
代码:
import random
li = list(range(10))
print(li)
random.shuffle(li)
print(li)
li.sort()
print(li)
结果:
"""
1.系统里面有多个用户,用户的信息目前保存在列表里面
users = ['root','westos']
passwd = ['123','456']
2.用户登陆(判断用户登陆是否成功
1).判断用户是否存在
2).如果存在
1).判断用户密码是否正确
如果正确,登陆成功,推出循环
如果密码不正确,重新登陆,总共有三次机会登陆
3).如果用户不存在
重新登陆,总共有三次机会
"""
users = ['root','westos']
passwords = ['123','456']
#尝试登录次数
trycount = 0
while trycount < 3:
inuser = input('用户名: ')
inpassword = input('密码: ')
trycount += 1
if inuser in users:
index = users.index(inuser)
password = passwords[index]
if inpassword == password:
print('%s登录成功' %(inuser))
break
else:
print('%s登录失败 : 密码错误' %inuser)
else:
print('用户%s不存在' %inuser)
else:
print('尝试超过三次,请稍后再试')
实验结果:
练习2:
要求:
1.后台管理员用户只有一个 用户:admin 密码:admin
2.管理员登录成功后,才能管理会员信息
3.会员信息包含:
添加会员信息
删除会员信息
查看会员信息
退出
代码:
print('管理员登录'.center(50,'*'))
inuser = input('Username:')
inpasswd = input('Password:')
users = ['root','westos']
passwords = ['123','456']
if inuser == 'admin' and inpasswd == 'admin':
print("""
操作目录
1. 添加会员信息
2. 删除会员信息
3. 查看会员信息
4. 退出
""")
choice = input('请输入您的选择:')
if choice == 1:
pass
elif choice == 2:
pass
elif choice == 3:
pass
elif choice == 4:
exit()
else:
print('')
else:
print('')
实验结果:
练习:
栈的工作原理
入栈
出栈
栈顶元素
栈的长度
栈是否为空
代码:
li=['westos']
print("欢迎使用栈".center(50,'*'))
inuser=input("请输入会员名:")
inpasswd= input('请输入密码:')
if inuser=='admin' and inpasswd=='admin':
print("""
1. 入栈
2. 出栈
3. 栈顶元素
4. 栈的长度
5. 栈内元素
""")
while True:
inopt=input('请输入您的操作:')
if inopt=="1":
innum=input('请输入入栈元素:')
li.append(innum)
print("元素%s已经添加"%innum)
elif inopt=="2":
appout=li.pop(li.index(input("请输入出栈元素:")))
print("元素%s已经删除"%appout)
elif inopt=="3":
print("栈顶元素".center(50,'*'))
print(li[-1])
elif inopt=="4":
print("查看当前栈的长度".center(50,'*'))
print("当前栈的长度是:%d"%len(li))
elif inopt=='5':
print("查看栈内元素".center(50,'*'))
print(li)
else:
print("没有该选项!")
else:
print("您没有当前栈的使用权!")
测试: