2022.3.9笔记总结

大标 2022年3月9日18:45:10
评论
25
摘要

2022.3.9笔记总结字符串的其他内置方法列表内置方法可变与不可变类型队列与堆栈字符串的其他内置方法1.strip移除字符串首尾的指定字符,可以选择方向s1 = ‘$$$jason$$$’print(s1.strip(‘$’)) # jasonprint(s1.lstrip(‘$’)) # jason$$$print(s1.rstrip(‘$’)) # $$$jason2.大小写s2 =


2022.3.9笔记总结

  • 字符串的其他内置方法
  • 列表内置方法
  • 可变与不可变类型
  • 队列与堆栈

字符串的其他内置方法

1.strip

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

s1 = '$$$jason$$$'
print(s1.strip('$'))  # jason
print(s1.lstrip('$'))  # jason$$$
print(s1.rstrip('$'))  # $$$jason

2.大小写

s2 = 'JaSoN666SB'
print(s2.lower())  # 将所有的英文字母变为小写 jason666sb
print(s2.upper())  # 将所有英文字母变为大写 JASON666SB

print(s2.islower())  # 判断字符串中所有的英文字母是否为纯小写,结果是bool值
print(s2.isupper())  # 判断字符串中的所有英文字母是否为纯大写,结果是bool值

举例:图片验证码大小写字母都可以,如何实现?

code = 'jAsOn123'
user_code = input('用户输入的验证码>>>:').strip()
if code.lower() == user_code.lower():
	print('验证码正确!')
else:
    print('验证码错误')

3.startswith和endswith

判断字符串的开头或者结尾是否是指定的字符

s3 = 'jason kevin jason tony 666'
print(s3.startswith('j'))  # True
print(s3.startswith('tony'))  # False
print(s3.endswith('666'))  # True
print(s3.endswith('kevin')) # False

4.格式化输出

(1)基础方式:

占位符%s和%d

(2)format方式1:

print('my name is {},my age is {}'.format('jason', 18))

(3)format方式2,利用索引:

print('my name is {0},my age is {1}'.format('jason', 18))

(4)format方式3,指名道姓

