Python之列表

##列表创建###

#数值类型: int, float, (long), complex,
# 布尔类型:
# 字符串:
# 列表:

 

# 数组: 存储同一种数据类型的集和。scores=[12,95.5]
# 列表(打了激素的数组): 可以存储任意数据类型的集和。

li = [1, 1.2, 2j+3, True, "hello"]
print(li, type(li))

# 列表里面也是可以嵌套列表的;
li1 = [1, 1.2, 2j+3, True, "hello", [1,2,3,4,5]]
print(li1, type(li1))

###列表的特性###

services = ['http', 'ssh', 'ftp']

# 索引
# 正向索引
print(services[0])
# 反向索引
print(services[-1])

# 切片
print(services[::-1])  # 列表的反转
print(services[1:])  # 除了第一个之外的其他元素
print(services[:-1])  # 除了最后一个之外的其他元素

# 重复
print(services*3)

# 连接
services1 = ['mysql', 'firewalld']
print(services + services1)

# 成员操作符
print('firewalld' in services)
print('ftp' in services)
print('firewalld' not in services)
print('ftp' not in services)

 

# 列表里面嵌套列表


services2 = [['http', 80], ['ssh', 22], ['ftp',21]]

# 索引
print(services2[0][0])
print(services2[-1][1])


# 切片
#
print(services2[:][1])
print(services2[:-1][0])
print(services2[0][:-1])


# 如何for循环遍历

print("服务显示".center(50, "*"))
for service in services:
    # print输出不换行,
    print(service, end=',')


# python2:print不换行
# print "hello",

# python3:
print("hello", end=',')


##列表练习-季节###

"""


5. 根据用于指定月份,打印该月份所属的季节。
**提示: 3,4,5 春季 6,7,8 夏季  9,10,11 秋季 12, 1, 2 冬季

"""

month = int(input('Month:'))
if month in [3, 4, 5]:
    print("春季")
elif month in [6, 7, 8]:
    print('夏季')
elif month in [9, 10, 11]:
    print('秋季')
elif month in [12, 1, 2]:
    print('冬季')
else:
    print("月份不合法")

 

###列表练习###

"""

假定有下面这样的列表:
    names = ['fentiao', 'fendai', 'fensi', 'apple']

    输出结果为:'I have fentiao, fendai, fensi and apple.'


考察点:
    切片:
    字符串的join方法:


names = ['westos', 'fentiao', 'fendai', 'fensi']

names[:-1]

",".join(names[:-1]) + 'and' + names[-1]
"""

names = ['westos', 'fentiao', 'fendai', 'fensi']
# Student: westos, fentiao, fendai and fensi.
print("Student: " + ",".join(names[:-1]) + ' and ' + names[-1] )


##列表元素的增加##

services = ['http', 'ssh', 'ftp']

# 1.
print(services+['firewalld'])
#
# 2. append:追加: append是追加一个元素到列表中;
# services.append('firewalld')
# print(services)

# 3. extend:拉伸: 追加多个元素到列表中
# services.extend(['hello', 'firewalld', 'mysql'])
# print(services)

# 4. insert:插入
services.insert(0, 'firewalld')
print(services)

###列表的删除###

services = ['ftp', 'ssh', 'http', 'ftp']


# 1. pop
# - 如果不传值:
#

"""
In [5]: services.pop()
Out[5]: 'http'

In [6]: services
Out[6]: ['ftp', 'ssh']

In [7]: services.pop(0)
Out[7]: 'ftp'

In [8]: services
Out[8]: ['ssh']

In [9]: services.pop(0)
Out[9]: 'ssh'

In [10]: services
Out[10]: []

In [11]: services.pop()
---------------------------------------------------------------------------
IndexError                                Traceback (most recent call last)
<ipython-input-11-7b2d6a1fedc9> in <module>()
----> 1 services.pop()

IndexError: pop from empty list


"""


# remove
# services.remove('ftp')
# print(services)

# services.remove('http')
# print(services)

# clear: 清空列表里面的所有元素
# services.clear()
# print(services)


# del : 删除列表元素的;
# del services
# print(services)
print(services)
# print("删除列表第一个索引对应的值:", end=" ")
# del services[1]
# print(services)

print("删除除前两个元素之外的其他元素:", end= ' ')
del services[2:]
print(services)


###列表的修改###

services = ['ftp', 'ssh', 'http', 'ftp']

