1.格式字符串:
在字符串中通过格式占位符来表示字符串中的变化部分
1.1语法:
包含格式占位符的字符%(给格式占位赋值的数据列表)
1.2说明:
格式占位符:%s - 字符串
%d - 整数
%.nf - 浮点数,n可以约束小数点后面的小数位数(正整数)
%c - 字符,可以将整数转换为字符
# name = input('姓名:')
# age = int(input("age:"))
# print('%s今年%d岁' % (name, age))
2.常用对象方法
2.1 字符串1.count(字符串2)
- 字符串1.count(字符串2)
统计字符串2 在字符串1中出现的次数
str1 = 'and you? how are you!'
print(str1.count('a'))
# 练习:打印字符串中出现次数最多的字符和次数
# 'how are you?oh' 打印: o 3次
str1 = 'how are you?oh'
max_conut = 0 #保存当前最大次数
max_char = '' #保存当前最大次数对应的字符
for char in str1:
if str1.count(char) > max_conut :# 获取字符出现的次数,如果次数大于当前最大次数,更新最大次数和字符
max_conut = str1.count(char)
max_char = char
print('%s出现%d次'%(max_char , max_conut))
2.2字符串1.find(字符串2)
- 字符串1.find(字符串2)
在字符串1中查找字符串2 第一次出现的位置,如果找不到返回-1,找到了返回第一个字符的下标 - 字符串1.find(字符串2,开始下标,结束下标)
在字符串1中的开始下标到结束下标查找字符串2 第一次出现的位置
print(str1.find('you'))
print(str1.find('you', -8, -1))
# 练习 :在字符串中'and you? how are you! you' ,找到所有'you'出现的下标.打印:4,17,22
str1 = 'and you? how are you! you'
count = str1.find('you')
while True:
print(count, ',', end=' ')
count = str1.find('you', count + 1,)
if count == -1:
break
print()
2.2.1 字符串1.index
- index 功能和find一样,只是如果字符串2不存在的时候回报错
print(str1.index('you2'))
2.3字符串1.isdigit
- 判断字符串1中是否只有数字字符
print('83'.isdigit())
2.4 字符串1.isnumeric()
- 判断字符串1是否是数字字符串(可以检查中文数字)
print('壹仟'.isnumeric())
2.5字符串1.join(序列)
- 将序列中的元素用字符串1链接在一起产生一个新的字符串
print('*'.join('abc'))
print('+'.join(['me', 'you', 'he']))
- 练习: 自己实现join的功能,给字符串1,和字符串2,用字符串1将字符串2中的所有的字符串连接起来
- 例如 : str1 = 'aaa', str2 = '123' .输出:'1aaa2aaa3'
tr1, str2 = 'aaa', '123'
nuw_str = ''
for index in range(len(str2)):
if index == len(str2) - 1:
nuw_str += str2[index]
else:
nuw_str += str2[index] + str1
print(nuw_str)
str2 = 'ag23bsh2390s'
str1 = '+'
str3 = ''
for char in str2:
if '0' <= char <= '9':
str3 += char + str1
print(str3[:-len(str1)])
2.6 max(序列),min(序列) - 求序列中元素的最大值和最小值
print(max('ahfaehfkaheaz'))
print(min('ahahfka'))
print(min([120, 2, 9, 99, -10]))
print('afaweffafe'.replace('a','A',3))
2.7 字符串1.split(字符串2) - 在字符串1中把字符串2作为切点,将字符串1切割
print('afaweffafewarawerr2rgehjutre'.split('w'))
3. 列表
3.1 什么时候用列表
需要用一个变量去同时保存多个数据
3.2什么是列表(list)
列表是python内置的容器型数据类型(序列),
可变(说明支持增删改)并且有序(支持下标操作)
用[]将多个元素括起来,多个元素之间用','隔开:[元素1,元素2,元素3...]
3.3 列表中的元素:
python内置的数据类型对应的数据,或者是程序员自定义类型的数据都可以:
不同元素的类型可以不一样
赋值运算表达式不能作为列表元素,其他的都可以
list1 = [120, 12.9, True, 'abc', [1, 23], {'a':10}, lambda x: x*10]
print(list1)
num1 = 10
list2 = [num1, 100 + 200, 20 > num1]
练习:
将班级学生的成绩保存到score中,求班级的平均成绩,和不及格人数
scores = [90, 80,70, 100, 76, 57, 54]
num1 = 0 #不及格人数
num2 = 0 #总成绩
for index in range(len(scores)):
num2 += scores[index]
if scores[index] < 60:
num1 += 1
print('平均成绩是:%.2f 不及格人数:%d' % (num2 / len(scores), num1))
3.4 查 - 获取列表元素
3.4.1 获取单个元素: 列表[下标]
names = ['海蜇王', '火影', '死神', '犬夜叉', '妖精的尾巴', '熊出没', '一人之下']
print(names[-2])
3.4.2 获取部分元素-切片(和字符串一样):
列表[开始下标:结束下标:步长]
切片的结果是列表
print(names[1:4]) #['火影', '死神', '犬夜叉']
print(names[::-1]) #['一人之下', '熊出没', '妖精的尾巴', '犬夜叉', '死神', '火影', '海蜇王']
print(name[:]) #浅拷贝
3.4.3 遍历
a.直接遍历
for 变量 in 列表:
循环体
b.通过下标遍历
for 变量 in range(len(列表))
循环体
for item in names:
print(item)
for index in range(len(names)):
print(index, names[index])
3.4.4 补充: 求和函数sum
sum(序列) - 求序列中所有元素的和:序列要求元素类型一致,并且元素支持求和运算
print(sum(scores), sum(range(101)))
3.5 增 - 添加元素
3.5.1 列表.append(元素)
在指定的列表的最后添加指定元素
persons = ['路飞', '宝儿姐', '张楚兰']
persons.append('容嬷嬷')
persons.append('赵云')
print(persons)
3.5.2列表.insert(下标,元素)
在指定列表的指定下标前插入元素
numbers = [1, 20, 34, 50]
numbers.insert(2, 22)
print(numbers)
** 练习:**
输入一个数字将他添加到一个有序列表中,要求添加进去后不改变从大到小或者从小到大排列顺序
numbers1 = [1, 20, 100, 200]
num = int(input('请输入数字:'))
# 思路:找到第一个比输入的数字大的数字对应的下标,然后插入到这个下标前.如果原来的数字都比输入的小,就会添加到最后
for index in range(len(numbers1)):
if numbers1[index] >= num:
numbers1.insert(index, num)
break
else:
numbers1.append(num)
print(numbers1)
3.6 删 - 删除元素
3.6.1 del 列表[下标]
将指定列表中指定下标对应的元素删除
names = ['海蜇王', '火影', '死神', '犬夜叉', '妖精的尾巴', '熊出没', '一人之下']
del names[2] # 凡是单个的下标就不能越界
print(names)
3.6.2 列表.remove(元素)
将指定列表中第一指定元素删除
注意如果元素不存在,会报错
names.remove('海蜇王')
print(names)
3.6.3 列表.pop()
移除列表中最后一个,返回被移除的元素
列表.pop(下标) - 移除列表中指定下标对应的元素
del_name = names.pop()
print(del_name)
names.pop(0)
print(names)
需求:删除所有的指定元素,例如'海蜇王'
names = ['海蜇王', '火影', '海蜇王', '死神', '犬夜叉', '妖精的尾巴', '熊出没', '一人之下', '海蜇王']
要求: 用remove , 用del/pop
print('=================================================')
names = ['海蜇王', '火腿', '海蜇王', '死神辣条', '狗肉叉烧', '猪尾巴', '熊掌', '蚂蚁上树', '海蜇王']
while True:
if '海蜇王' in names :
names.remove( '海蜇王')
else:
break
print(names)
name = '海蜇王'
names = ['海蜇王', '火腿', '海蜇王', '死神辣条', '狗肉叉烧', '猪尾巴', '熊掌', '蚂蚁上树', '海蜇王']
while True:
if '海蜇王' not in names :
break
for index in range(len(names)):
if names[index] in name:
del names[index]
break
print(names)
name = '海蜇王'
names = ['海蜇王', '海蜇王', '火腿', '海蜇王', '死神辣条', '狗肉叉烧', '猪尾巴', '熊掌', '蚂蚁上树', '海蜇王']
while True:
if '海蜇王' not in names :
break
for index in range(len(names)):
if names[index] in name:
names.pop(index)
break
print(names)
print('=================================================')
3.6.4 清空: 列表.clear()
删除列表中所有的元素
names = ['海蜇王', '海蜇王', '火腿', '海蜇王', '死神辣条', '狗肉叉烧', '猪尾巴', '熊掌', '蚂蚁上树', '海蜇王']
names.clear()
print(names)
3.7 改 - 修改列表中的元素
列表[下标] = 新值 - 将列表中指定下标对应的元素改成新值
nums = [1, 2, 3]
nums[0] = 100
print(nums)
3.8 in / not in
元素列表
print([1, 2] in [1, 2, 3, 4]) # False
print([1, 2] in [1, 2, 3, 4, [1, 2]]) # True
print(1 in [[1], 2, 3, 4]) # False
print(1 in [1, 2, 3, 4]) # True