测试学习—python(三)
提要
- for 循环
- 字符串的操作
- 列表介绍
for循环
- 作用:便利容器中所有数据
python中的容器:字符串、列表、元组(tuple),字典(dict) - 基本语法for 遍历容器
for 变量名 in 容器:
执行代码
- 例子
mystr='hello'
for i in mystr:
print(i)
- for 指定循环次数语法
# rang(n)函数产生[0,n)之间整数数组
#rang(a,b)函数产生[a,b)之间的整数数组
for 变量 in rang(n)
执行代码
容器
字符串
- 定义:
- mystr =‘hello’
- mystr=“hello”
- mystr=‘’‘hello’‘’
- 规则
字符串本身包含‘时需使用“ I’m girl”,或者使用\进行转义,- mystr=‘I ’ m a girl’
-使用r,则\不做转义符使用 - mystr= r’I ’ m a girl’
字符串本身包含"时需使用’I’m girl’ ’
- mystr=‘I ’ m a girl’
下标
- 功能:指示字符在字符串中的位置
- 规则:python下标一般从0开始。
- 格式:str[0]
str[-1]:指str字符串最后一个位置的内容 - len(str)
5. length(str)
切片
- 作用:可以获取字符串中多个字符
- 格式: 字符串[ start🔚step]
- end :不包含end处的内容
str[0:3:1] 其实是取出了下标为0,1,2的三个字符- str[:3] :起始为0可省略,步长省略默认为1
- str[:]:获取全部内容
- str[3:]:获取3到最后一位所有内容(包含最后一位)
- str[::-1]:反向取出所有内容
- end :不包含end处的内容
字符串 内容查找find
- 作用:查找字符串中是有需要的内容,并返回在查找范围内第一次出现所找内容的下标
- 格式: 字符串.find( ‘XXX’,star,end)
- num=str.find(‘and’):str字符串中找字符串and
- 寻找第二次出现and的位置
num1=str.find(‘and’,num+1)
- 寻找第二次出现and的位置
字符串替换replace
1.作用:替换原字符串中的部分内容
2.格式:字符串.replace(old_str,new_str,count)
count:替换次数,一般不写,默认全部替换
字符串拆分split
1.作用拆分字符串,返回多个字符串存放在列表中
2.格式:字符串.split(sep,maxsplit)
- result=str.split(‘and’,1):将str分成and前后两部分,不包含and
- result=str.split():将str按照空白字符分开
字符串的链接 join
1.作用:将字符串插入到列表相邻的两个数据之间组成一个新的字符串
2.格式; 字符串.joint(列表)
- 使用空格将list组成一个新的字符串
list =['good', 'good','study']
str=''.join(list)
列表
1.作用:用于存储多个数据,每个数据之间使用逗号链接,列表中可存放任意类型数据
2.格式
- 空列表: list=[]
- 非空列表: list=[1,‘xiaoming’,3.14,False]
列表中查找数据下标 index()方法
- 格式:列表.index(数据,start,end)
- 返回第一次找到数据的下标,如果没找到直接报错
判断容器中是否存在某个数据— in关键字
- 格式 数据 in 容器
- 返回Ture /False
统计查找内容出现的次数 count()
- 格式:列表.count(数据)
- 返回次数
# 找 数据 3 出现的下标
num = my_list.index(3)
print(num) # 1
# 找 数据 4 出现的下标
# num1 = my_list.index(4) # 代码会报错
if 4 in my_list:
num1 = my_list.index(4)
print(num1)
else:
print('不存在数据 4')
# my_list.count(4) 统计 数据 4 出现的次数
if my_list.count(4) > 0:
num1 = my_list.index(4)
print(num1)
else:
print('不存在数据 4')
添加数据的方法
尾部添加 append()方法
- 格式:列表.append(数据)
指定下标位置添加 insert()方法
- 格式:列表.insert(下标,数据)
- 规则:如果指定位置有数据,则原数据后移
列表合并 extend()方法
- 格式:列表1.extend(列表2)
列表修改
- 格式 :列表[下标]=数据
- 规则:如果指定位置下标不存在,代码会报错
删除操作
根据下标删除pop方法
- 格式:列表.pop(下标)
- 规则:下标不写,默认删除最后一个数据
- 返回:返回删除的数据
根据数据值删除 remove
- 格式:列表.remove(数据值)
- 规则:删除的数据不存在会报错
- 返回;None
清空列表所有数据clear()
- 格式: 列表.clear()
列表反转(倒置)reverse()
- newlist=list[::-1]
- 列表.reverse() 直接修改原列表,返回None
列表复制copy()
- 使用切片 变量=列表[ :]
- 使用copy() :变量=列表.copy()
- ps:list1=list:这只是两个变量名指向同一个地址,所以当修改list1时list也会变,修改list list1也会变。
排序 sort()
- 格式:
- 列表.sort() 按照升序排序,从小到大
- 列表.sort(reverse=Ture) 按照降序排序,从大到小
列表嵌套
- 规则:
- 列表嵌套, 列表中的内容还是列表
- 使⽤下标来确定获取的是什么类型的数据,然后确定可以继续进⾏
什么操作
列表去重
1.作用:去除掉列表中重复的内容
- 方法一:可以函数实现:
遍历(for)原列表数据,判断其在新列表中给是否存在(in),不存在则 存入(append())新列表。
mylist=[1,2,2,3,1,1]
newlist=[]
for i in mylist:
# if (i in newlist)==False:
if i not in newlist:
newlist.append(i)
print(newlist)
- 转换成set,使用集合对列表去重
ps:set中不能有重复数据,一旦重复会自动去掉
缺点:不能保证数据在原列表中出现的数据
set1=set(mylist)
mylist=list(set1)
for 变量 in 容器:
pass
pass关键词
案例
字符串遍历
要求:用户输入一个字符串,遍历当前字符串并打印字符,如果遇见字符‘q’,则跳出循环。如果遇见“ ”(空格)则跳过不输出
# 输入字符串
str=input("请输入一个字符串")
#循环
#判断是否为q,判断是都为 ” “
for i in str:
if i=="q":
break
elif i==" ":
continue
else:
print(i)
过7游戏
# find找到了返回下标,没找到的返回-1
for j in range(1,100):
if j%7 ==0 or str(j).find('7')!=-1:
print('过')
else:
print(j)
# in 返回true /false
for j in range(1,100):
if j%7 ==0 or '7' in str(j):
print('过')
else:
print(j)
列表操作
有一个列表,判断列表每个元素是否以s 或者e结尾,如果是,则将其放入一个新的列表,最后输出这个新列表
'''
有一个列表,判断列表每个元素是否以s 或者e结尾,
如果是,则将其放入一个新的列表,最后输出这个新列表
'''
list1=["aaa",'cdf','sss','fff','eee','abe']
list2=[]
for i in list1:
if (i[-1]=='e') or (i[-1]=='s'):
list2.append(i)
print(list2)
随机抽签功能
要求:
- 使用input输入5个学生的名字存入列表
- 随机获取一个学生的名字并打印
'''
1. 使用input输入5个学生的名字存入列表
2. 随机获取一个学生的名字并打印
'''
import random
nameList=[]
for i in range(5):
name = input('请输入名字')
nameList.append(name)
#randint(a,b) 包含b
#rang(a) 产生0,a-1的整数共a个
um=random.randint(0,4)
print(nameList[num])
但是在循环中写nameList[i]=input(‘请输入名字’)是不正确的
应该是因为空列表大小问题