day03.09

字符串的内置方法

  • 移除字符串首尾的指定字符,可以选择方向

name = '¥¥¥tom¥¥¥'
print(name.strip(''))    # 1.移除字符串内部的¥
print(name.lstrip(''))    # 2.移除字符串左边的¥
print(name.rstrip(''))    # 3.移除字符串右边的¥
  • 更改子字符串内部所有英文元素的大小写

name = 'tom879YIjh'
print(name.lower())  # 1.将所有的英文字母变为小写 
print(name.upper())  # 2.将所有的英文字母变为大写 
print(name.islower())  # 3.判断字符串中所有的英文字母是否是纯小写  结果是布尔值
print(name.isupper())  # 4.判断字符串中所有的英文字母是否是纯大写  结果是布尔值
  • 判断字符串的开头或者结尾是否是指定的字符

s3 = 'jason kevin jason tony 666'
print(s3.startswith('j'))  # True  是否以j开头
print(s3.startswith('jason'))  # True  是否以jason开头
print(s3.startswith('tony'))  # False  是否以tony开头
print(s3.endswith('6'))  # True   是否以6结尾
print(s3.endswith('666'))  # True   是否以666结尾
print(s3.endswith('jason'))  # False   是否以jason结尾
  • 字符串的格式化输出

字符串的格式化输出有两种方法:一种是运用占位符%s、%d,另一种是format方法

占位符:name = (xxx%sxxx)s % 变量

format方法:

  • 跟占位符一致  使用的{}占位

print('my name is {} my age is {}'.format('jason', 18))
  • 根据索引取值 ,其中索引取值可以取到多个元素的值,同一个元素可以反复使用

print('my name is {0} {0} {1} my age is {0} {1}'.format('jason', 18))
  • 根据指名道姓的方式取值,即直接把需要格式化输出的固定的位置用它自己的变量名称指代

print('my name is {name} {name} my age is {age} {pwd}'.format(name='jason', age=18, pwd=123))
  • 直接使用已经出现过的变量,用出现过的变量进行替代,有多少个就写多少个

note:需要注意的是format简写为f在开头

name = 'jason'
age = 18
print(f'my name is {name} my age is {age} {name} {age}')
  • 字符串之间的拼接

复制代码
s1 = 'yhokk  kjhgu'
s2 = 'uohgkl'
print(s1 + s2)  # 如果字符串很大 加号效率较低
print(s1 * 10)  # 重复次数
print('|'.join(s1))  # 把|插入到字符串当中去     注意空格也是字符串的一种
print('$'.join(['jason', 'kevin', 'justin', 'tony']))  # 把$ 插入到字符串当中       jason$kevin$justin$tony
'''join方法相当于是将括号内的元素进行for循环'''
l1 = [11, 'jason', 'kevin']
print('|'.join(l1))  # join的元素必须都是字符串才可以 否则报错
复制代码
  • 替换字符串中指定的字符

number = 'wqrgsdksdhojsasffd'
# 将q替换成n
print(number.replace('q', 'n'))  # 默认一次性替换所有
# 指定替换的个数
print(number.replace('q', 'n', 2))  # 还可以通过数字控制替换的个数,个数计算从左往右,有几个算几个,括号内第三个数字代表替换个数
  • 判断字符串中是否是纯数字

note:注意判断输出的是布尔值

s7 = 'jason123'
print(s7.isdigit())  # False
print('123'.isdigit())  # True
print('123.21'.isdigit())  # False
  • (了解)查找指定字符对应的索引值

# 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))  # 找不到直接报错 不推荐使用
  • (了解)改变字符串当中元素的文本位置

name = 'tony'
print(name.center(30, '-'))  # -------------tony-------------      字符串居中,加入30个-
print(name.ljust(30, '*'))  # tony**************************       字符串在左侧,加入30个*
print(name.rjust(30, '$'))  # $$$$$$$$$$$$$$$$$$$$$$$$$$tony       字符串在右侧,加入30个$
print(name.zfill(50))  # zero 零  0000000000000000000000000000000000000000000000tony     
  • (了解)特殊符号:斜杠与一些英文字母的组合会产生特殊的含义,如果想要取消它们的特殊含义 可以在字符串的前面加一个字母r即可

  • (了解)captalize:首字母大写,把字符串当中元素的首个英文字母大写

message = 'hello everyone nice to meet you!'
message.capitalize()
  • (了解)swapcase:大小写翻转,把字符串当中的元素的大小写互换

message1 = 'Hi girl, I want make friends with you!'
message1.swapcase()
  • (了解)title:把字符串当中元素的每个单词的首字母大写

msg = 'dear my friend i miss you very much'
msg.title()

列表的内置方法

类型转换:

