基本数据类型的内置方法与其相关操作、可变不可变类型、队列与堆栈

今日学习内容总结

字符串的其他内置方法

      1.移除字符串首尾的指定字符 (可以选择方向),代码示例:

      # 移除首尾的  #
      a = '####JasonNB###'
      print(a.strip('#'))  # 打印结果 JasonNB
      print(a.lstrip('#'))  # 打印结果 JasonNB###
      print(a.rstrip('#'))  # 打印结果 ####JasonNB

      2.大小写相关操作,代码示例:

      # 大小写的互换与判断
      a = 'JasonHandsome'
      print(a.lower())  # 将所有英文字母变成小写 打印结果 jasonhandsome
      print(a.upper())  # 将所有英文字母变成大写 打印结果 JASONHANDSOME
      print(a.islower())  # 判断字符串中所有的英文字母是否是纯小写  结果是布尔值打印结果 False
      print(a.isupper())  # 判断字符串中所有的英文字母是否是纯大写  结果是布尔值打印结果 False
      # 现在验证码不分大小写的原因
      code = 'JasonNB'
      print('验证码:%s' % code)  # 打印结果 JasonNB
      user_code = input('请输入验证码>>>:').strip()  # 输入你看见的验证码 ,然后移除首尾的空格
      if code.lower() == user_code.lower():  # 将你输入的验证码全部变成小写,判断你输入的验证码与全部变成小写的验证码是否一致
          print('正确')  # 一致的话,打印正确

      3.判断字符串开头或者结尾是否为指定字符,代码示例:

      # 判断字符串的首尾是否为指定字符串
      a = 'JasonHandsome'
      print(a.startswith('j'))  # False
      print(a.startswith('Jason'))  # True
      print(a.endswith('sonme'))  # False
      print(a.endswith('some'))  # True

      4.格式化输出的更多使用,format方法(前面学习过%s和%d在总结(四)),代码示例:

      # format方法的四种用法
      #用法1 与%s一样 但是用的是{}占位
      print(' {} 是旅行者的 {}'.format('八重神子', '女神'))  #  八重神子 是旅行者的 女神

      #用法2  根据索引取值  可以反复使用
      print('{0} {1} {0} {1} {2}'.format('Jason', 'NB', '666'))  # Jason NB Jason NB 666
      
      #用法3 指名道姓的选择,类似于之前说的键值对,以键取值
      print('姓名:{name} 年龄: {age} 爱好: {habby} '.format(name='jason', age=18, habby='study'))  # 姓名:jason 年龄: 18 爱好: study

      #用法4 直接使用已经出现过的变量
      name='jason'
      age=18
      habby='study'
      print(f'姓名:{name} 年龄: {age} 爱好: {habby} ')  # 姓名:jason 年龄: 18 爱好: study 
      # 鸡哥告诉我们说python官网很久以前就说推荐使用format做格式化输出 甚至说%s要被砍掉,所以我们要常用format用法,并且format用法更加自由与方便。

      5.字符串的拼接,代码示例:

      # 多种使用方式
      a = 'Jason'
      b = 'NB'
      print(a + b)  # 如果字符创很大的话,效率会很低  JasonNB
      print((a + b) * 3)  # 也可以不相加,我加只是因为我想重要的事情说三遍 JasonNBJasonNBJasonNB
      print('|'.join(a))  # J|a|s|o|n  
      print('#'.join(['jason', 'Handsome', 'NB', '666']))  # jason#Handsome#NB#666

      list_J = ['jason', 'Handsome', 'NB', '666']
      print('#'.join(list_J))  # jason#Handsome#NB#666
      # join的用法相当于将括号内的元素使用for循环


      6.替换字符串中指定的字符,代码示例:

      # 字符串中的替换与使用
      a = 'jason is Handsome NB NB NB 666'
      # 将jason替换成老刘
      print(a.replace('jason', '老刘'))  # 老刘 is Handsome NB NB NB 666
      # 指定替换的个数 还可以通过数字控制替换的个数 从左往右
      print(a.replace('NB', 'Handsome ', 2))  # jason is Handsome Handsome  Handsome  NB 666
    

      7.判断字符串中是否是纯数字,代码示例:

      # 打印结果为布尔值
      a = 'Jason' 
      print(a.isdigit())  # False
      print('123'.isdigit())  # True
      print('123.21'.isdigit())  # False

