Linux---python中的列表 元组 字典 集合 与 常用的内置方法

file: day03_创建列表.py
date: 2018-08-29 9:06 AM
author: westos-dd
desc:
数组:存储同一种数据类型的集合 scores=[12,13,14]
列表:(打了激素的数组):可以存储任意数据类型的集合
"""
"""

In [1]: name1 = 'tom'

In [2]: name2 = 'lily'

In [3]: name3 = 'bob'

In [4]: name4 ='coco'

In [5]: name1
Out[5]: 'tom'

In [6]: name2
Out[6]: 'lily'

In [7]: name3
Out[7]: 'bob'

In [8]: name = ['tom','lily','bob','cooc']

In [9]: name
Out[9]: ['tom', 'lily', 'bob', 'cooc']

In [10]: type(name)
Out[10]: list

一个变量存储多个信息
"""

# 列表里:可以存储不同的数据类型
li = [1,1.2,True,'hello']
print li
print type(li)

Linux---python中的列表 元组 字典 集合 与 常用的内置方法

# 列表里面也可以嵌套列表(列表:也是一种数据类型)
li = [1,1.2,True,'hello',[1,2,3,4,5]]
print li
print type(li)

Linux---python中的列表 元组 字典 集合 与 常用的内置方法

 

file: day03_列表的特性.py
date: 2018-08-29 9:12 AM
author: westos-dd
desc:
    

"""
service = ['http', 'ssh', 'ftp']

# # 索引
# 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 'firewalld' in service
# print 'firewalld' in service1
# print 'firewalld' not in service
# for循环遍历
# print '显示服务'.center(50,'*')
# for se in service:
#     print se

# 列表里嵌套列表
service2 = [['http',80],['ssh',22],['ftp',21]]
# 索引
print service2[0][1]
print service2[-1][1]

Linux---python中的列表 元组 字典 集合 与 常用的内置方法
# 切片
print service2[:][1]
print service2[:-1][0]
print service2[0][:-1]

 

file: day03_列表的增加.py
date: 2018-08-29 9:48 AM
author: westos-dd
desc:
    

"""
service = ['http', 'ssh', 'ftp']

# 1.
print service + ['firewalld']

# 2.append:追加 追加一个元素到列表中
service.append('firewalld')
print service

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

# 4. insert:在指定索引位置插入元素
service.insert(1,'samab')
print service

此图为上面几种列表增加 的效果:

Linux---python中的列表 元组 字典 集合 与 常用的内置方法

file: day03_列表的删除.py
date: 2018-08-29 9:55 AM
author: westos-dd
desc:
    

"""
service = ['http', 'ssh', 'ftp']

# #1.如果pop()不传递值的时候,默认弹出最后一个元素
# print service.pop()
# # pop()也可以传递索引值
# print service.pop(0)

# 2.remove:删除指定的元素
# service.remove('ssh')
# print service

# 3.del 关键字 从内存中删除列表
# print service
# del service
# print
# service

 

file: day03_列表的查看.py
date: 2018-08-29 10:15 AM
author: westos-dd
desc:
    

"""
service = ['http', 'ssh', 'ftp','ftp']

# 查看列表中元素出现的次数
print service.count('ssh')

# 查看指定元素的索引值
print service.index('ssh')

 

 

file: day03_列表的修改.py
date: 2018-08-29 10:02 AM
author: westos-dd
desc:
    

"""
service = ['http', 'ssh', 'ftp']

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

# 通过切片
print service[:2]
service[:2] = ['samba','ladp']
print service

Linux---python中的列表 元组 字典 集合 与 常用的内置方法

file: day03_列表的排序.py
date: 2018-08-29 10:18 AM
author: westos-dd
desc:
    

