字符串的其他内置方法和列表的内置方法

字符串的其他内置方法(非常重要)

这些内置是在我们写程序的时候会经常用到的,使用我们有必要全部记住,就算不能全部记住,我们也需要知道字符串有的内置函数。

1.移除字符串首尾的指定字符 我们可以选择移除的方向默认是两边全部,不填写指定字符就是移除空格。
str = '!!!!春游去动物园!!!'
print(str.strip('!'))  # 春游去动物园
print(str.lstrip('!'))  # 春游去动物园!!! 移除左边
print(str.rstrip('!'))  # !!!!春游去动物园 移除右边

2.大小写
str2 = 'aBcD'
print(str2.lower())  # abcd 将所有的英文字母变为小写
print(str2.upper())  # ABCD 将所有的英文字母变为大写
print(str2.islower())  # False 判断字符串中所有的英文字母是否是纯小写  返回值是布尔值
print(str2.isupper())  # False 判断字符串中所有的英文字母是否是纯大写  返回值是布尔值

3.判断字符串的开头或者结尾是否是指定的字符
str3 = 'hello world'
print(str3.startswith('h'))  # True
print(str3.startswith('hello'))  # True
print(str3.startswith('world'))  # False
print(str3.endswith('d'))  # True
print(str3.endswith('world'))  # True
print(str3.endswith('hello'))  # False

4.格式化输出
第一种:和占位符用法一样,但是使用{}占位
print('I am {},hobby is {}'.format('春游去动物园','玩'))

第二种:根据索引取值  可以反复使用
print('I am {0} {0} {1},hobby is {1} {0}'.format('春游去动物园','玩'))
I am 春游去动物园 春游去动物园 玩,hobby is 玩 春游去动物园

第三种:根据指名道姓的方式取值
print('I am {name} {hobby},hobby is {name}{hobby}'.format(name = '春游去动物园',hobby = '玩'))
I am 春游去动物园 玩,hobby is 春游去动物园玩

第四种:直接使用已经出现过的变量
name = '春游去动物园'
hobby = '玩'
print(f'I am {name} {hobby},hobby is {hobby} {name}')
I am 春游去动物园 玩,hobby is 玩 春游去动物园
千万不要忘了在要格式化输出的字符串前加f!!!!!!

5.拼接字符串
str5 = '少壮不努力'
str5_1 = '老来靠吉言'
print(str5 + str5_1)#少壮不努力老来靠吉言
print(str5 * 5)#少壮不努力少壮不努力少壮不努力少壮不努力少壮不努力
print('|'.join(str5))#少|壮|不|努|力
print('*'.join(['1', '2', '3', '4', '5']))#1*2*3*4*5
join的元素必须都是字符串才可以 否则报错

6.替换字符串中指定的字符
str6 = 'hello hello hello world hero hello'
替换全部
print(str6.replace('hello', '111'))  #111 111 111 world hero 111
替换指定的个数(从左往右)
print(str6.replace('hello', '111', 1))  #111 hello hello world hero hello

7.判断字符串中是否是纯数字
str7 = 'qwe123'
print(str7.isdigit())  # False
print('123'.isdigit())  # True
print('123.123'.isdigit())  # False

需要了解的操作

 1.查找指定字符对应的索引值
 s1 = 'jason justin kevin tony'
 print(s1.find('s'))  # 从左往右查找 查找一个就结束
 print(s1.find('k', 1, 9))  # -1 意思是没有 找不到
 print(s1.index('s'))
 print(s1.index('k', 1, 9))  # 找不到直接报错 不推荐使用

 2.文本位置改变
 name = 'tony'
 print(name.center(30, '-'))  # -------------tony-------------
 print(name.ljust(30, '*'))  # tony**************************
 print(name.rjust(30, '$'))  # $$$$$$$$$$$$$$$$$$$$$$$$$$tony
 print(name.zfill(50))  # zero 零  0000000000000000000000000000000000000000000000tony

 3.特殊符号:斜杠与一些英文字母的组合会产生特殊的含义
 print('ja\tson\nke\avin')
