一.day6回顾
1.用''或者""引起来的字符集
2.str - 不可变(不支持增删改),有序(支持下标语法)
3.字符:普通字符、转义字符(\n,\t,',",\)、阻止转义r/R、编码字符
print('\u45ff') # 编码字符
4.获取字符
字符串[下标]
字符串[开始下标:结束下标:步长
str1 = '123ads'
print(str1[2], str1[-1])
print(str1[0:2:1])
4.遍历
a.方法一
for 变量 in 字符串:
循环体
b.方法二
for 变量 in range(len(字符串)):
循环体
for char in str1:
print(char)
for char in range(len(str1)):
print(str1[char])
5.相关运算
+,:字符串1+字符串2,字符串1数字
,<=,>=,<,==,!=: 按字符串顺序比较字符编码值,比较出一组不同的字符就结束比较
6.内置函数
len(序列) - 求字符串长度
str() - 转换为字符串
in 判断一个字符串是否包含另一个字符串, not in,判断是否不包含
ord(字符) - 获取编码值
chr(编码值) - 获取字符
二.字符串相关
1.格式字符串:在字符串中通过格式占位符来表示字符串中变化的部分
语法:包含格式占位符的字符 % (给格式占位符赋值的数据列表)
说明:
"""
格式占位符: %s - 字符串
%d - 整数
%.nf - 小数(浮点数),n 可以约束小数点后面的小数的位数
%c - 字符,可以将整数转换为字符
"""
name = input('姓名')
age = int(input('年龄'))
message = '%s今年%d岁,月薪:%.2f' % (name, age, 10000)
print(message)
练习:输入学生姓名,年龄和性别,打印'xxx今年多少岁,性别:X'的格式打印学生信息
name = input('姓名')
age = int(input('年龄'))
x = input('性别')
n = '%s今年%d岁,性别%s' % (name, age, x)
print(n)
2.常用对象方法
字符串1.count(字符串2) - 统计字符串2在字符串1中出现的次数
str1 = 'and you? how are you!'
print(str1.count('you'))
字符串1.find(字符串2) - 查找在字符串1中字符串2出现的第一次位置返回索引,如果没出现就返回-1
字符串1.find(字符串2:开始下标:结束下标) - 指定范围查找
index功能和find一样,只是字符串2不存在会报错
字符串1.isdigit() - 判断字符串1中是否只有数字字符
字符串1.isnumeric() - 判断字符串1是否含有中文数字和数字
字符串1.join(序列) - 将序列中的元素用字符串1连接在一起产生一个新的字符串
print('*'.join('123'))
max(序列),min(序列) - 求序列中单的最大值和最小值
print(max('adsadsa'))
字符串1.split(字符串2) - 在字符串1中把字符串2作为切点,将字符串1切割(返回的是列表)
print('adsasdasd31645dasd'.split('3'))
练习:打印字符串中每个字符出现的次数
打印出出现次数最多的字符和
tr3 = input('输入字符串')
for char in str3:
print(char, str3.count(char))
str3 = input('输入字符串')
max_count = 0
max_char = ''
for char in str3:
count = str3.count(char) # 获取每个字符出现的次数
if count > max_count: # 如果获得字符的次数,比最大次数还大
max_count = count # 把出现最多次数赋给 max_count
max_char = char
print(max_count, max_char)
练习2.在字符串'and you? how are you! you'中找到所有you出现的下标.
str1 = 'and you? how are you! you'
n = 0
i = 0
while True:
i = str1.find('you', n, len(str1)+1)
if i == -1:
break
else:
n = i+3
print(i)
练习:实现join的功能,给字符串1,字符串2,用字符串1将字符串2中的所有字符连接起来
例如:str1 = 'aaa',str2 = '123',输出'1aaa2aaa3'
str1 = 'aaa'
str2 = '123'
n = ''
for index in range(len(str2)):
if index == len(str2)-1:
n += str2[index]
print(n)
break
else:
n += str2[index]+str1
str1 = 'aaa'
str2 = '123'
n = ''
for char in str2:
n += char + str1
print(n[:-len(str1)])
str2 = '123sad00'
str1 = '+'
n = ''
for char in str2:
if '0' <= char <= '9':
n += char+str1
print(n[:-len(str1)])
三.列表
1.什么时候需要列表:需要用一个变量同时保存多个数据
2.什么是列表,list
列表是python内置的容器型数据类型(序列),可变(说明支持增删改)并且有序(支持下标操作)
用中括号将多个元素括起来,多个元素之间用逗号隔开:[元素1,元素2,元素3...]
3.列表中的元素:python内置的数据类型对应的数据,或者是程序员自定义类型的数据都可以:
不同的元素的类型可以不一样
!!!注意:赋值运算表达式不能作为列表元素,其他的都可以
list1 = [120, 12.9, True, 'abc', [1, 2, 3]]
scores = [90, 80, 70, 60, 100, 80]
names = ['张三', '李四', '王麻子']
----------列表的增删改查----------------
4.查 - 获取列表元素
获取单个元素(和字符串一样):列表[下标]
获取部分元素 - 切片(和字符串一样) 语法:列表[开始下标:结束下标:步长]
列表切片结果是列表
遍历(和字符串一样):
"""
a.直接遍历
for 变量 in 列表: #变量取到的是元素
循环体
b.通过下标遍历
for 变量 in range(len(列表)): #变量取到的是下标
循环体
"""
将班级学生的成绩保存到scores = [90, 80, 70, 100, 76, 57, 54]中
求班级的平均成绩和不及格人数
scores = [90, 80, 70, 100, 76, 57, 54]
sum1 = 0
reject = 0
for score in scores:
sum1 += score
if score < 60:
reject += 1
print('平均成绩为:%.1f 不及格人数:%d' % (sum1/len(scores), reject))
补充: 求和函数 sum
sum(序列) - 求序列中说有元素的和;序列要求元素类型一致,并且元素支持求和运算
print(sum(scores), sum(range(101)))
5.增 - 添加元素
1.列表.append(元素) - 在指定的列表的最后添加指定元素
persons = ['路飞', '宝儿姐', '张楚楠']
persons.append('王也')
print(persons)
2.列表.insert(下标, 元素) - 在指定的列表的指定的下标前插入指定元素
numbers = [1, 20, 34, 50]
numbers.insert(2, 22)
print(numbers)
练习:输入一个数字,将他插入到一个有序列表中,要求添加进去后不改变从小到大的顺序
numbers = [1, 20, 100, 200]
n = int(input('请输入:'))
for index in range(len(numbers)):
if n < numbers[index]:
numbers.insert(index, n)
break
elif n >= numbers[-1]:
numbers.append(n)
break
print(numbers)
6.删 - 删除元素
- del 列表[下标] - 将指定列表中指定下标对应的元素删除
persons = ['路飞', '宝儿姐', '张楚楠']
del persons[0]
print(persons)
2.列表.remove(元素) - 将指定列表中第一个指定元素删除
注意:如果元素不存在,会报错
persons = ['路飞', '宝儿姐', '张楚楠', '路飞']
persons.remove('路飞')
print(persons)
列表.pop() - 移除列表中最后一个元素,返回被移除的元素
列表.pop(下标) - 移除列表中指定下标对应的元素,返回被移除的元素
persons = ['路飞', '宝儿姐', '张楚楠', '路飞']
person = persons.pop()
print(person, persons)
4.清空:列表.clear() - 删除列表中所有元素
persons.clear()
print(persons)
7.改 - 修改列表元素
列表[下标] = 新的值 - 列表中指定下标对应的元素改成新的值
nums = [1, 2, 3]
nums[0] = 100
print(nums)
8. in / not in
语法: 元素 in 列表 - 判断列表中是否包含指定的元素
注意:只能判断指定元素,不能判断列表间的包含关系
print([1, 2] in [1, 2, 3, 4]) # False
print([1, 2] in [1, 2, 3, [1, 2]]) # True