基本数据类型的内置方法与其相关操作、可变不可变类型、队列与堆栈
今日学习内容总结
字符串的其他内置方法
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

学习内容总结
浙公网安备 33010602011771号