"""
# service = ['http', 'ssh', 'ftp','ftp']
#
# # 按照Ascii码进行排序的
# service.sort()
# print service
#
# service.sort(reverse=True)
# print service

# phones = ['bob', 'harry', 'Lily', 'Alice']
# # phones.sort()
# # 对字符串排序不区分大小写
# #phones.sort(key=str.lower)
# phones.sort(key=str.upper)
# print phones

import random
li = list(range(10))
print li
# 将原有的列表顺序打乱
random.shuffle(li)
print li

Linux---python中的列表 元组 字典 集合 与 常用的内置方法

列表练习:

 1.....假定有下面这样的列表:
    names = ['fentiao', 'fendai', 'fensi', 'apple']
    输出结果为:'I have fentiao, fendai, fensi and apple.'

"""
names = ['fentiao', 'fendai', 'fensi', 'apple']
print 'I have ' + ','.join(names[:-1]) + ' and ' + names[-1]

 

file: day03_列表练习题_后台管理前台会员信息.py
date: 2018-08-29 10:16 AM
author: westos-dd
desc:
1.后台管理员只有一个用户:admin 密码:admin
2.当管理员登陆成功后,才可以管理用户信息
3.管理用户信息包含
    添加用户信息
    删除用户信息
    查看用户信息
    退出
"""
print '管理员登陆'.center(50, '*')
inuser = raw_input('UserName:')
inpasswd = raw_input('Password:')

# 现存用户名
users = ['root', 'westos']
# 现存用户密码
passwds = ['123', '456']

if inuser == 'admin' and inpasswd == 'admin':
    print '管理员登陆成功'
    print '用户信息管理'.center(50, '*')
    while True:
        print """
        1 -添加用户信息
        2 -删除用户信息
        3 -查看用户信息
        4 -退出

        """
        choice = raw_input('请选择你的操作:')
        if choice == '1':
            print '添加用户信息'.center(50, '*')
            addUser = raw_input('添加用户:')
            if addUser in users:
                print '用户%s已经存在' % addUser
            else:
                addPasswd = raw_input('密码:')
                # 把用户名和密码添加到列表中
                users.append(addUser)
                passwds.append(addPasswd)
                print '添加用户%s成功' %addUser

        elif choice == '2':
            print '删除用户信息'.center(50,'*')
            delUser = raw_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
            for i in range(userCount): # 0 ,1
                print '\t%s\t%s' %(users[i],passwds[i])

        elif choice == '4':
            exit()
        else:
            print '请输入正确的选择'
else:
    print '管理员登陆失败!'

 

file: day03_列表练习题_用户管理系统1.0.py
date: 2018-08-29 10:16 AM
author: westos-dd
desc:
1.系统里面有用户 用户有密码
    users = ['root','westos']
    passwds = ['123','456']
2.用户登陆(判断用户登陆是否成功)
    1).判断用户是否存在
        2).如果存在:
            判断用户密码是否正确:先找出用户对应的索引,
            根据passwds[索引值]
            如果正确:登陆成功,退出循环
            如果密码不正确:重新登陆 (机会只有三次)
    2).不存在
    重新登陆(机会只有三次)
"""
users = ['root', 'westos']
passwds = ['123', '456']
trycont = 0
# 尝试登陆的次数
while trycont < 3:
    inuser = raw_input('用户名:')
    inpasswd = raw_input('密码:')
    # 尝试次数+1
    trycont += 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 '三次机会已经用完'

 