'''如果想取消它们的特殊含义 可以在字符串的前面加一个字母r'''
 print(r'ja\tson\nke\avin')

 4.capitalize,swapcase,title
 4.1 captalize:首字母大写
 message = 'hello everyone nice to meet you!'
 message.capitalize()
 Hello everyone nice to meet you!
 4.2 swapcase:大小写翻转
 message1 = 'Hi girl, I want make friends with you!'
 message1.swapcase()
 hI GIRL, i WANT MAKE FRIENDS WITH YOU!
 4.3 title:每个单词的首字母大写
 msg = 'dear my friend i miss you very much'
 msg.title()
 Dear My Friend I Miss You Very Much

列表内置方法

1.类型转化
print(list('春游去动物园'))  # ['春', '游', '去', '动', '物', '园']
print(list({'name': '春游去动物园', 'password': 123}))  # ['name', 'password']
print(list((11, 22, 33, 44, 55)))  # [11, 22, 33, 44, 55]
print(list({1, 2, 3, 4, 5}))  # [1, 2, 3, 4, 5]

"""
    list可以转换支持for循环的数据类型
        可以被for循环的数据类型
            字符串 列表 字典 元组 集合
"""

2.常见操作
data = ['春', '游', '去', '动', '物', '园']

  1.索引取值
  print(data[0])  # 春

  2.切片操作
  print(data[1:3])  # ['游', '去']
  print(data[-1::-1])  # ['园', '物', '动', '去', '游', '春']

  3.间隔
  print(data[1:5:2])  # ['游', '动']

  4.统计列表中元素的个数
  print(len(data))  # 6

  5.成员运算 最小判断单位是元素不是元素里面的单个字符
  print('春' in data)  # True
  print('111' in data)  # False

  6.列表添加元素的方式
    1.尾部追加'单个'元素
    data.append('去')
    print(data)  # ['春', '游', '去', '动', '物', '园', '去']
    data.append(['游乐园'])
    print(data)  # ['春', '游', '去', '动', '物', '园', '去', ['游乐园']]

    2.指定位置插入'单个'元素
    data.insert(0, '我')
    print(data)  # ['我', '春', '游', '去', '动', '物', '园']
    data.insert(4, '去哪')
    print(data)  # ['我', '春', '游', '去', '去哪', '动', '物', '园']

    3.合并列表
    data.extend([11, 22, 33, 44, 55])
    print(data)  # ['春', '游', '去', '动', '物', '园', 11, 22, 33, 44, 55]
    '''extend其实可以看成是for循环+append'''
    data += [11,22,33,44] # 加号的效率不高
  
  7.删除
    1.通用的删除方式
    del data[0]
    print(data)#['游', '去', '动', '物', '园']
    
    2.指名道姓的直接删除某个元素
    data.remove('去')
    print(data)  # ['春', '游', '动', '物', '园']
    
    3.延迟删除
    data.pop()  # 默认是尾部弹出
    print(data)  # ['春', '游', '去', '动', '物']
    data.pop(1)
    print(data)  # ['春', '去', '动', '物', '园']
    data.pop(0)
    print(data)  # ['游', '去', '动', '物', '园']

  8.修改列表元素
  data[0] = '秋'
  print(data)  # ['秋', '游', '去', '动', '物', '园']

  9.排序
  data_number = [1, 5, 3, 6, 8, 0, 66]
  data_number.sort()  # 默认是升序
  print(data_number)  # [0, 1, 3, 5, 6, 8, 66]
  data_number.sort(reverse=True)  #降序
  print(data_number)  # [66, 8, 6, 5, 3, 1, 0]

  10.反转
  data.reverse()  #顺序颠倒,(前面的到后面去)
  
  11.比较运算
  s1 = [11, 22, 33]
  s2 = [1, 2, 3, 4, 5, 6, 7, 8]
  print(s1 > s2)  # True
  """列表在做比较的时候 其实比的是对应索引位置上的元素"""
  s1 = ['A', 'B', 'C']  # A>>>65
  s2 = ['a']  # a>>>97
  print(s1 > s2)  # False
  """如果比较的2个是字母,将会根据字母的ASCII码值来进行比较。"""
  
  12.统计列表中某个元素出现的次数
  l1 = [11, 22, 33, 44, 33, 22, 11, 22, 11, 22, 33, 22, 33, 44, 55, 44, 33]
  print(l1.count(11))  # 统计元素11出现的次数
  l1.clear()  # 清空列表