字符串的相关操作

      1.查找指定字符对应的索引值,代码示例:

      a = 'JasonHandsome'
      print(a.find('s'))  # 2 从左往右查找 查找一个就结束
      print(a.find('d', 1, 6))  # -1 索引字符串中的第二个元素到第六个,-1表示没有
      print(a.find('d', 1, 9))  # 8
      print(a.index('H'))  # 5 与find效果一致
      print(a.index('d', 1, 6))  # 找不到,直接报错substring not found  不推荐使用

      2.文本位置改变,代码示例:

      name = 'Jason'
      print(name.center(30, '-'))  # ------------Jason-------------
      print(name.ljust(30, '*'))  # Jason*************************
      print(name.rjust(30, '*'))  # *************************Jason
      print(name.zfill(30)) # 0000000000000000000000000Jason 默认从左至右,z就是zero的意思。表示用0来填充

      3.特殊符号:斜杠与一些英文字母的组合会产生特殊的含义,代码示例:

      # /n /t /a 的使用
      print('jason\tNB\n6\a6')  # jason	NB (这里是换行了)66 
      # 如果我们想要取消他们的特殊含义 只需要在字符串前面加一个r就可以了
      print(r'jason\tNB\n6\a6')  # jason\tNB\n6\a6

      4.captalize,swapcase,title的使用,代码示例:

      # captalize:首字母大写
      a = 'jason'
      print(a.capitalize())  # Jason

      # swapcase:大小写反转
      a = 'JASONnb'
      print(a.swapcase())  # jasonNB

      # title:每个单词的首字母大写
      a = 'jason handsome nb'
      print(a.title())  # Jason Handsome Nb