print('my name is {name}, my age is {age}'.format(name = 'age', age = 18)

(5)format方式4,通过已有变量,使用f

name = 'jason'
age = 18
print(f'my name is {name}, my age is {age}')

5.join拼接字符串

s1 = 'jason'
print('|'.join(s1))  # j|a|s|o|n 插入到字符串中
print('|'.join(['jason', 'tony', 'kevin']))  # jason|tony|kevin

因此可以看出,join方法相当于是将括号里面的元素进行for循环,并且括号里面的所有元素必须是字符串才可以!

6.replace

替换字符串中指定的字符

s1 = 'jason jason jason is nb'
print(s1.replace('jason ','老刘'))  # '老刘 老刘 老刘 is nb'   一次性替换所有
print(s1.replace('jason','老刘',2))  # '老刘 老刘 jason is nb'   后面添加一个数字代表替换个数

7.isdigit

判断是否为纯数字

s1 = 'jason123'
print(s1.isdigit())  # False  
print(123.isdigit())  # True  必须是纯数字
print(11.11.isdigit())  # False 浮点型不可以

字符串了解操作

1.查找指定字符对应的索引值

s1 = 'jason jason tony tony'
print(s1.find('s'))  # 从左往右找到一个就结束
print(s1.find('k',1,9)) # 结果为-1,意思是没找到,1,9代表索引区间
print(s1.index('s')) 
print(s1.index('k',1,9))  # 找不到直接报错,不推荐使用

2.文本位置改变

name = 'tony'
print(name.center(30,'-'))  # -------------tony-------------  30代表总长度,-是填充
print(name.ljust(30,'-'))  # tony--------------------------
print(name.rjust(30,'-'))  # --------------------------tony
print(name.zfill(30))  # 00000000000000000000000000tony

3.特殊符号

print('ja\tson\n123\anb')

\n为换行,\t为四个空格

如果想取消它们的特殊含义,可以在前面加个r

print(r''ja\tson\n123\anb')

4.capitalize,swapcase,title

4.1首字母大写

message = 'hello everyone nice to meet you!'

message.captalize() # 表示句首首字母大写

4.2大小写反转

message.swapcase # 表示所有字母大小写反转

4.3所有单词首字母大写

message.title # 表示所有单词首字母大写

列表内置方法

1.类型转换

结构:list()

list可以转换所有支持for循环的数据类型:字典、集合、字符串、集合、列表

2.常见操作

name_list = ['jason', 'kevin', 'tony', 'tom', 'jerry']

(1)索引取值

name_list([0])
name_list([-1])

(2)切片操作

name_list([1:4])  # 切1-3的数
name_list([1:4:2])  # 切1-3的数,间隔数为2
name_list([-4:-1])  # 负数也可以
name_list([-1:-4:-1])  # -1可以反向切片

(3)len():统计个数

len(name_list)  # 5

(4)成员运算

print('j' in name_list)  # False必须是元素才可以
print('jason' in name_list)  # True

3.列表添加元素

name_list = ['jason', 'tony', 'kevin']

(1)append尾部追加

name_list.append('小李')  # 尾部追加单个元素
name_list.append(['小李', '小王', '小马'])  # 尾部追加列表,但是列表只能作为整体插入

(2)insert指定位置插入元素

name_list.insert(0,'小李')  # 0代表索引,'小李'是数据
name_list.insert(1,['小李', '小王', '小马'])  # 尾部追加列表,但也是列表只能作为整体插入

(3)extend合并列表

与上面两个添加元素不同,expend可以将两个列表合并

name_list.extend([11,22,33])  # ['jason', 'tony', 'kevin',11,22,33]

其实extend也可以当作for循环和append的联合使用的结果

4.删除元素

(1)通用删除方式

del+空格
del name_list([0])

(2)就地删除,可以指定

name_list.remove('jason')  # None,指定去除jason

(3)延迟删除

name_list.pop()  # 空括号默认是从尾部弹出
name_list.pop(2)  # 指定索引值弹出kevin

5.修改列表元素

print(id(name_list[0]))  # 2614038082368
name_list[0] = 'dsb'  # 重新定义索引0中的数据
print(id(name_list[0]))  # 2614038926320
print(name_list)  # 索引0的值改变了,内存地址也变了,所以他是不可变类型,但是name_list里面的值变了但是内存地址却没变,所以它是可变类型

6.排序

s1 = [9, 6, 5, 7, 3,1]

s1.sort()  # 空括号默认是升序 [1,3,5,6,7,9]
s1.sort(reverse = True)  # 修改为降序 [9,7,6,5,3,1]

7.翻转

s1 = [9, 6, 5, 7, 3,1]

s1.reverse()  # 表示前后顺序颠倒 [1,3,7,5,6,9]

8.比较运算

s1 = ['A', 'B', 'C']

s2 = ['a']

print(s1 > s2)  # False 因为A>>>65,a>>>97

ss = [44, 77, 99, 11, 22]

print(ss,index(99))  # 查找99所在索引位置,这个方法类似字符串

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

ss = [11, 22, 33, 22, 33, 44]

print(ss.count(22))  # 2,表示出现两次

10.清空列表

ss.clear()
print(ss)  # 显示无内容

可变与不可变类型

以字符串举例:

s1 = '$$$jason$$$'
print(s1.strip('$$$'))  # 结果为jason,
print(s1)  # 结果为$$$jason$$$

说明字符串本身是不可变的,因此值改变,内存地址变了,相当于产生了新值

再看列表

s2 = [1, 2, 3]
print(s2.extend([11, 22, 33])  # 结果为None(空)
print(s2)  # 结果为[1, 2, 3, 11, 22, 33]

列表中添加元素后结果为空,且原值s2的值改变了,但是它的内存地址是不变的,所以列表是可变类型,修改的是原值

所以得出结论:

'''
可变类型:列表等
        值改变 内存地址不变 修改的是本身
不可变类型:字符串,整型、浮点型等
        值改变 内存地址肯定遍 修改过程产生了新的值
'''
如何查看变量内存地址?
eg:
s1 = [1, 2, 3]
print(id(s1))  # 2171184953160
s1.append(123)
print(id(s1))  # 2171184953160
内存地址不变,值变了,说明他是可变类型

队列与堆栈

队列:

​ FIFO,先进先出

堆栈:

​ FILO,后进后出

举例先进后出:

name_list = ['jason', 'tony', 'marry', 'mark']
for i in name_list:
    print(i)
count = 0
while count < 4:
    count += 1
    print(name_list.pop())

作业联系

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

我的解答一(拼接字符串到列表然后比对):

a = 1
j = []
while a == 1:
    username1 = input('输入注册账号(exit退出)>>>:').strip()
    if username1 == 'exit':
        a = 0
    password1 = input('输入注册密码>>>:').strip()
    j.append(username1 + '|' + password1)
    print('注册成功!')
    print(username1, password1)
    while a == 1:
        username = input('输入登录名(输入exit退出,输入q返回上层)>>>:').strip()
        if username == 'exit':
            a = 0
        if username == 'q':
            break
        password = input('输入登录密码>>>:').strip()
        if (username + '|' + password) in j:
            print('登录成功')
            a = 0
        else:
            print('用户名或密码错误!')

我的解答二(使用字典键值对储存账号密码然后比对):

s1 = {}
a = 1
while a == 1:
    username1 = input('输入注册账号(exit退出)>>>:').strip()
    if username1 == 'exit':
        break
    password1 = input('输入注册密码>>>:').strip()
    s1[username1] = password1
    while a == 1:
        username = input('输入登录名(输入exit退出,输入q返回上层)>>>:').strip()
        if username == 'exit':
            a = 0
            break
        if username == 'q':
            break
        password = input('输入登录密码>>>:').strip()
        if username in s1 and password == s1[username]:
            print('登录成功!')
        else:
            print('登陆失败,请重试')

  • 我的微信
  • 微信扫一扫
  • weinxin
  • 我的微信公众号
  • 微信扫一扫
  • weinxin
大标
  • 本文由 发表于 2022年3月9日18:45:10
  • 转载请务必保留本文链接:https://www.tanhuibiao.com/script/qita/1361.html
匿名

发表评论

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: