Python—数据类型

 #### 数组和列表 list###

 

数组:存储同一种数据类型的集合 scores = [12,13,14]

列表:(打了激素的数组):可以存储任意数据类型的集合

 

ctrl+Q 查看命令的使用方法

 

1.列表的创建

   示例:

name1 = 'bob'

name2 = 'lily'

name3 = ['ni','hao','wf']

type(name3)

   list

       

 

2.列表的特性:

   示例:

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

# 索引                                                   

print service[0]                                       

print service[:]                                       

print service[:-1]                                     

# 切片                                                   

print service[::-1]     

            

# 重复                                                   

print service * 3                                      

# 连接                                                   

service1 = ['firewalld', 'mysql']                      

print service + service1  

                                  

# 成员操作符                                                

print 'firewalld' in service                           

print 'firewalld' in service1                          

# for循环遍历                                              

for i in service:                                      

    print i,                                           

for j in service[::-1]:                                

    print j                                            

                                                       

# 列表里的嵌套列表                                             

service2 = [['nihao',12],['wangfang',18],['hehe',20]]  

 #索引                                                   

print service2[1]                                      

print service2[0]                                      

print service2[::-1]

 #切片                   

print service2[1][0]   

print service2[:-1][0]  

       

 

3.列表的增加:

   示例:

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

#1.直接在后面追加(只能追加列表类型的)

print service + ['firewalld']

 

#2.append:追加。追加一个元素到列表中,默认追加到最后

service.append('firewalld')

print service

 

#3.extend:拉伸,追加多个元素到列表中

service.extend(['my', 'name'])

print service

 

#4.insert:在指定位置插入元素

service.insert(1, 'haha')

print service

       

 

 

4.列表的删除:

   示例:

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

#1.如果pop()不传递值的时候,默认(显示)弹出最后一个元素

print service.pop()

 

#2pop()也可以传递索引值

print service.pop(0)

 

#3.remove:删除指定的元素

service.remove('ssh')

print service

 

#4.del关键字 从内存中将整个信息都删除

print service

del service

print service     

       

 

 

5.列表的修改:

   示例:      

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

#1.通过索引,重新赋值(给索引值为0的重新赋值为'haha')

service[0] = 'haha'

print service

 

#2.通过切片,大范围的重新赋值

service[:2] = ['nnn','mmm']

print service

print service[:2]         ##显示前两个   

       

 

 

6.列表的查看:

   示例:

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

#查看列表中的元素出现的次数

print service.count('http')

print service.count('ftp')

 

#查看指定元素的索引值

print service.index('http')

       

 

 

7.列表的排序:

   示例:

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

#1.按照ASCII码排序的

service.sort()

print service

 

#2.默认的是按照升序排序的,更改默认值

service.sort(reverse=True)

print service

       

 

service1 = ['Http', 'anny','ssh', 'ftp','Alice']

#1.默认的排序是大写的ASCII码值小,小写的值大

service1.sort()

print service1

#2.不区分大小写的排序

service1.sort(key=str.lower)

print service1

service1 .sort(key=str.upper)

print service1

 

#给一个区间,然后排序,默认的是按顺序排列

import random

li = list(range(10))

print li

 

#将li这个数列打乱输出

random.shuffle(li)

print li

       

 

8.练习题

1)学生管理系统

-系统里面有用户 用户有密码

   users = ['root', 'westos']

   passwd = ['123', '456']

-用户登陆(判断用户登陆是否成功)

   1)判断用户是否存在

   2)如果存在:

      判断用户密码是否正确:先找出索引

      根据psswd【索引值】

      如果正确:登陆成功,退出循环

      如果错误:重新登陆(三次机会)

   3)不存在

   重新登陆(三次机会)

 

代码:

users = ['root', 'westos']

passwd = ['123', '456']

 

num = 1

count = 0

while num <= 3:

    user = raw_input('请输入用户名:')

    a = raw_input('请输入密码:')

    num += 1

    if user in users:

        ps = passwd[users.index(user)]

        if ps == a:

            print '登陆成功!'

            break

    else:

        count += 1

        print '请重新登陆,还剩余%d次机会!' %(3-count)

 

else:

    print '三次机会已用完!'

       

 

2)后台管理

-后台管理员只有一个用户:admin 密码:admin