file: day03_华为笔试编程题目.py
date: 2018-08-29 3:31 PM
author: westos-dd
desc:
华为机测题:
明明想在学校中请一些同学一起做一项问卷调查,为了实验的客观性
他先用计算机生成了N个1~1000之间的随机整数(N<=1000),N是用户输入的,对于
其中重复的数字,只保留一个,把其余相同的数字去掉,不同的数对应着不同的学生的学号,然后再把这些
数从小到大排序,按照排好的顺序去找同学做调查,请你协助明明完成“去重”与排序工作
"""
import random
# 先 生成n个随机数
# 优先选择集合
s = set([])
for i in range(int(raw_input('N:'))):
    # num = random.randint(1,1000)
    # s.add(num)
    s.add(random.randint(1,1000))
print s
print sorted(s)

1. 设计一个程序,帮助小学生练习10以内的加法
    详情:
        - 随机生成加法题目;
        - 学生查看题目并输入答案;
        - 判别学生答题是否正确?
        - 退出时, 统计学生答题总数,正确数量及正确率(保留两位小数点);

2. 小学生算术能力测试系统:
设计一个程序,用来实现帮助小学生进行百以内的算术练习,它具有以下功能:
提供10道加、减、乘或除四种基本算术运算的题目;
练习者根据显示的题目输入自己的答案,程序自动判断输入的答案是否正确并显示出相应的信息。

3. 算法之指定范围内判断
    1). 若一个正整数n的所有小于n的因子之和等于n, 则称n为完全数, 如6=1+2+3是完全数。判断正整数n是否为完全数。
    2). 输入一个正整数,判断其是否为一个素数

"""

Linux---python中的列表 元组 字典 集合 与 常用的内置方法

Linux---python中的列表 元组 字典 集合 与 常用的内置方法

Linux---python中的列表 元组 字典 集合 与 常用的内置方法

 

Linux---python中的列表 元组 字典 集合 与 常用的内置方法

 

file: day_元组的创建.py
date: 2018-08-29 2:19 PM
author: westos-dd
desc:
元组(tuple):带了紧箍咒的列表
元组本身不可变数据类型,没有增删改差
元组内可以存储任意数据类型
"""
t = (1,2,3,4.0,'star')
print t,type(t)

Linux---python中的列表 元组 字典 集合 与 常用的内置方法

# 元组里面包含可变数据类型,可以间接修改元组的内容
t1 = ([1,2,3],4)
t1[0].append(4)
print t1

Linux---python中的列表 元组 字典 集合 与 常用的内置方法

# 元组如果只有一个元素的时候,后面一定要加逗号,否则数据类型不确定
t2 = ('hello',)
t3 = (1,)
print type(t2),type(t3)

 

file: day03_元组的特性.py
date: 2018-08-29 2:26 PM
author: westos-dd
desc:
    

"""
allowUsers = ('root','westos','fentiao')
allowPasswd = ('123','456','789')

# 索引 # 切片
print allowUsers[0]
print allowUsers[-1]
print allowUsers[1:]
print allowUsers[2:]
print allowUsers[:-1]
print allowUsers[::-1]

# 重复
print allowUsers * 3
# 连接
print allowUsers + ('fensi','fendai')
# 成员操作符
print 'westos' in allowUsers
print 'westos' not in allowUsers

 

 

file: day03_元组的应用场景.py
date: 2018-08-29 2:38 PM
author: westos-dd
desc:
    

"""
# 1.变量交换数值
# a = 1
# b = 2
# b,a = a,b
# # 先把(a,b)封装成了一个元组(1,2)
# # b,a = a,b
# # b =(1,2)[0] a=(1,2)[1]
# print a,b

Linux---python中的列表 元组 字典 集合 与 常用的内置方法

# 2.打印变量值
# name = 'westos'
# age = 10
# t = (name,age)
# print 'name: %s,age: %d' %(name,age)
# print 'name: %s,age: %d' %t

Linux---python中的列表 元组 字典 集合 与 常用的内置方法

# 3.元组的赋值:有多少个元素,就用多少个变量接收
# t = ('westos',10,100)
# name,age,score = t
# print name,age,score

Linux---python中的列表 元组 字典 集合 与 常用的内置方法

scores = (100,89,45,78,65)
scoresLi = list(scores)
scoresLi.sort()
print scoresLi

Linux---python中的列表 元组 字典 集合 与 常用的内置方法
#scores = sorted(scores)
#print scores

 

file: day03_集合的定义.py
date: 2018-08-29 2:59 PM
author: westos-dd
desc:
    

"""
# 集合里面的元素是不可重复的
s = {1,2,3,1,2,3,4,5}
print s,type(s)
s1 = {1}
print s1,type(s1)

