星光不问赶路人|

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

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

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

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('请输入正确的指令')

本文作者:春游去动物园

本文链接:https://www.cnblogs.com/chunyouqudongwuyuan/p/15986473.html

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   春游去动物园  阅读(55)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
展开
  1. 1 生分 川青
生分 - 川青
00:00 / 00:00
An audio error has occurred.

生分 - 川青

词:莎子

曲:邵翼天

编曲:林亦

混音:罗杨轩

吉他:林亦

制作人:谢宇伦

监制:曾炜超/陈显

策划:+7

统筹:黄染染

出品:漫吞吞文化

『酷狗音乐人 • 星曜计划』

全方位推广,见证星力量!

「版权所有未经许可 不得商业翻唱或使用」

我们怎么变得那么生分

用了几年也没解开疑问

有些事你不提我也不问

在陌生与熟悉间找平衡

有些话一开口会伤人

有些话一开口会伤人

所以我选择默不作声

所以我选择默不作声

爱一个人

若甘愿陪衬

甘愿牺牲

也许换个名分

也不是没可能

我不怕在爱里做个蠢人

我不怕在爱里做个蠢人

也不怕爱过之后再分

也不怕爱过之后再分

爱一个人

有万种身份

万种可能

只是没想到

我们最后友人相称

我们怎么变得那么生分

我们怎么变得那么生分

连说话都要掌握好分寸

怕不注意流言

见缝插针

怕不小心我们

成陌生人

我们怎么变得那么生分

用了几年也没解开疑问

有些事你不提我也不问

在陌生与熟悉间找平衡

有些话一开口会伤人

有些话一开口会伤人

所以我选择默不作声

所以我选择默不作声

爱一个人

若甘愿陪衬

甘愿牺牲

也许换个名分

也不是没可能

我不怕在爱里做个蠢人

我不怕在爱里做个蠢人

也不怕爱过之后再分

也不怕爱过之后再分

爱一个人

有万种身份

万种可能

只是没想到我们最后

友人相称

我们怎么变得那么生分

连说话都要掌握好分寸

怕不注意流言见缝插针

怕不小心我们成陌生人

我们怎么变得那么生分

用了几年也没解开疑问

有些事你不提我也不问

在陌生与熟悉间找平衡

我们怎么变得那么生分

我们怎么变得那么生分

连说话都要掌握好分寸

怕不注意流言见缝插针

怕不小心我们成陌生人

我们怎么变得那么生分

用了几年也没解开疑问

有些事你不提我也不问

在陌生与熟悉间找平衡