-当管理员登陆成功后,才可以管理用户信息

-管理用户信息包含

   添加用户信息

   删除用户信息

   查看用户信息

   退出

 

代码:

users = ['root', 'westos']

passwd = ['123', '456']

 

print '管理员登陆'.center(50, '*')

name = raw_input('请输入用户名:')

ps = raw_input('请输入密码:')

 

if name == 'admin' and ps == 'admin':

    print '管理员登陆成功!'

    print '用户信息管理'.center(50, '*')

    while True:

        print """

        1.添加用户信息

        2.删除用户信息

        3.查看用户信息

        4.退出

        """

        choice = raw_input('请输入你的操作:')

 

        if choice == '1':

            print '添加用户信息'.center(50, '*')

            addname = raw_input('输入添加用户名:')

            if addname in users:

                print '用户%s已经存在!' % addname

            else:

                addps = raw_input('输入添加用户密码:')

                users.append(addname)

                passwd.append(addps)

                print '添加用户%s成功!' % addname

        elif choice == '2':

            print '用户信息删除'.center(50, '*')

            print users

            deluser = raw_input('请输入想要删除的用户:')

            index = users.index(deluser)

            users.remove(deluser)

            passwd.pop(index)

            print '用户已删除'

        elif choice == '3':

            print '用户信息'.center(50, '*')

            print '\t用户名\t密码'

            print '\t%s\t%s' % (users,passwd)

        elif choice == '4':

            print 'Bye Bye!'

            exit

            break

        else:

            print '请输入正确的选择!'

else:

    print '管理员登陆失败!'

       

      

      

 

 

#### 元组 tuple ###

 

1.元组的创建

 

元组(tuple):带了紧箍咒的列表

   元组本身是不可变数据类型,没有增删改查(没有.append等功能)

   元组内可以存储任意数据类型

示例:

t = (1,2,3,4.0,'star')

print t,type(t)

 

#元组里面包含可变数据类型,可以间接修改元组的内容

t1 = ([1,2,3],4)

t1[0].append(4)

print t1

       

 

#元组如果只有一个元素的时候,后面一定要加逗号,否则数据类型不确定

t1 = ('hello',)

t2 = (1,)

print type(t1),type(t2)

 

 

2.元组的特性

 

name = ('wf','nihao','fentiao')   

#索引 切片                            

print name[0]                     

print name[:]                     

print name[-1]                    

print name[:-1]                   

print name[1:]                    

print name[::-1]       

      

#重复                               

print name * 3                    

#连接                               

print name + ('rourou','doubao')  

#成员操作符                            

print 'rourou' in name            

print 'wf' in name                

 

                       

3.元组的应用场景

 

# 1.变量交换数值

a = 1

b = 2

b, a = a, b

# 相当于先把a,b封装成了一个元组(a,b)=(1,2)

# 下面的交换数值,就想相当于

# b = (1,2)[0]   a = (1,2)[1]

print a, b

 

#2.打印变量值

name = 'westos'

age = 10

print 'name:%s,age:%d' % (name, age)

###相当于

t = (name, age)

print 'name:%s,age:%d' % t

 

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

t1 = ('westos', '18', 'student')

name1,age1,work = t1

print name1, age1, work

 

scores = (100,99,88,98)

scores1 = list(scores)

scores1.sort()

print scores1

#相当于  (也可以倒叙排序,和上面的一样 reverse=True)

scores = sorted(scores)       ##这个适用于所有数据类型

print scores

       

 

### 集合 set ###

 

1.集合(集合内的元素不能重复)

  不支持索引,切片,连接,重复;但是支持for循环操作和成员操作符

   示例:

s = {1,2,3,1,2,3,4,5}

print s,type(s)

 

#如何定义一个空集合

#(列表和元组直接不输入数值就可以定义一个空的)

#但是集合不行

 

   比如:

s = {}

print s      ## 输出的s的类型是字典

 

s1 = set([])

print type(s1)

       

 

#去掉列表当中的重复并输出

s2 = [1,2,3,1,2,3,4,5]

s3 = list(set(s2))

print s3

 

###相当于  先把列表s2转换成集合类型(因为集合不能重复)再把结果转换成列表的形式输出

print list(set(s2))

       

 

2.增删

 

   示例:

s = {6,7,8,1,2,3}

#增加

s.add(10)