Linux---python中的列表 元组 字典 集合 与 常用的内置方法
# 如何定义一个空集合
# s2 = {}
# print type(s2)

Linux---python中的列表 元组 字典 集合 与 常用的内置方法
s3 = set([])
print s3,type(s3)

Linux---python中的列表 元组 字典 集合 与 常用的内置方法

# 集合的应用
li = [1,2,3,1,2,3]
print list(set(li))

由于集合(set)不显示重复的

Linux---python中的列表 元组 字典 集合 与 常用的内置方法

file: day03_集合的特性.py
date: 2018-08-29 3:10 PM
author: westos-dd
desc:
集合只支持 成员操作符 for循环

"""
s = {1,2,3}
#print s[0]
# print s * 3
# print s + {5,4,6}
print 1 in s
for i in s:
    print i,
for i,v in enumerate(s):
    print 'index: %s,value:%s' %(i,v)

Linux---python中的列表 元组 字典 集合 与 常用的内置方法

file: day03_集合常用的方法.py
date: 2018-08-29 3:31 PM
author: westos-dd
desc:
    

"""
s = {6, 7, 8, 1, 2, 3}
#  增加
# s.add(10)
# s.add(9)
# print s
# 增加多个元素
# s.update({4,5})
# print s
# 删除
# print s
# s.pop()
# print s
# 删除指定的元素
# s.remove(2)
# print s


# 交集 并集 差集
s1 = {1, 2, 3}
s2 = {2, 3, 4}

# 并集
print '并集:', s1.union(s2)
print '并集:', s1 | s2

# 交集
print '交集:', s1.intersection(s2)
print '交集:', s1 & s2

Linux---python中的列表 元组 字典 集合 与 常用的内置方法

# 差集
# 可以理解为s1中有哪些s2中没有的元素
print '差集:', s1.difference(s2)  # s1-(s1&s2)
print '差集:', s1 - s2
# 可以理解为s2中有哪些s1中没有的元素
print '差集:', s2.difference(s1)  # s2-(s1&s2)
print '差集:', s2 - s1

# 对等差分:并集-交集
print '对等差分:', s1.symmetric_difference((s2))
print '对等差分:', s1 ^ s2

s3 = {1, 2}
s4 = {1, 2, 3}

# s3是否为s4的子集
print s3.issubset(s4)
# s3是否为s4的超集
# 什么是超集:如果s3中的每一个元素都在集合s4中,且
# s4中可能包含s3中没有的元素,则s3就是s4的一个超集
print s3.issuperset(s4)

# 两个集合是不是不相交
print s3.isdisjoint(s4)

 

file: day03_字典的定义.py
date: 2018-08-29 4:20 PM
author: westos-dd
desc:
name :小明
age : 18
height:180
"""
"""
字典是一个无序的数据集合,使用print输出字典的时候
通常输出的顺序和定义的顺序是不一致的
# """

message = {
    'name':'tom',
    'age':18,
    'height':1.80,
    'weight':75.5
}
print message
s = {}
print type(s)
s = {
    'fentiao':[100,90,80],
    'westos':[199,199,199]
}
print s

Linux---python中的列表 元组 字典 集合 与 常用的内置方法

d = dict()
print d,type(d)

d = dict(a=1,b=2)
print d,type(d)

Linux---python中的列表 元组 字典 集合 与 常用的内置方法

file: day03_字典的特性.py
date: 2018-08-29 4:28 PM
author: westos-dd
desc:
    

"""
d = dict(a=1,b=2)

print d

# 成员操作符(默认判断key值是否存在)
print 'a' in d
print 1 in d


# for循环(默认循环遍历字典的key值)
for i in d:
    print i

Linux---python中的列表 元组 字典 集合 与 常用的内置方法

file: day03_字典的增加.py
date: 2018-08-29 4:31 PM
author: westos-dd
desc:
    

"""
d = dict(a=1, b=2)
# print d
# # 添加或者更改key-value对
# d['g'] = 10
# print d
# d['a'] = 10
# print d
"""
update:
    如果key值存在,更新value值
    如果key值不存在,添加key-value值
"""
# d.update({'a':4,'f':1})
# print d

