day07总结

1.字符串补充

1.格式字符串:字符串中通过 ‘格式站位符’ 来表示字符串中变化的部分
  • 格式:一个包含格式站位符的字符串%(给格式站位符赋值的列表)

格式站位符:%s - 字符串占位
%d - 整数
%.Nf - 浮点数 可以使用N约束后面的小数位数
%c - 字符 输入一个字符,
如果输入数字,则会将其作为编码转化为字符
%x/%X - x整数(16进制)

name = 'sss'
age = 23
sex = '男'
message = '%s今年%d岁, 性别:%c' % (name, age, sex)
print(message)
# 输入学生姓名 年龄 性别 以xx今年x岁,性别x的格式打印
2.常用对象方法
  • str1.count(str2)
    count()统计str2 在str1中出现的次数
  • str1.find(str2, 开始下标, 结束下标)
    返回str2在str1中指定范围内首次出现 起始位置的下标值,没有则返回-1
str1 = '  hao are you  '
print(str1.find('are', 3, 5))
  • join 字符串.join(序列)
    将序列中的元素(字符串)用字符串1连接在一起, 产生一个新的字符串
print('$'.join('abc'))
print('++'.join(['aa', 'ee', 'ss']))
print(str1.strip(), str1)
  • 字符串1.split(字符串2) 在字符串1中把字符串2当做切点,
    分割字符串1,产生的新各个字符串用列表保存
str2 = 'how are you?0h~'
s_print = ''
#统计str2中所有元素出现的次数
for s in str2:
    if s not in s_print:
        print(s, str2.count(s))
        s_print += s

#求字符串中出现次数最多的字符 及出现次数
max_count = 0
max_s = ''
for s in str2:
    count = str2.count(s)
    if count > max_count:
        max_count = count
        max_s = s
#找出字符串中指定字符串出现的下标并打印
str3 = 'and you how are you?0h~'
str4 = 'you'
start_index = 0
while True:
    index = str3.find(str4, start_index)
    if index == -1:
        break
    else:
        print(index, end=',')

    start_index = index + len(str4)
print()

练习:实现join的功能 用字符串1 将字符串2中所有的字符连接起来

str5 = 'aa'
str6 = '123444'
new_str = ''
for char in str6:
    new_str += char + str5

new_str = new_str[:-len(str5)]
print(new_str)
#取出数字并用字符拼接
str5 = '+'
str6 = 'asd235dsdsg55'
new_str = ''
for char in str6:
    if '0' <= char <= '9':
        new_str += char + str5

new_str = new_str[:-len(str5)]
print(new_str)

2.list列表

  • 什么时候用列表:需要用一个变量保存多个程序
  1. 什么是列表
    列表是python内置的容器型数据类型(序列),可变(支持增删改)且有序(支持通过下标操作)
    用中括号将多个元素括起来,多个元素用逗号隔开:[元素1,元素2,元素3....]

  2. 列表中的元素:python内置数据类型对应的数据,或者自定义的类型数据都可以

  • 不同元素类型可以不一样
list1 = [120, 12.9, True, 'abc', [1, 2, 3], lambda x: x*10]
print(list1)
num = 10
# 注意:赋值运算不能作为元素,其他都可以将结果作为元素存贮在列表中
list2 = [num, 100+200]

3.查 - 获取列表元素 同字符串

# 获取单个元素:列表[下标]
names = ['海贼王', '火影忍者', '死神', '犬夜叉', '妖精']
print(names[0])

# 获取部分元素-切片(同字符串):列表[开始下标:结束下标:步长]
# 列表切片结果是列表
print(names[1:4])
print(names[:])  #属于浅拷贝
  1. 遍历
    a.直接遍历
    for 变量 in 列表: 变量取到元素
    循环体
    b. 通过下标遍历
    for 变量 in range(len(列表)): 变量取到下标
    循环体
#遍历元素
for item in names:
    print(item)
#遍历索引
for index in range(len(names)):
    print(index, names[index])
#统计平均分和不及格人数
scores = [90, 80, 54, 40, 70, 57, 54]
sum_score = 0
notPass = 0
for score in scores:
    sum_score += score
    if score < 60:
        notPass += 1
print('平均分%.2f,不及格%d人' % (sum_score/len(scores), notPass))

补充求和函数 sum
sum(序列) - 求序列中所有元素的和;
序列要求元素类型一致,且支持加法运算

print(sum(scores), sum(range(101)))
  1. 增 - 添加元素
 # 列表.append(元素)  - 在指定列表的最后添加元素
persons = ['路费', '宝儿姐', '张楚楠']
persons.append('容嬷嬷')
persons.append('赵云')
print(persons)

# 2.列表.insert(下标, 元素)  -在指定列表的 指定下标前 插入指定元素
numbers = [1, 20, 34, 50]
numbers.insert(2, 22)
print(numbers)

# 练习:输入一个数字,然后将其添加到一个有序列表中,要求加入后不改变其排列顺序
numbers = [1, 20, 34, 50, 100, 200, 1000]
num = 10
for index in range(len(numbers)):
    if numbers[index] > num:
        numbers.insert(index, num)
        break
else:
    numbers.append(num)
print(numbers)
  1. 删除元素
# del  列表[下标] - 将指定列表中指定下标对应元素删除
numbers = [1, 20, 34, 50, 100, 200, 1000]
del numbers[2]
print(numbers)
# 列表.remove(元素) - 将指定列表中第一个指定元素删掉,如元素不存在,会报错
names.remove('海贼王')
print(names)

# 列表.pop()   -移除列表中最后一个元素
# 列表.pop(下标)  -移除列表中指定对应下标的元素
# 会返回移除的元素
del_name = names.pop()
print(names, del_name)
del_name = names.pop(0)
print(names, del_name)
names = ['海贼王', '火影忍者', '死神', '海贼王', '犬夜叉', '海贼王', '妖精']
# 删除所有的海贼王,remove, del pop
while True:
    if '海贼王' in names:
        names.remove('海贼王')
    else:
        break

# 清空 列表.clear()  删除列表中所有元素 保留空列表
  1. 改 - 修改列表中的元素
 #列表[下标] = 新值  将列表中,指定下标对应元素,改成新值
nums = [1, 2, 3]
nums[0] = 100
print(nums)
  1. in/not in
# 元素 in 列表  判断列表中是否包含指定元素
print(['b', 'a'] + ['a'])
# remove, append, insert没有返回值

9.补充删除列表遍历的规则

scores = [10, 50, 90, 89, 89, 89, 40, 10]
# 删除所有小于60的数
# 按元素遍历:通过remove删除的时候可能出现 删不干净的问题
for score in scores:
    if score < 60:
        scores.remove(score)
print(scores)
# 解决思路
# 先备份一份
socore2 = scores.copy()
# 遍历备份,操作原本

# 问题2, 通过下标遍历删除满足要求的元素时,出现下标越界
for index in range(len(scores)):
    if scores[index] < 60:
        del scores[index]
print(scores)
#将range(len(scores))产生的序列计算后保存起来,按此遍历,
# 后续len()的改变不会对保存的序列操作,

# 解决问题2 , 如果删除操作执行,index不能改变
index = 0
while index < len(scores):
    if scores[index] < 60:
        del scores[index]
        continue
    index += 1

你可能感兴趣的:(day07总结)