# 通过索引, 重新赋值
# services[0] = 'mysql'
# print(services)


#通过slice(切片)
services[:2] = ['mysql', 'firewalld']
print(services)

###列表的查看###

import random

services = ['ftp', 'ssh', 'http', 'ftp']

# 查看出现次数
print(services.count('ftp'))


# 查看指定元素的索引值(也可与以指定范围查看)
print(services.index('ssh'))
print(services.index('ftp', 2, 8))

# 排序查看, 按照Ascii码进行排序的;
print(services.sort())
print(services)

# 对字符串排序不区分大小写


"""
phones = ['alice', 'bob', 'harry', 'Borry']
phones.sort()
phones
['Borry', 'alice', 'bob', 'harry']


names.sort(key=str.lower)
Traceback (most recent call last):
  File "<input>", line 1, in <module>
NameError: name 'names' is not defined
phones.sort(key=str.lower)
phones
['alice', 'bob', 'Borry', 'harry']


phones.sort(key=str.upper)
phones
['alice', 'bob', 'Borry', 'harry']

"""


# # 随机生成10个整形数, 范围为1~10之间
# numbers = []
# for i in range(10):
#     num = random.randint(1,10)
#     numbers.append(num)
# print(numbers)
# numbers.sort()
# print(numbers)

"""

import random
range(10)
range(0, 10)
li = list(range(10))
li
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

# 将原有的列表顺序打乱, 间接实现随机生成整形数
random.shuffle(li)
li
[1, 0, 4, 9, 3, 5, 8, 2, 7, 6]

 

"""

# li.copy()
# li.reverse()
"""
li = [1,4,2,5]
li1 = li.copy()
id(li)
140504778963400
id(li1)
140504778812040

 

li.reverse()
li
[5, 2, 4, 1]

"""

###用户管理系统####

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

- 删除用户
    1). 判断用户名是否存在
    2). 如果存在,删除;
    3). 如果不存在, 报错;
- 用户登陆
- 用户查看
    1) 通过索引遍历密码
- 退出

 

    1). 系统里面有多个用户, 用户信息目前保存在列表里面;
        users = ['root', 'westos']
        passwds = ['123', '456']
    2). 用户登陆(判断用户登陆是否成功):
        1). 判断用户是否存在?(inuser in users)
        2). 如果存在:
            1). 判断用户密码是否正确?
                (先找出用户对应的索引值, 根据passwds[索引值拿出该用户的密码)
                如果正确: 登陆成功, 退出循环;
                如果密码不正确, 重新登陆, 总共有三次登陆机会
        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. 后台管理员只有一个用户: admin, 密码: admin
# 2. 当管理员登陆成功后, 可以管理前台会员信息.
# 3. 会员信息管理包含:
#       添加会员信息
#       删除会员信息
#       查看会员信息
#       退出

print("管理员登陆".center(50, '*'))
inuser = input('UserName:')
inpasswd = input('Password:')
# 所有会员用户名
users = ['root', 'westos']
# 所有会员的密码
passwds = ['123', '345']

if inuser == 'admin' and inpasswd == 'admin':
    print("管理员登陆成功!")
    print("会员管理".center(50, '*'))
    while True:
        print("""
                        操作目录
            
           1 -    添加会员信息
           2 -    删除会员信息
           3 -    查看会员信息
           4 -    退出
        """)
        choice = input("请选择你的操作:")

 

        if choice == '1':
            print("添加会员信息".center(50, '*'))
            addUser = input("添加会员名:")
            if addUser in users:
                print("用户%s已经存在" %(addUser))
            else:
                addPasswd = input("密码:")
                # 需要把用户和密码添加到列表;
                users.append(addUser)
                passwds.append(addPasswd)
                print("添加用户%s成功" %(addUser))
        elif choice == '2':
            print("删除会员信息".center(50, '*'))
            delUser = input("删除会员名:")
            delIndex = users.index(delUser)
            users.remove(delUser)
            passwds.pop(delIndex)
            print("删除会员%s成功!" %(delUser))

        elif choice == '3':
            print("查看会员信息".center(50, '*'))
            print("\t用户名\t密码")
            userCount = len(users)  # 2
            # 0,1
            for i in range(userCount):
                print('\t%s\t%s' %(users[i], passwds[i]))
        elif choice == '4':
            exit()
        else:
            print("请输入正确的选择")
else:
    print("管理员登陆失败!")