Linux---python中的列表 元组 字典 集合 与 常用的内置方法

"""
setdefault
    如果key值已经存在,不做修改
    如果key值不存在,添加key-value值
"""
d.setdefault('a',10)
print d

 

file: day03_字典的删除.py
date: 2018-08-29 4:36 PM
author: westos-dd
desc:
    

"""
d = dict(a=1, b=2,c=3)
# pop:弹出指定的key-value值
# d.pop('a')
# print d
# print d
# d.popitem()
# print d

del d['a']
print d

 

file: day03_字典的修改与查看.py
date: 2018-08-29 4:40 PM
author: westos-dd
desc:
    

"""
service = {
    'http':80,
    'mysql':3306
}

# 查看字典里面所有的key值
print service.keys()

# 查看字典里面所有的value值
print service.values()

# 查看字典里面所有的key-value值
print service.items()

Linux---python中的列表 元组 字典 集合 与 常用的内置方法

# 遍历
for k,v in service.items():
    print k,'---->',v

for k in service:
    print k,'----->',service[k]

Linux---python中的列表 元组 字典 集合 与 常用的内置方法

# print service['https']
# if 'https' in service:
#     print service['https']
# else:
#     print 'key not exist'

"""
get方法获取指定key对应的value值
    如果key值存在,返回对应的value值
    如果key值不存在,默认返回None,如果需要指定返回值,传值即可
"""
print service.get('http','key not exist')

 

file: day03_字典练习.py
date: 2018-08-29 4:41 PM
author: westos-dd
desc:
# 重复的单词: 此处认为单词之间以空格为分隔符, 并且不包含,和.;
    # 1. 用户输入一句英文句子;
    # 2. 打印出每个单词及其重复的次数;
 "hello java hello python"
# hello 2
# java 1
# python 1
"""
s = raw_input('s:')

# 1.把每个单词分割处理
s_li = s.split()
print s_li

# 2.通过字典存储单词和该单词出现的次数
words_dict = {}

"""
依次循环遍历列表
    如果列表元素不在字典的key中,将元素作为key 1作为valus值
    如果列表元素在字典的key中,直接更新元素value值,在原有的基础上加1
"""
for item in s_li:
    if item not in words_dict:
        words_dict[item] = 1
    else:
        words_dict[item] += 1

# 4.打印生成的字典
print words_dict

Linux---python中的列表 元组 字典 集合 与 常用的内置方法

 

file: day03_字典练习02.py
date: 2018-08-29 4:42 PM
author: westos-dd
desc:
# 数字重复统计:
    1). 随机生成1000个整数;
    2). 数字的范围[20, 100],
    3). 升序输出所有不同的数字及其每个数字重复的次数;
"""
import random

# 1.随机生成1000个整数
all_nums = []
for item in range(1000):
    # 2.数字的范围
    all_nums.append(random.randint(20, 100))

# 3.升序输出所有不同的数字及其每个数字重复的次数
sorted_num = sorted(all_nums)

nums_dict = {}
for num in sorted_num:
    if num in nums_dict:
        nums_dict[num] += 1
    else:
        nums_dict[num] = 1

print nums_dict

 

file: day03_python中常用的内置方法.py
date: 2018-08-29 3:13 PM
author: westos-dd
desc:
    

"""
# 枚举:返回索引值和对应的value值
# s = 'hello'
# for i in s:
#     print i
# for i,v in enumerate('hello'):
#     print i
#     print type(i)
#     print v
#     print type(v)
#     print str(i) + '---->' + v

# s1 = 'abc'
# s2 = '123'
#
# for i in zip(s1,s2):
#     #print i
#     print '-'.join(i)

Linux---python中的列表 元组 字典 集合 与 常用的内置方法

Linux---python中的列表 元组 字典 集合 与 常用的内置方法

Linux---python中的列表 元组 字典 集合 与 常用的内置方法