一、可变与不可变类型:
1.不可变类型:定义好变量后,不能修改、添加、删除
int 、float、 tuple、 bool、 str 都为不可变类型
2.可变类型:定义好变量后,可进行修改内部元素
list、dict、set
3.replace与split操作后均为新的数据
二、字典的定义以及使用
1.字典的作用:存储多个数据,可读性更强,容易知道每个元素的意义。
2.表示方式{"key":"value","key1":"value1"}
3.字典的键需要满足
a.key必须是唯一的,不能存在两个相同的key;
b.key必须为不可变类型,key的值只能为int 、float、 tuple、 bool、 str,不能用list与dict,因为key值是唯一的(一般情况下都为字符串),值可以是任意的数据(字典、元组、列表等)
4.
a.字典没有索引,为可变类型数据,且无序可修改,每次输出都会改变;
b.列表、元组、字符串都为有序类型;
c.有序类型可根据索引、切片获取数据;
d.字典只能根据key去获取;
5.空字典d = {}
6.取值,不能根据索引,只能根据key取值,方式 字典名[key],
7.key必须是惟一的不能重复,出现重复时,后面的会将前面的覆盖
dict_1 = {'name':'李文','name':'松江'} print(dict_1) 打印结果:{'name': '松江'} print(len(dict_1)) 打印结果:1 #key值重复,长度为1
8.字典的增删改查
(1).字典增:
新的键值赋值 dict[新的key] = value/ dict.update()将一个字典的所有元素更新到另一个字典中
dict_1 = {'name':'liwen','sex':'女','age':18}
dict_1['tel'] = 18674857485
print(dict_1) 打印结果:{'name': 'liwen', 'sex': '女', 'age': 18, 'tel': 18674857485}
dict_1 = {'name':'liwen','sex':'女','age':18}
dict_1.update({'tel':15890987678})
print(dict_1) 打印结果:{'name': 'liwen', 'sex': '女', 'age': 18, 'tel': 15890987678}
(2).字典删:
dict.pop(key) / del dict[key] /dict.popitem() 删除最后一个添加的元素/ dict.clear(),只能根据索引删除,不能根据值删除
#dict.pop(key)
dict_1 = {'name': 'liwen', 'sex': '女', 'age': 18, 'tel': 18674857485}
dict_1.pop('name') print(dict_1)
打印结果:{'sex': '女', 'age': 18, 'tel': 18674857485}
#del dict[key]
dict_1 = {'name': 'liwen', 'sex': '女', 'age': 18, 'tel': 18674857485} del
dict_1['tel'] print(dict_1) 打印结果:{'name': 'liwen', 'sex': '女', 'age': 18}
#dict_1.popitem()删除最后一个添加的元素,py3.7版本以上
dict_1 = {'name': 'liwen', 'sex': '女', 'age': 18, 'tel': 18674857485}
dict_1.popitem() print(dict_1) 打印结果:{'name': 'liwen', 'sex': '女', 'age': 18}
#清空字典 dict.clear() dict_1 = {'name': 'liwen', 'sex': '女', 'age': 18, 'tel': 18674857485}
dict_1.clear() print(dict_1) 打印结果:{}
(3)修改字典:
dict[已存在的key] = value
dict_1 = {'name': 'liwen', 'sex': '女', 'age': 18, 'tel': 18674857485}
dict_1['age'] = 20
print(dict_1) 打印结果:{'name': 'liwen', 'sex': '女', 'age': 20, 'tel': 18674857485}
(4)字典查 :
get():获取键对应的值
keys():获取所有的键,可以用list将结果转化为列表
values():获取所有的值,可以用list将结果转化为列表
items():获取所有的键值对,可以用list将结果转化为列表,列表中每个键值对组成元组
#get():获取键对应的值:
dict_1 = {'name': 'liwen', 'sex': '女', 'age': 18, 'tel': 18674857485}
print(dict_1.get('name')) 打印结果:liwen
#获取所有键名 dict.keys():
dict_1 = {'name': 'liwen', 'sex': '女', 'age': 18, 'tel': 18674857485}
print(dict_1.keys()) 打印结果:dict_keys(['name', 'sex', 'age', 'tel'])
#获取所有值 dict.values()
dict_1 = {'name': 'liwen', 'sex': '女', 'age': 18, 'tel': 18674857485}
print(dict_1.values()) 打印结果:dict_values(['liwen', '女', 18, 18674857485])
#items():获取所有的键值对,可以用list将结果转化为列表,列表中每个键值对组成元组
dict_1 = {'name': 'liwen', 'sex': '女', 'age': 18, 'tel': 18674857485}
print(dict_1.items()) 打印结果:dict_items([('name', 'liwen'), ('sex', '女'), ('age', 18), ('tel', 18674857485)])
5.字典的其他用法
A.获取字典长度:len(dict)
dict_1 = {'name': 'liwen', 'sex': '女', 'age': 18, 'tel': 18674857485}
print(len(dict_1)) 打印结果:4
B.复制字典:dict.copy()
dict_1 = {'name': 'liwen', 'sex': '女', 'age': 18, 'tel': 18674857485}
dict_1.copy()
print(dict_1) {'name': 'liwen', 'sex': '女', 'age': 18, 'tel': 18674857485}
6.字典在自动化测试中用例中的所有数据都可以用字典存储;
三、集合
1.集合的定义:花括号或set()函数用来创建集合
2.注意:要创建一个空集合只用用set(),而不能用{},后者为创建一个空字典
3.集合的方法:
(1)增加元素add
set_1 = {'name','sex'} set_1.add('age') print(set_1) 打印结果:{'sex', 'name', 'age'}
(2)删除元素:pop、remove
set_1 = {'sex', 'name', 'age'} set_1.pop()
print(set_1) 打印结果:{'age', 'sex'} 每次打印删除均不一样 随机删除
set_1 = {'sex', 'name', 'age'}
set_1.remove('sex')
print(set_1) 打印结果:{'age', 'name'}
(3)自动化测试中集合很少用来存放数据
(4)集合的交集、并集、差集
4.集合的主要作用去重,没有顺序
case = [ 'name', 'password', 'tel' , 'name' ]
case_set = set(case) #将列表转化为集合
print(case_set) 打印结果:{'password', 'name', 'tel'}
五、运算
1.数学运算 print( 1 + 1) print( 3 - 1) print( 1 * 1) print( 6 / 2) 除法得到的是浮点数 2.整除 print( 7 // 2) 3.取余数 、 模 print( 11 % 3) 4.幂运算 2 的 3 次方 print( 2 ** 3) 5.赋值运算 a = 6 += -= *= a = a + 2
等价的 a += 2 print(a) 赋值运算 name = "yuz" name += "wang" print(name) 6.判断很重要:测试就是判断,True False 大小判断 print( 4 > 3) 7.充值功能 == balace = 5000 money = 300 expect = 5030 print( balace + money == expect) 8.比较:> , < , ==, !=, >=, <= 9.逻辑运算:and or not and 只要有一个为 False, 最终就是为 False a = 4 > 3 True print(a) b = len('hello') > 9 False print(a and b) and 只有所有判断同时满足,才会得到 True or: 只要有一个得到 True, 最终就是 True print(not b) 如果存在多个运算,到底先算哪一个,运算优先级 不需要记优先级, 括号的作用在运算当中可以提高优先级 result = (4 > 3) and (len('hello') > 9) 10.in / not in 成员运算,是否在某某的里面, 字符串,列表,元组,字典 new_string = "baimengmeng" print("m" in new_string) print("meng" in new_string) print("y" not in new_string)
六、浮点运算
计算机当中10进制的小数 print(0.1 + 0.1) print(0.1 + 0.2) print(0.1 + 0.3) print(0.1 + 0.4) print(0.1 + 0.2 == 0.3)
(1)浮点运算符注意控制精度,在py中使用decimal专门控制浮点精度,使用时需要导入
from decimal import Decimal
print(0.1+0.2) 打印结果:0.30000000000000004
from decimal import Decimal print(Decimal(str(0.1))+Decimal(str(0.2))) 打印结果:0.3
一定要转化成 str print(Decimal(str(0.1)) + Decimal(str(0.2)) == Decimal(str(0.3))) 随机生成测试数据 import random print(random.randint(1, 100)) #随机生成1-100之间的数据
七、作业:
字典
一、题目:使用字典和列表存储和操作以下数据
a. 某相亲节目需要获取你的个人信息,请存储你的:姓名、性别、年龄
b. 有一个人对你很感兴趣,平台需要您补足您的身高和联系方式;
c, 平台为了保护你的隐私,需要你删除你的联系方式;
d, 你为了取得更好的成绩,需要取一个花名,并修改自己的身高和其他你觉得需要改的信息。
e, 你进一步添加自己的兴趣,兴趣至少包含 3个(注意:兴趣是另外一个列表。请将这个列表作为一个成员,添加到原个人信息列表当中,添加到末尾即可。
答:
# a.存储个人信息表
info = {"name":'yanlizheng', "gender" : '女', "age" : 18}
print(f"a.个人信息表:{info}")
# b.补足身高和联系方式
info["height"] = "170cm"
info["phone"] = "18722028888"
print(f"b.补足身高和联系方式:{info}")
# c.删除联系方式
info.pop("phone")
print(f"c.删除联系方式:{info}")
# d.取一个花名(rose),修改自己的身高和年龄
info["Flower name"] = "rose" # 增加一个花名为rose
info["height"] = "175cm" # 修改身高
info["age"] = 23
print(f"d.取一个花名(rose),修改自己的身高和年龄:{info}")
# e.添加自己的兴趣
info["interest"] = ['study', 'sing', 'dance']
print(f"e.添加自己的兴趣:{info}")
二、数据类型
题目(字符串和列表):利用下划线将列表li=["python","java","php"]的元素拼接成一个字符串,然后将所有字母转换为大写。
答:
#利用下划线拼接成一个字符串
li = ["python", "java", "php"]
new_li = "_".join(li)
print(new_li)
#将所有字母转换为大写
li = new_li.upper()
print(li)
三、题目(类型操作)有下面几个数据 :
t1 = ("aa",11)
t2= ("bb",22)
li1 = [("cc",11)]
请通过学过的知识点,进行相关操作变为如下字典:
{"aa":11,"cc":11,"bb":22}
提示:元组取值,然后给字典添加key-value
答:
t1 = ("aa",11)
t2= ("bb",22)
li1 = [("cc",11)]
l = {}
l[t1[0]] = t1[1]
l[li1[0][0]] = li1[0][1]
l[t2[0]] = t2[1]
print(l)
四、题目:简述学过的数据类型:
可变类型有哪些
不可变类型有哪些
答:学过的数据类型有:1.int、 2.float 、3.bool 、4.string 、5.set、 6.list、 7.tuple、 8.dict、 9.complex
不可变类型有 :1.int、2.float、3.bool、 4.string、 7.tuple、9.complex
可变类型有:5.set、6.list、 8.dict