列表内置方法

      1.类型转换,代码示例:

    # list 也就是列表只可以转换成支持for循环的数据类型,例如:字符串 列表 字典 元组 集合
    print(list(111))  # 'int' object is not iterable 会告诉你,int对象不能转换成list
    print(list(10.123))  # 'float' object is not iterable 与整型的转换同理
    print(list('Blank'))  # ['B', 'l', 'a', 'n', 'k']
    print(lsit({'name': 'jason', 'age': 18}))  # # ['name', 'age'] 只能取出键值对中的键作为列表
    print(list(('jason', 'nb', 'handsome', 666)))  # ['jason', 'nb', 'handsome', 666]
    print(list({'jason', 'nb', 'handsome', 666}))  # ['handsome', 666, 'jason', 'nb'] 集合是无序的
    print(list(True))  # 'bool' object is not iterable 与整型的转换同理

      2.索引取值,代码示例:

    # 列表索引取值的方法与字符串类似
    name_list = ['jason', 'handsome', 'nb', '666']
    print(name_list[0])  # jason
    print(name_list[1])  # handsome

      3.切片操作,代码示例:

    # 列表切片的方法与字符串类似
    name_list = ['jason', 'handsome', 'nb', '666']
    print(name_list[1:3])  # ['handsome', 'nb']
    print(name_list[-3:-1])  # ['handsome', 'nb']
    print(name_list[-1:-3:-1])  # ['666', 'nb']

      4.间隔操作,相当于 字符串中的步长,代码示例:

    name_list = ['jason', 'handsome', 'nb', '666']
    print(name_list[0:3:1])  # ['jason', 'handsome', 'nb']
    print(name_list[0:3:2])  # ['jason', 'nb']
    print(name_list[-1:-3:-1])  # ['666', 'nb']

      5.统计列表中元素的个数,代码示例:

    # 统计元素个数
    name_list = ['jason', 'handsome', 'nb', '666']
    print(len(name_list))  # 4

      6.成员运算 最小判断单位是元素不是元素里面的单个字符,代码示例:

    # 成员运算
    name_list = ['jason', 'handsome', 'nb', '666']
    print('nb' in name_list)  # True
    print('h' in name_list)  # False

      7.列表添加元素的方式,代码示例:

    name_list = ['jason', 'handsome', 'nb', '666']

    # 1.尾部追加'单个'元素 单个的意思就是,无论你追加的是字典,还是新的一个列表,都只是在name_list中追加了一个新的元素
    name_list.append('老刘')
    print(name_list)  # ['jason', 'handsome', 'nb', '666', '老刘']
    name_list.append(['老刘', 'nb', '666'])
    print(name_list)  # ['jason', 'handsome', 'nb', '666', '老刘', ['老刘', 'nb', '666']]

    # 2.指定位置插入'单个'元素
    name_list.insert(0, 'age')
    print(name_list)  # ['age', 'jason', 'handsome', 'nb', '666']
    name_list.insert(1, ['老刘', 'nb', '666'])
    print(name_list)  # ['age', ['老刘', 'nb', '666'], 'jason', 'handsome', 'nb', '666']

    # 3.合并列表 extend方法也可以看做是一个for循环的使用
    name_list.extend(['老刘', 'nb', '666'])
    print(name_list)  # ['jason', 'handsome', 'nb', '666', '老刘', 'nb', '666']
    name_list += ['老刘', 'nb', '666']  # # ['jason', 'handsome', 'nb', '666', '老刘', 'nb', '666']

      8.列表删除元素的方式,代码示例:

    name_list = ['jason', 'handsome', 'nb', '666']
    # 1.通用方法
    del name_list[0]
    print(name_list)  # ['handsome', 'nb', '666'] (鸡哥没了,滑稽)

    # 2.就地删除,也就是指名道姓的直接删除某个元素
    print(name_list.remove('jason'))  # None 因为它删除了不会给你反馈结果,所以为空
    print(name_list)  # ['handsome', 'nb', '666']

    # 3.延迟删除
    print(name_list.pop())  # 666  相当于把末尾的取出来,在这个时候你还能用,之后并不会放回去,也就是延迟删除了
    print(name_list)  # ['jason', 'handsome', 'nb']
    print(name_list.pop(2))  # nb 这种延迟删除的方法还可以索引
    print(name_list)  # ['jason', 'handsome', '666']

      9.修改列表元素,代码示例:

    name_list = ['jason', 'handsome', 'nb', '666']
    name_list[0] = 'jasonNB'
    print(name_list)  # ['jasonNB', 'handsome', 'nb', '666']

      10.排序,代码示例:

    a = [4, 727, 9, 151, 122, 13, 20, 66]
    a.sort()  # 默认是升序
    print(a)  # [4, 9, 13, 20, 66, 122, 151, 727]
    a.sort(reverse=True)  # 这就是降序
    print(a)  # [727, 151, 122, 66, 20, 13, 9, 4]
    a.reverse()  # 前后颠倒
    print(a)  # [66, 20, 13, 122, 151, 9, 727, 4]

      11.比较运算,代码示例:


    a = [4, 727, 9, 151, 122, 13, 20, 66]
    b = [5, 21223, 1, 5] 
    print(a > b)  # False 列表的比较,就是根据索引位置上的元素进行的比较,所以你会发现。b是比a大的
    # 查询列表中的元素的索引位置
    print(a.index(13))  # 5

      12.统计列表中某个元素出现的次数,代码示例:

    a = [1, 1, 1, 1, 1, 1, 2, 3, 4]
    print(a.count(1))  # 6
    # clear  清空列表
    a.clear()
    print(a) # []
    