列表可以转换所有可以支持for循环的数据类型,包括字符串、列表、字典、元组、集合

 print(list(各种类型的数据)) 

  • 索引取值

name_list = ['jason', 'kevin', 'tony', 'tom', 'jerry']
print(name_list[0])print(name_list[-1])

取出列表中指定位置的元素

  • 切片操作

其中-1代表从后往左取值,规范依然是前闭后开

name_list = ['jason', 'kevin', 'tony', 'tom', 'jerry']
print
(name_list[1:4]) # ['kevin', 'tony', 'tom'] print(name_list[-4:-1]) # ['kevin', 'tony', 'tom'] print(name_list[-1:-4:-1]) # ['jerry', 'tom', 'tony']
  • 步长间隔

第三个数字代表间隔取值的个数

name_list = ['jason', 'kevin', 'tony', 'tom', 'jerry']
print(name_list[0:4:1])  # ['jason', 'kevin', 'tony', 'tom']
print(name_list[0:4:2])  # ['jason', 'tony']
print(name_list[-1:-4:-1])  # ['jerry', 'tom', 'tony']
  • 如何统计列表中元素的个数

name_list = ['jason', 'kevin', 'tony', 'tom', 'jerry']
print(len(name_list))  # 5
  • 成员运算

name_list = ['jason', 'kevin', 'tony', 'tom', 'jerry']
print('j' in name_list)  # False
print('jason' in name_list)  # True

note:最小判断单位是元素不是元素里面的单个字符

  • 列表添加元素的方式

  • 尾部追加'单个'元素

name_list = ['jason', 'kevin', 'tony', 'tom', 'jerry']
name_list.append('小李')
print(name_list)
  • 指定位置插入'单个'元素

name_list = ['jason', 'kevin', 'tony', 'tom', 'jerry']
name_list.insert(0, 123)
name_list.insert(2, '可不可以插个队')
name_list.insert(1, [11, 22, 33])
print(name_list)

note:前面代表索引值,后面代表插入的元素字符串

  • 如何合并列表:  extend其实可以看成是for循环+append


for
i in [11, 22, 33, 44, 55]: name_list.append(i) print(name_list)

 

name_list = ['jason', 'kevin', 'tony', 'tom', 'jerry']
name_list.extend([11, 22, 33, 44, 55])
print(name_list)
  • 如何删除元素

  • 通用的删除方式

name_list = ['jason', 'kevin', 'tony', 'tom', 'jerry']
del name_list[0]
print(name_list)
  • 就地删除  # 指名道姓的直接删除某个元素

name_list = ['jason', 'kevin', 'tony', 'tom', 'jerry']
print(name_list.remove('jerry'))  # None
print(name_list)
  • 根据索引值删除

name_list = ['jason', 'kevin', 'tony', 'tom', 'jerry']
print(name_list.pop())  # 默认是尾部弹出    jerry
print(name_list)
print(name_list.pop(2))  # 还可以指定索引值   tony
print(name_list)
  • 修改列表当中的元素

print(id(name_list[0]))  # 2614038082368
name_list[0] = 'jasonDSB'
print(id(name_list[0]))  # 2614038926320
print(name_list)
  • 排序

ss = [44, 77, 99, 11, 22, 33, 88, 66]
ss.sort()  # 默认是升序
print(ss)  # [11, 22, 33, 44, 66, 77, 88, 99]
ss.sort(reverse=True)  # 可以修改尾降序
print(ss)  # [99, 88, 77, 66, 44, 33, 22, 11]
  • 翻转

ss = [44, 77, 99, 11, 22, 33, 88, 66]
ss.reverse()  # 前后颠倒
print(ss)
  • 比较运算

复制代码
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
ss = [44, 77, 99, 11, 22, 33, 88, 66]
print(ss.index(99))
复制代码

note:列表在做比较的时候 其实比的是对应索引位置上的元素

  • 统计列表中某个元素出现的次数

l1 = [11, 22, 33, 44, 33, 22, 11, 22, 11, 22, 33, 22, 33, 44, 55, 44, 33]
print(l1.count(11))  # 统计元素11出现的次数
  • clear()  # 清空列表

可变类型与不可变类型

可变与不可变类型的区别在于:可变类型是列表形式,它的值改变但是内存地址不变,修改的是变量对应的数据值本身

                                                   不可变类型是字符串形式,修改过程产生了新的值,新的值对应了新的变量名称

队列与堆栈

队列:先进先出  类似于排队结账

复制代码
# 队列
new_list = []
# 先进
new_list.append(111)
new_list.append(222)
new_list.append(333)
# 先出
for i in new_list:
print(i)
print(new_list.pop(0))
print(new_list.pop(0))
print(new_list.pop(0))
复制代码

 

