字符串的内置方法
# 如何快速查看数据都有哪些方法 >>> 句点符(.)
# 如何查看方法底层源码 ctrl+鼠标左键点击
1. .upper()/.lower()
res = 'JasOn123 JAson'
res1 = 'jason123'
# 转大写
# print(res.upper()) # JASON123 JASON
# 转小写
# print(res.lower()) # jason123 jason
"""实际案例:图片验证码忽略大小写
思路:全部转大写或者小写再比对
"""
2. .startswith()/.endswith()
判断字符串是否指定的数值开头或结尾
s1 = 'jason 123 newapeman heiheihei oldgirl'
# print(s1.startswith('tony')) # False
# print(s1.startswith('j')) # True
# print(s1.startswith('jas')) # True
# print(s1.endswith('oldboy')) # False
# print(s1.endswith('l')) # True
# print(s1.endswith('rl')) # True
3.format格式化输出
#.format的三种用法
# 1.相当于%s占位符
# s2 = 'my name is {} my age is {}'
# print(s2.format('jason',18)) # my name is jason my age is 18
# 2. 大括号内写索引值可以打破顺序 并且可以反复使用相同位置的数据
# s3 = '{1} my name is {1} my age is {0} {0} {0} {1} {1}'
# print(s3.format('jason', 18))
# 3.大括号内写变量名
# s4 = '{name1} my name is {name1} my age is {age} {name1} {name1}'
# print(s4.format(name1='jason', age=18))
'''占位符与format结合具体情况挑选使用'''
4. 字符串的拼接
# 方法一 字符串相加
# print('hello' + 'world')
# 方法二 join方法
# l = ['jason', 'tony', 'kevin', 'tom', 'jack']
# print(l[0] + '|' + l[1] + '|' + l[2] + '|' + l[3] + '|' + l[4])
# print('|'.join(l))
# l1 = ['jason', 123, 'tony']
# print('$'.join(l1)) # 报错
"""必须是字符串类型 (在python不同数据类型之间无法直接操作)"""
6.替换字符串中指定的字符
# s4 = 'my name is tony tony tony my age is 18'
# 替换字符串中所有的tony>>>jason
# print(s4.replace('tony', 'jason')) # my name is jason jason jason my age is 18
# 替换指定个数的文本
# print(s4.replace('tony', 'jason', 1)) # my name is jason tony tony my age is 18
7. 判断字符串是否为纯数字
# s5 = 'jason123'
# print(s5.isdigit()) # False
# s6 = '123'
# print(s5.isdigit()) # True
'''实际案例'''
# guess_age = input('请输入猜测的年龄>>>:').strip()
# if guess_age.isdigit():
# guess_age = int(guess_age)
# else:
# print('你能不能好好输')
列表基本方法
# 列表内一般会存储相同数据类型的数据
# 类型转换 数据类型关键字(需要转换的数据)
# print(list(123)) # 报错
# print(list(123.33)) # 报错
print(list('hello world')) # ['h', 'e', 'l', 'l', 'o', ' ', 'w', 'o', 'r', 'l', 'd']
print(list({'name': 'elijah', 'pwd': 123})) # ['name', 'pwd']
print(list((11, 22, 33))) # [11, 22, 33]
print(list({11, 22, 33})) # [33, 11, 22]
list关键字可以将支持for循环的数据类型转换成列表
列表修改、添加数据
# 1.修改值
name_list = ['elijah', 'jason', 'kevin', 'egon']
name_list[0] = 777 # [777, 'jason', 'kevin', 'egon', 666]
# 2.添加值
# 尾部添加
name_list.append(666)
print(name_list) # [777, 'jason', 'kevin', 'egon', 666]
name_list.append([11, 22, 33, 44])
print(name_list) # [777, 'jason', 'kevin', 'egon', 666, [11, 22, 33, 44]]
# 插入元素,指定索引位置插入
name_list.insert(1, '嘿嘿')
print(name_list) # [777, '嘿嘿', 'jason', 'kevin', 'egon', 666, [11, 22, 33, 44]]
# 扩展元素 (相当于for循环 + append操作)
name_list.extend([11, 22, 33, 44, 55])
print(name_list) # [777, '嘿嘿', 'jason', 'kevin', 'egon', 666, 11, 22, 33, 44, 55]
列表删除数据
# 方式1 通用删除方法
name_list = ['elijah', 'jason', 'kevin', 'egon', 'tony', 'amy']
del name_list[1] # 根据索引删除 del 是关键词delete缩写
print(name_list)
# 方式2 remove() 括号内指定需要移除的元素值
name_list.remove('elijah')
print(name_list)
# 方式3 pop() 括号内指定需要弹出的元素索引值 括号内不写参数则默认弹出列表尾部元素
name_list.pop(1)
print(name_list)
name_list.pop()
print(name_list)
可变类型&不可变类型
# 字符串使用内置方法过后,id地址改变
s1 = 'my name is elijah'
print(id(s1))
s2 = s1.upper()
print(id(s2))
可变类型:>> 列表,字典
值改变,内存地址不变, 修改的是原值
不可变类型:>> 整型,浮点型,字符串
值改变,内存地址肯定变,其实是产生了新值
堆栈与队列
# 堆栈:FILO 先进后出
while True:
res = input('输入姓名(q退出)')
if res == 'q':
break
list1.append(res)
print(list1)
while list1:
res1 = list1.pop()
print(res1)
# 队列:FIFO 先进先出
while True:
res = input('输入姓名(q退出)')
if res == 'q':
break
list1.append(res)
print(list1)
while list1:
res1 = list1.pop(0)
print(res1)