可变不可变类型的说明

      可变与不可变类型的基本含义,就是可变类型,在该类型的值发生改变时,内存地址是不变的,修改的是值本身,而不可变类型,的值如果改变了,内存地址一定变了,因为修改的过程,相当于产生了新的值。代码示例:

    # 我们用查看变量的'内存地址'的方法来进行上述说明的验证
    a = [1, 2, 3]
    print(id(a))  # 2044359944264
    a.append(4)
    print(id(a))  # 2044359944264
    # 这里我们发现内存地址一样,这是因为我们查询的还是a的值得id,如果我们这样
    res = a.append(4)
    print(id(res))  # 1715109168 
    

队列与堆栈

      队列,就是先进先出,代码示例:

    a = []
    # 先进
    a.append(1)
    a.append(2)
    a.append(3)
    # 先出方法1
    for i in a:
        print(i)  # 1  2  3
    # 先出方法2
    print(a.pop(0))  # 1
    print(a.pop(0))  # 2
    print(a.pop(0))  # 3

      堆栈,就是先进后出,代码示例:

    a = []
    # 先进
    a.append(1)
    a.append(2)
    a.append(3)
    # 后出
    print(a.pop())  # 3
    print(a.pop())  # 2
    print(a.pop())  # 1

今日作业

# 1.将登录功能编写成多用户模式
# 列表赋值
user_list = ['jason|123', 'tony|123', 'kevin|321', 'jerry|222']
i = 0
# 设置循环,
while i < 3:
    # 输入用户名,并且默认移除收尾字符串的空格
    uname = input('name>>>: ').strip(' ')
    # 输入密码,并且默认移除收尾字符串的空格
    pword = input('password>>>:').strip(' ')
    # 设置一个循环,让列表user_list内的值可以让username以字符串的形式循环使用
    for username in user_list:
        # 将name, password解压赋值,分割线为  |
        name, password = username.split('|')
        # 使用判断语句,判断输入的用户名和密码是否正确
        if uname == name and pword == password:
            # 当用户名和密码输入正确时,设置循环
            # 打印登录成功提示
            print('登录成功')
            while True:
                # 设置登录成功后,进入循环输入的内容,提示当输入内容为q时,退出本次登录
                j = input('请输入内容(输入 q 结束):')
                # 判断输入内容是否为'q'
                if j == 'q':
                    # 结束本层循环
                    i = 4
                    break
                    # 否则
                else:
                    # 打印j的内容
                    print(j)
    else:
        # 打印 '用户名或密码错误'
        if i != 4:
            print('用户名或密码错误')
        # 给i增量赋值
        i += 1
        # 判断i是否等于3
        if i == 3:
            # 当i=3时,提示已错误三次,是否重新输入。
            d = input('已错误三次,是否重新输入(y/n):')
            # 判断输入y时
            if d == 'y':
                # 重置y,使y=0
                i = 0
                # 否则
            else:
                # 结束本层循环
                break

# 2.利用列表编写一个用户注册、登录程序
username = ['jason|123', '222|222']
i = 0
while i < 3:
    d = int(input('输入1登录,输入2注册,输入3结束:'))
    if d == 1:
        user = input('用户名:').strip()
        word = input('密码:').strip()
        for username_i in username:
            name, password = username_i.split('|')
            if user == name and word == password:
                print('登录成功')
                while True:
                    j = input('请输入内容(输入 q 结束):')
                    if j == 'q':
                        i = 4
                        break
                    else:
                        print(j)
        else:
            if i != 4:
                print('用户名或密码错误')
            i += 1
            if i == 3:
                d = input('已错误三次,是否重新输入(y/n):')
                if d == 'y':
                    i = 0
                else:
                    break
    elif d == 2:
        user = input('用户名:').strip()
        word = input('密码:').strip()
        for username_i in username:
            name, password = username_i.split('|')
            if user != name:
                username_str = user + '|' + word
                username.append(username_str)
    else:
        break



posted @ 2022-03-09 19:32  くうはくの白  阅读(65)  评论(0)    收藏  举报