• python基础2


    字符串介绍

    • 想一想:

      当打来浏览器登录某些网站的时候,需要输入密码,浏览器把密码传送到服务器后,服务器会对密码进行验证,其验证过程是把之前保存的密码与本次传递过去的密码进行对比,如果相等,那么就认为密码正确,否则就认为不对;服务器既然想要存储这些密码可以用数据库(比如MySQL),当然为了简单起见,咱们可以先找个变量把密码存储起来即可;那么怎样存储带有字母的密码呢?

    • 答:

      字符串

    python中字符串的格式

    如下定义的变量a,存储的是数字类型的值

        a = 100
    

    如下定义的变量b,存储的是字符串类型的值

        b = "hello itcast.cn"
        或者
        b = 'hello itcast.cn'
    

    小总结:

      • 双引号或者单引号中的数据,就是字符串
      • <
     

    字符串输出

    demo

        name = 'xiaoming'
        position = '讲师'
        address = '北京市昌平区建材城西路金燕龙办公楼1层'
    
        print('--------------------------------------------------')
        print("姓名:%s"%name)
        print("职位:%s"%position)
        print("公司地址:%s"%address)
        print('--------------------------------------------------')
    

    结果:

        --------------------------------------------------
        姓名: xiaoming
        职位: 讲师
        公司地址: 北京市昌平区建材城西路金燕龙办公楼1层
        --------------------------------------------------
    
    
     

    字符串输入

    之前在学习input的时候,通过它能够完成从键盘获取数据,然后保存到指定的变量中;

    注意:input获取的数据,都以字符串的方式进行保存,即使输入的是数字,那么也是以字符串方式保存

    demo:

        userName = input('请输入用户名:')
        print("用户名为:%s"%userName)
    
        password = input('请输入密码:')
        print("密码为:%s"%password)
    

    结果:(根据输入的不同结果也不同)

        请输入用户名:dongGe
        用户名为: dongGe
        请输入密码:haohaoxuexitiantianxiangshang
        密码为: haohaoxuexitiantianxiangshang
     

    下标和切片

    1. 下标索引

    所谓“下标”,就是编号,就好比超市中的存储柜的编号,通过这个编号就能找到相应的存储空间

    • 生活中的 "下标"

      超市储物柜

      高铁二等座

      高铁一等座

      绿皮车

    • 字符串中"下标"的使用

      列表与元组支持下标索引好理解,字符串实际上就是字符的数组,所以也支持下标索引。

      如果有字符串:name = 'abcdef',在内存中的实际存储如下:

      如果想取出部分字符,那么可以通过下标的方法,(注意python中下标从 0 开始)

      运行结果:

    2. 切片

    切片是指对操作的对象截取其中一部分的操作。字符串、列表、元组都支持切片操作。

    切片的语法:[起始:结束:步长]

    注意:选取的区间属于左闭右开型,即从"起始"位开始,到"结束"位的前一位结束(不包含结束位本身)。

    我们以字符串为例讲解。

    如果取出一部分,则可以在中括号[]中,使用:

    
         name = 'abcdef'
    
         print(name[0:3]) # 取 下标0~2 的字符
    

    运行结果:

    
         name = 'abcdef&aposapos;
    
         print(name[0:5]) # 取 下标为0~4 的字符
    

    运行结果:

    
         name = 'abcdef'
    
         print(name[3:5]) # 取 下标为3、4 的字符
    

    运行结果:

    
         name = 'abcdef'
    
         print(name[2:]) # 取 下标为2开始到最后的字符
    

    运行结果:

    
         name = 'abcdef'
    
         print(name[1:-1]) # 取 下标为1开始 到 最后第2个  之间的字符
    

    运行结果:

    想一想

    • (面试题)给定一个字符串aStr, 请反转字符串
     

    字符串常见操作

    如有字符串mystr = 'hello world itcast and itcastcpp',以下是常见的操作

    find

    检测 str 是否包含在 mystr中,如果是返回开始的索引值,否则返回-1

    mystr.find(str, start=0, end=len(mystr))
    

    index

    跟find()方法一样,只不过如果str不在 mystr中会报一个异常.

    mystr.index(str, start=0, end=len(mystr)) 
    

    count

    返回 str在start和end之间 在 mystr里面出现的次数

    mystr.count(str, start=0, end=len(mystr))
    

    replace

    把 mystr 中的 str1 替换成 str2,如果 count 指定,则替换不超过 count 次.

    mystr.replace(str1, str2,  mystr.count(str1))
    

    split

    以 str 为分隔符切片 mystr,如果 maxsplit有指定值,则仅分隔 maxsplit 个子字符串

    mystr.split(str=" ", 2)    
    

    capitalize

    把字符串的第一个字符大写

    mystr.capitalize()
    

    title

    把字符串的每个单词首字母大写

    >>> a = <spanclass="hljs-string">"hello itcast"
    >>> a.title()
    'Hello Itcast'
    

    startswith

    检查字符串是否是以 obj 开头, 是则返回 True,否则返回 False

    mystr.startswith(obj)
    

    endswith

    检查字符串是否以obj结束,如果是返回True,否则返回 False.

    mystr.endswith(obj)
    

    lower

    转换 mystr 中所有大写字符为小写

    mystr.lower()        
    

    upper

    转换 mystr 中的小写字母为大写

    mystr.upper()    
    

    ljust

    返回一个原字符串左对齐,并使用空格填充至长度 width 的新字符串

    mystr.ljust(width) 
    

    rjust

    返回一个原字符串右对齐,并使用空格填充至长度 width 的新字符串

    mystr.rjust(width)    
    

    center

    返回一个原字符串居中,并使用空格填充至长度 width 的新字符串

    mystr.center(width)   
    

    lstrip

    删除 mystr 左边的空白字符

    mystr.lstrip()
    

    rstrip

    删除 mystr 字符串末尾的空白字符

    mystr.rstrip()    
    

    strip

    删除mystr字符串两端的空白字符

    >>> a = "
    	 itcast 	
    "
    >>> a.strip()
    'itcast'
    

    rfind

    类似于 find()函数,不过是从右边开始查找.

    mystr.rfind(str, start=0,end=len(mystr) )
    

    rindex

    类似于 index(),不过是从右边开始.

    mystr.rindex( str, start=0,end=len(mystr))
    

    partition

    把mystr以str分割成三部分,str前,str和str后

    mystr.partition(str)
    

    rpartition

    类似于 partition()函数,不过是从右边开始.

    mystr.rpartition(str)
    

    splitlines

    按照行分隔,返回一个包含各行作为元素的列表

    mystr.splitlines()  
    

    isalpha

    如果 mystr 所有字符都是字母 则返回 True,否则返回 False

    mystr.isalpha()  
    

    isdigit

    如果 mystr 只包含数字则返回 True 否则返回 False.

    mystr.isdigit() 
    

    isalnum

    如果 mystr 所有字符都是字母或数字则返回 True,否则返回 False

    mystr.isalnum()  
    

    isspace

    如果 mystr 中只包含空格,则返回 True,否则返回 False.

    mystr.isspace()   
    

    join

    mystr 中每个字符后面插入str,构造出一个新的字符串

    mystr.join(str)
    

    想一想

    • (面试题)给定一个字符串aStr,返回使用空格或者' '分割后的倒数第二个子串

     

    列表介绍

    想一想:

    前面学习的字符串可以用来存储一串信息,那么想一想,怎样存储咱们班所有同学的名字呢?

    定义100个变量,每个变量存放一个学生的姓名可行吗?有更好的办法吗?

    答:

    列表

    列表的格式

    变量A的类型为列表

        namesList = ['xiaoWang','xiaoZhang','xiaoHua']
    

    比C语言的数组强大的地方在于列表中的元素可以是不同类型的

        testList = [1, 'a']
    

    打印列表

    demo:

    结果:

        xiaoWang
        xiaoZhang
        xiaoHua
    
     

    列表的循环遍历

    1. 使用for循环

    为了更有效率的输出列表的每个数据,可以使用循环来完成

    demo:

        namesList = ['xiaoWang','xiaoZhang','xiaoHua']
        for name in namesList:
            print(name)
    

    结果:

        xiaoWang
        xiaoZhang
        xiaoHua
    

    2. 使用while循环

    为了更有效率的输出列表的每个数据,可以使用循环来完成

    demo:

        namesList = ['xiaoWang','xiaoZhang','xiaoHua']
    
        length = len(namesList)
    
        i = 0
    
        while i<length:
            print(namesList[i])
            i+=1
    

    结果:

        xiaoWang
        xiaoZhang
        xiaoHua
    
     

    列表的相关操作

    列表中存放的数据是可以进行修改的,比如"增"、"删"、"改""

    添加元素("增"append, extend, insert)

    append

    通过append可以向列表添加元素

    demo:

        #定义变量A,默认有3个元素
        A = ['xiaoWang','xiaoZhang','xiaoHua']
    
        print("-----添加之前,列表A的数据-----")
        for tempName in A:
            print(tempName)
    
        #提示、并添加元素
        temp = input('请输入要添加的学生姓名:')
        A.append(temp)
    
        print("-----添加之后,列表A的数据-----")
        for tempName in A:
            print(tempName)
    

    结果:

    结果

    extend

    通过extend可以将另一个集合中的元素逐一添加到列表中

    insert

    insert(index, object) 在指定位置index前插入元素object

    修改元素("改")

    修改元素的时候,要通过下标来确定要修改的是哪个元素,然后才能进行修改

    demo:

        #定义变量A,默认有3个元素
        A = ['xiaoWang','xiaoZhang','xiaoHua']
    
        print("-----修改之前,列表A的数据-----")
        for tempName in A:
            print(tempName)
    
        #修改元素
        A[1] = 'xiaoLu'
    
        print("-----修改之后,列表A的数据-----")
        for tempName in A:
            print(tempName)
    

    结果:

        -----修改之前,列表A的数据-----
        xiaoWang
        xiaoZhang
        xiaoHua
        -----修改之后,列表A的数据-----
        xiaoWang
        xiaoLu
        xiaoHua
    

    查找元素("查"in, not in, index, count)

    所谓的查找,就是看看指定的元素是否存在

    in, not in

    python中查找的常用方法为:

    • in(存在),如果存在那么结果为true,否则为false
    • not in(不存在),如果不存在那么结果为true,否则false

    demo

        #待查找的列表
        nameList = ['xiaoWang','xiaoZhang','xiaoHua']
    
        #获取用户要查找的名字
        findName = input('请输入要查找的姓名:')
    
        #查找是否存在
        if findName in nameList:
            print('在字典中找到了相同的名字')
        else:
            print('没有找到')
    

    结果1:(找到)

    结果

    结果2:(没有找到)

    结果

    说明:

    in的方法只要会用了,那么not in也是同样的用法,只不过not in判断的是不存在

    index, count

    index和count与字符串中的用法相同

    >>> a = ['a', 'b', 'c', 'a', 'b']
    >>> a.index('a', 1, 3) # 注意是左闭右开区间

    删除元素("删"del, pop, remove)

    类比现实生活中,如果某位同学调班了,那么就应该把这个条走后的学生的姓名删除掉;在开发中经常会用到删除这种功能。

    列表元素的常用删除方法有:

    • del:根据下标进行删除
    • pop:删除最后一个元素
    • remove:根据元素的值进行删除

    demo:(del)

        movieName = ['加勒比海盗','骇客帝国','第一滴血','指环王','霍比特人','速度与激情']
    
        print('------删除之前------')
        for tempName in movieName:
            print(tempName)
    
        del movieName[2]
    
        print('------删除之后------')
        for tempName in movieName:
            print(tempName)
    

    结果:

        ------删除之前------
        加勒比海盗
        骇客帝国
        第一滴血
        指环王
        霍比特人
        速度与激情
        ------删除之后------
        加勒比海盗
        骇客帝国
        指环王
        霍比特人
        速度与激情
    

    demo:(pop)

        movieName = ['加勒比海盗','骇客帝国','第一滴血','指环王','霍比特人','速度与激情']
    
        print('------删除之前------')
        for tempName in movieName:
            print(tempName)
    
        movieName.pop()
    
        print('------删除之后------')
        for tempName in movieName:
            print(tempName)
    

    结果:

        ------删除之前------
        加勒比海盗
        骇客帝国
        第一滴血
        指环王
        霍比特人
        速度与激情
        ------删除之后------
        加勒比海盗
        骇客帝国
        第一滴血
        指环王
        霍比特人
    

    demo:(remove)

        movieName = ['加勒比海盗','骇客帝国','第一滴血','指环王','霍比特人','速度与激情']
    
        print('------删除之前------')
        for tempName in movieName:
            print(tempName)
    
        movieName.remove('指环王')
    
        print('------删除之后------')
        for tempName in movieName:
            print(tempName)
    

    结果:

        ------删除之前------
        加勒比海盗
        骇客帝国
        第一滴血
        指环王
        霍比特人
        速度与激情
        ------删除之后------
        加勒比海盗
        骇客帝国
        第一滴血
        霍比特人
        速度与激情
    

    排序(sort, reverse)

    sort方法是将list按特定顺序重新排列,默认为由小到大,参数reverse=True可改为倒序,由大到小。

    reverse方法是将list逆置。

     

    列表的嵌套

    1. 列表嵌套

    类似while循环的嵌套,列表也是支持嵌套的

    一个列表中的元素又是一个列表,那么这就是列表的嵌套

        schoolNames = [['北京大学','清华大学'],
                        ['南开大学','天津大学','天津师范大学'],
                        ['山东大学','中国海洋大学']]
    

    2. 应用

    一个学校,有3个办公室,现在有8位老师等待工位的分配,请编写程序,完成随机的分配

    #encoding=utf-8
    
    import random
    
    # 定义一个列表用来保存3个办公室
    offices = [[],[],[]]
    
    # 定义一个列表用来存储8位老师的名字
    names = ['A','B','C','D','E','F','G','H']
    
    i = 0
    for name in names:
        index = random.randint(0,2)    
        offices[index].append(name)
    
    i = 1
    for tempNames in offices:
        print('办公室%d的人数为:%d'%(i,len(tempNames)))
        i+=1
        for name in tempNames:
            print("%s"%name,end='')
        print("
    ")
        print("-"*20)
    

    运行结果如下:

  • 相关阅读:
    jPlayer
    nodemon
    微信
    防盗链
    ES2015 (ES6)
    静态资源
    WebP
    Retina
    ui-grid
    React入门2
  • 原文地址:https://www.cnblogs.com/wanglinjie/p/9107957.html
Copyright © 2020-2023  润新知