s.add(9)

print s

 

#增加多个元素

s.update({4,5})

print s

 

#删除元素,用pop()默认删除和列表的默认删除不一样

#列表是默认删除最后一个,集合是默认删除第一个

s.pop()

print s

 

#删除指定的元素

s.remove(8)

print s

 

 

3.交集,并集,差集

 

   示例:

s1 = {1,2,3}

s2 = {2,3,4}

#并集

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

print '并集:',s1 | s2

#交集

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

print '交集:',s1 & s2

      

 

#差集

#s1与s2相比,比s2多了什么  s1-s2

print '差集:',s1.difference(s2)   #s1-(s1&s2)   结果:[1]

#s2与s1相比,比s1多了什么  s2-s1

print '差集:',s2.difference(s1)   #s2-(s1&s2)   结果:[4]

#对等差分:并集-交集

print '对等差分:',s1.symmetric_difference(s2)

print '对等差分:',s1^s2       ##结果:[1,4]

       

 

#s1是否为s2的子集

print s1.issubset(s2)

#两个集合是不是相交

print s1.isdisjoint(s2)

 

练习题:

用计算机生成N个1~1000之间的随机整数,N是用户输入的,对于其中重复的数字,只保留一个,把其余的相同的数字去掉,不同的数对应着不同的学生的学号,数字从小到大排序,按照排好的顺序去找同学作调查,完成去重与排序的工作

       

 

 

#### 字典 dict ###

 

字典的定义:字典是一个无序的数据集合,使用print输出字典的时候,通常输出的顺序和定义的顺序不太一致

 

message = {

   'name' : 'tom'

   'age' : '18'

   'height' : '1.80'

   'weight' : '75.5'

}

print message

 

1.定义一个字典

s = {}

print type(s)      ##输出的结果是: dict  是一个空字典类型的

d = dirct()

print type(d)      ##输出的结果是: dict  是一个空字典类型的

       

 

 

2.字典的特性

 

#成员操作符(默认判断key值是否存在)

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

print 'a' in d     ## True

print 1 in d       ## False

 

#for循环(默认循环遍历字典的key值)

for i in d:

   print i,        ##a b

 

 

3.字典的增加

 

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

#增或更改key-value值

d['g'] = 10

d['a'] = 20

print d            ##{'a':20,'b':2,'g':10}

 

   注意:如果key值存在的时候,更新value值;如果key值不存在,添加key-value值

 

#增加多个key-value值

d.update({'a':4,'f':1})

print d

 

d.setdefault('a':5)

print d

   注意:setdefault 如果key值已经存在,不做修改;如果key值不存在,添加key-value值

 

 

4.字典的删除

 

d = dict(a=1,b=2,c=3)

#pop():弹出指定的key-value值  括号内必须填key值,否则会报错

d.pop('a')

print d

 

d.popitem()      ##这个是默认弹出第一对key-value值

print d

 

del d['a']       ##也可以执行删除a这对key-value值

print d

 

 

5.字典的修改与查看

service = {              

    'http':80,           

    'mysql':3306         

}                        

 

#查看字典里面所有的key值

print service.keys()        ##['http','mysql']

 

#查看字典里所有的value值

print service.values()      ##[80,3306]

 

#查看字典里面所有的key-value值

print service.items()       ##['http':80,'mysql':3306]

       

      

 

#遍历

for k,v in service.items():

   print k,'--->',v

 

for k in service:      

    print k,service[k]

 

if 'http' in service:

   print service['http']

else:

   print 'key not exist!'

       

      

 

get方法:获取指定的key对应的value值

   如果key值存在,返回对应的value值;

   如果key值不存杂,默认返回None。如果需要指定返回值,传值即可

print service.get('https')

print service.get('https','key not exist!')

 

6.练习题:

1)重复的单词:此处认为单词之间以空格为分隔符,并且不包含,和.

-用户输入一句英文句子

-打印出每个单词及其重复的次数

-示例:

-“hello java hello python”

-hello 2

-java 1

-python 1

c

      

 

2)重复数字统计:

-随机生成1000个整数

-数字的范围[20,100]

-升序输出所有不同的数字及其每个数字重复的次数

      

 

posted @ 2018-09-05 23:01  wf-aiyouwei  阅读(288)  评论(0编辑  收藏  举报