可变类型和不可变类型

    可变数据类型:列表list和字典dict;不可变数据类型:整型int、浮点型float、字符串型string和元组tuple。

  """
     可变类型与不可变类型
    可变类型     列表
        值改变 内存地址不变 修改的是本身
    不可变类型   字符串
        值改变 内存地址肯定遍 修改过程产生了新的值
如何查看变量的'内存地址'
id(变量名)
"""

队列和堆栈

Stack(栈):数据先进后出,类比放盘子,最先放的盘子最后拿出;最后放的盘子最先拿出

进栈:向一个栈插入新元素,它是把新元素放到栈顶元素的上面,变成新的栈顶元素;

出栈:从一个栈删除元素,它是把栈顶元素删除掉,使其相邻的元素成为新的栈顶元素。

Queue(队列):数据先进先出

特点:
(1)队列中的数据元素遵循“先进先出”(First In First Out)的原则,简称FIFO结构。

(2)在队尾添加元素,在队头删除元素。

今日作业

1.将登录功能编写成多用户模式
2.利用列表编写一个用户注册、登录程序
     提示:循环
     要求:成功一次即可 无需考虑用户冲突等情况
3.不使用count统计列表中指定元素出现的次数

def infointo():
    username = input('请输入你的用户名: ').strip()
    password = input('请输入你的密码: ').strip()
    return username, password


def create(user_list, username_list):
    username, password = infointo()
    user_word = username + '|' + password
    if username in username_list:
        print('账号已存在,请重新注册')
        print('正在进行注册操作:')
        create(user_list, username_list)
    else:
        print('创建成功')
        user_list.append(user_word)
        username_list.append(username)


def into(user_list, username_list):
    username, password = infointo()
    up = username + '|' + password
    if up in user_list:
        print('登入成功')
        while True:
            str = input('请输入要执行的操作(exit退出):')
            if str == 'exit':
                break
            else:
                print(str)
    elif username not in username_list:
        print('未查询到账号,请先注册')
        print('正在进行注册操作:')
        create(user_list, username_list)
    elif up not in user_list:
        print('账号或密码错误')


user_list = ['春游去动物园|123']
username_list = ['春游去动物园']
while True:
    is_into = input('欢迎使用(1:登入 2:注册 3:退出): ').strip()
    if is_into == '1':
        into(user_list, username_list)
    elif is_into == '2':
        create(user_list, username_list)
    elif is_into == '3':
        print('再见')
        break
    else:
        print('请输入正确的指令')

使用字典(会简单很多)

def inputUP():
    name = input('请输入你的账号:').strip()
    password = input('请输入你的密码:').strip()
    return name, password


def into(dic):
    name, password = inputUP()
    if name in dic and password == dic[name]:
        print('登入成功')
        while True:
            str = input('请输入要执行的操作(exit退出):')
            if str == 'exit':
                break
            else:
                print(str)
    elif name not in dic:
        print('账号不存在,请先注册')
        print('正在进行注册操作:')
        create(dic)
    else:
        print('账号或密码错误')


def create(dic):
    name, password = inputUP()
    if name in dic:
        print('账号已存在,请重新注册')
        print('正在进行注册操作:')
        create(dic)
    else:
        dic[name] = password
        print('注册成功')


dic = {}
while True:
    key = input('欢迎使用(1.登入 2.注册 3.退出): ').strip()
    if key == '1':
        into(dic)
    elif key == '2':
        create(dic)
    elif key == '3':
        print('再见')
        break
    else:
        print('请输入正确的指令')
posted @ 2022-03-09 18:21  春游去动物园  阅读(52)  评论(0编辑  收藏  举报