堆栈:先进后出   类似于叠衣服

复制代码
# 堆栈
new_list = []
# 先进
new_list.append(111)
new_list.append(222)
new_list.append(333)
# 后出
print(new_list.pop())
print(new_list.pop())
print(new_list.pop())
复制代码

作业

 

1.多用户登录系统


 

 

复制代码
source_data = ['tom|123', 'tony|345', 'jim|234']
number = 1
back = 'exit'
choose = 'y'
data_list = []
real_list = []
while True:
    in_name = input('请输入用户名>>>:').strip()
    if len(in_name) == 0:
        print('用户名不能为空')
        continue
    in_pad = input('请输入密码>>>:').strip()
    if len(in_pad) == 0:
        print('密码不能为空')
        continue
    real_list.append(in_name)
    real_list.append(in_pad)
    for i in source_data:
        data_list.append(i.split('|'))
    if real_list in data_list:
        print('欢迎使用')
        while True:
            order = input('请输入您的指令>>>:')
            if order == back:
                print('即将退出程序')
                break
            else:
                print(order)
            continue
    else:
        print('账号和密码错误,再试一次吧')
        number += 1
        if number == 4:
            go_on = input('账号和密码错误,是否继续尝试y/n>>>:')
            if go_on == choose:
                number = 1
            else:
                print('即将退出程序')
复制代码

2.注册登录系统

复制代码
username_list = []    # 获取一个空的用户名的数据列表
password_list = []    # 获取一个空的用户名的密码的数据列表
back = 'exit'    # 定义一个变量back
number = 1    # 给变量number赋值为1
print('欢迎使用本系统')    # 打印输出字符串数据文本
choice = input("是否为新用户,请输入'y'或'n'>>>:").strip()    # 获取到切除首尾空格的用户数据
while choice == 'y':    # while循环的判断条件,根据上一步获取的输入信息进行判断
    print('欢迎来到注册界面')    # 条件成立,执行子代码,用户开始注册
    while True:    # 嵌套一个while循环
        username = input('请设置您的用户名>>>:').strip()    # 获取到切除首尾空格的用户名数据
        if len(username) == 0:    # 判断用户名是否为空
            print('用户名不能为空')    # 提示用户名不可以为空
            continue    # 结束本次循环,并开始新的一次循环
        password = input('请设置您的密码>>>:').strip()    # 获取到切除首尾空格的用户的密码数据
        if len(password) == 0:    # 判断用户的密码是否为空
            print('密码不能为空')    # 提示用户密码不可以为空
        break    # 符合条件,注册完成,结束while循环体代码
    username_list.append(username)    # 把获取到的用户名加入到用户名数据列表当中
    password_list.append(password)    # 把获取到的用户密码加入到用户密码数据列表当中
    print('恭喜您,注册成功')    # 提示用户注册成功
    choice = 'n'    # 注册成功,重新给choice赋值,跳转到用户登录界面
else:
    print('欢迎来到登录界面')    # 系统判断为老用户,直接来到系统登录界面
    while True:    # 加入一个while循环,用来重复输入用户名和密码
        username = input('请输入您的用户名>>>:').strip()    # 获取切除首尾空格的用户名
        password = input('请输入您的密码>>>:').strip()    # 获取切除首尾空格的用户密码
        if username in username_list and password in password_list:    # 比对用户名和密码是否正确,判断语句
            print("恭喜您,登录成功")    # 条件成立,提示登录成功
            while True:    # 加入一个while循环,能够循环重复执行用户下达的指令
                order = input('请输入您的指令>>>:')    # 获取用户输入的指令信息
                if order == back:    # 加入一个判断语句,判断用户是否想要退出程序
                    print('即将退出程序')    # 判断条件成立,提示即将退出系统
                    break    # 结束本层while循环
                else:
                    print(order)    # 如果用户不想退出,则根据用户指令打印出执行结果
                    continue    # 开始执行下一次循环
        else:    # 条件不成立,执行else子代码
            print('账号和密码错误,再试一次吧')    # 提示用户账户和密码错误
            number += 1    # 变量number增量赋值加一
            if number == 4:    # 判断变量number是否等于4
                print('账户已锁定')    # 若变量number等于4,提示账户已锁定
                break    # 账户锁定,退出循环执行登录账户密码的操作,跳出循环
复制代码

 

 

 

3.不使用count统计列表中指定元素出现的次数

number = [11, 22, 33, 45, 67, 23, 89, 33, 45, 79, 80, 65, 78, 33]
time = 0
for i in number:
    if i == 33:
        time += 1
        print(time)

 

posted @   *sunflower*  阅读(64)  评论(0编辑  收藏  举报
(评论功能已被禁用)
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
点击右上角即可分享
微信分享提示