目录
变量
变量即是值可以变的量,量是程序在内存中申请的一块用来存放数据的空间,所以变量就是把程序运算过程中的临时结果集数据存储到内存⾥⾯,以备后⾯的代码继续调用。变量在我们定义的时候,它并不会占用内存空间,在我们调用后,变量的⽣命周期也就结束
如:name = "郑州" ,my_age="18"
变量名 变量值
输入输出
输入:
username = input("请输入用户名:")
passwd = input("请输入密码:")
输出:
print("用户名:",username)
print("密码:",passwd)
print("变量类型:",type(username),type(passwd))
print("变量长度:",len(username),len(passwd))
字符串
字符串要求必须用引号括起来,双引号和单引号都行。如:a ='HelloWorld' b ="HelloWorld"
字符串格式化输出:
name=input('请输⼊您的姓名:\n')
age=int(input('请输⼊您的年龄:\n'))
print('您的姓名:%s,您的年龄:%d'%(name,age))
输出以后的格式:
请输⼊您的姓名:
菜鸟
请输⼊您的年龄:
18
您的姓名:菜鸟,您的年龄:18
还可以使⽤关键字format,上例修改后:
print('您的姓名:{0},您的年龄:{1}'.format(name,age))
编码解码
Python的默认编码是ascll,Python3的默认编码是unicode,由于unicode比较耗性能,占⽤空间⽐ascll的空间多⼀倍,所以就有了utf-8的编码。
在计算机的内存中,统⼀使⽤unicode的编码,如果需要把内存的数据保存到硬盘或者是传属到另外⼀个地⽅,就需要转为utf-8的编码,但是从硬盘某地⽅读取⽂件内容,就会把utf-8的编码转为unicode的编码存储到内存中。
编码:就是把str的数据类型转为bytes的数据类型的过程,使⽤到的关键字是encode
解码: 把bytes的数据类型转为str的数据类型的过程,使⽤到的关键字是decode
str1="Python"
byte_str=str1.encode("utf-8")
print('编码后类型:',type(byte_str))
str_byte=byte_str.decode("utf-8")
print('解码后类型:',type(str_byte))
编码后类型: <class 'bytes'>
解码后类型: <class 'str'>
例如
import requests
r=requests.get(url='https://so.gushiwen.org/gushi/sanbai.aspx')
print(r.content.decode('utf-8'))
不解码的话 看到的就是二进制的乱码。编码和解码这部分的知识体系主要应⽤于API的⾃动化测试和获取到的数据
python数据结构
列表
list1=['Java','Go']
列表的特点:
可存放多个值
按照从左到右的顺序定义列表元素,下标从0开始顺序访问
列表是有序的
列表也是可变化的,也就是说可以根据列表的索引位置来修改列表的值
往列表里加元素:
append:添加的列表是在列表的最后⼀位
insert:根据⾃⼰的需求insert到列表的索引位置
list1.append("Python")
输出后的list1:list1=['Java','Go','Python']
list1.insert(0,'PHP')
输出后的list1:list1=['PHP','Java','Go']
列表的几种常见方法 :
list1=['Java','Go','Python','PHP']
#count:列表中的对象在列表中存在⼏位
print('python在列表中存在⼏位:',list1.count('Python'))
#寻找出对象的索引信息
print('Python在列表⾥⾯的索引信息:',list1.index('Python'))
#pop:默认删除列表⾥⾯的最后⼀位对象并且返回来
print('删除的对象返回来:',list1.pop())
#remove:在列表⾥⾯删除指定的元素信息
list1.remove('Python')
print('在列表⾥⾯删除Python的对象:',list1)
#新增⼀个可interable的对象信息
list1.extend(['selenium','appium'])
#clear 列表的清空
list1.clear()
print('清空后的列表内容:{0},列表⻓度:{1}'.format(list1,len(list1)))
list1=['Java','Go','Python','PHP']
#根据列表的索引位置来修改列表的值
list1[0]=1
[1, 'PHP', 'Java', 'Go']
元组
list的是可变的,⽽tuple刚好,是不可变的,但是tuple⾥⾯的对象内容是可变的,当tuple⾥⾯的对象并且只有⼀个的时候,记得需要加,如果不加的话,就不再是tuple的数据类型,⽽是字符串的数据类型。
tuple类⾥⾯关于操作元组的⽅法:
tuple1 = ('Python', 'Go', 'Java', ['Selenium', 'Appium'])
print("Go在tuple1中的索引位置:", tuple1.index('Go'))
print("Go在tuple1中的个数:", tuple1.count('Go'))
tuple的对象是不可以变化,但是⾥⾯对象的值可以改变:
tuple1=('Python','Go','Java',['Selenium','Appium'])
# 修改tuple第四个对象的值
tuple1[3][0] = 'WebDriver'
print('修改tuple对象的值:', tuple1)
# 尝试修改tuple⾥⾯的值
tuple1[0] = 'python'
修改tuple对象的值: ('Python', 'Go', 'Java', ['WebDriver', 'Appium'])
Traceback (most recent call last):
File "C:/Users/94222/PycharmProjects/pythonProject/aaa.py", line 30, in <module>
tuple1[0] = 'python'
TypeError: 'tuple' object does not support item assignment
字典
字典是⽆序的,这是字典的⼀个特性,它的第⼆个特性是字典可以使⽤key-value的⽅式来存储数据,⽬前其实基于REST API的⽅式数据都是基于key-value的⽅式来存储数据的,⽐如基于JSON
的格式的字符串的数据。字典⾥⾯常⽤的关键字是dict
dict1 = {'name': 'xcj', 'age': 18, 'address': 'shanghai', 'work': 'test'}
# 获取字典⾥⾯所有的key值
for item in dict1.keys():
print(item)
#修改字典里name的value值
dict1['name'] = 'qwe'
print(dict1)
# 字典⾥⾯增加新的值内容
dict1['薪资'] = 30
print('增加内容后的字典:', dict1)
# 两个字典的合并
dict2 = {'company': 'saic'}
dict1.update(dict2)
print('两个字典合并后的内容:', dict1)
# 字典的循环输出
for key, value in dict1.items():
print(key, value)
增加内容后的字典: {'name': 'qwe', 'age': 18, 'address': 'shanghai', 'work': 'test', '薪资': 30}
两个字典合并后的内容: {'name': 'qwe', 'age': 18, 'address': 'shanghai', 'work': 'test', '薪资': 30, 'company': 'saic'}
name qwe
age 18
address shanghai
work test
薪资 30
company saic
字典排序:
字典是⽆序的,所以想实现字典的排序,使⽤到的关键字是sorted,可以根据诉求对字典进⾏key或者value的值内容对字典来进⾏排序
dict1 = {'name': 'aaa', 'age': '18', 'address': 'shanghai', 'work': 'test'}
# 按照key来对字典进⾏排序
key_dict1 = sorted(dict1.items(), key=lambda item: item[0])
print('依据key对象对字典排序后的结果信息:\n', key_dict1)
# 根据value来对字典进⾏排序
value_dict1 = sorted(dict1.items(), key=lambda item: item[1])
print('依据value对象对字典排序后的结果信息:\n', value_dict1)
依据key对象对字典排序后的结果信息:
[('address', 'shanghai'), ('age', '18'), ('name', 'aaa'), ('work', 'test')]
依据value对象对字典排序后的结果信息:
[('age', '18'), ('name', 'aaa'), ('address', 'shanghai'), ('work', 'test')]
集合
集合是无序和无索引的集合。在 Python 中,集合用花括号编写
thisset = {"apple", "banana", "cherry"}
print(thisset)
{'banana', 'cherry', 'apple'}#注释:集合是无序的,因此您无法确定项目的显示顺序
要将一个项添加到集合,请使用 add()
方法。
thisset = {"apple", "banana", "cherry"}
thisset.add("orange")
要向集合中添加多个项目,请使用 update()
方法。
thisset = {"apple", "banana", "cherry"}
thisset.update({"orange", "mango", "grapes"})
print(thisset)
获取set的长度
要确定集合中有多少项,请使用 len()
方法。
合并两个集合
在 Python 中,有几种方法可以连接两个或多个集合。
您可以使用 union() 方法返回包含两个集合中所有项目的新集合,也可以使用 update() 方法将一个集合中的所有项目插入另一个集合中:
set1 = {"a", "b" , "c"}
set2 = {1, 2, 3}
set3 = set1.union(set2)
print(set3)
set1 = {"a", "b" , "c"}
set2 = {1, 2, 3}
set1.update(set2)
print(set1)
数据结构的应用
在Python的各个数据类型中,经常由于⼯作的需要需要对各个不同的数据类型进⾏转换,⽐如字符串与列表,列表与字符串,元组与列表,列表与字典,以及字典与列表等,列表与集合
字符串与列表互转
str1 = "Hello Python"
# 把字符串的数据类型转为列表的数据类型
list_str = str1.split(' ')
print('字符串转为列表数据类型:', list_str)
# 把列表的数据类型转为字符串
str_list1 = ','.join(list_str)
print('列表转为字符串的数据类型:', str_list1)
列表与元组互转
'''元组与列表之间的互转'''
tuple1=("Pyhton","Go","Java","Php","C")
#元组转为列表
list_tuple=list(tuple1)
print('元组转为列表:{0},数据类型:{1}'.format(list_tuple,type(list_tuple)))
#列表转为元组
tuple_list=tuple(list_tuple)
print('列表转为元组:{0},数据类型:{1}'.format(tuple_list,type(tuple_list)))
元组转为列表:['Pyhton', 'Go', 'Java', 'Php', 'C'],数据类型:<class 'list'>
列表转为元组:('Pyhton', 'Go', 'Java', 'Php', 'C'),数据类型:<class 'tuple'>
列表与字典互转
# 把列表转为字典
dict_list = dict(enumerate(list1))
print('列表转为字典:{0},数据类型:{1}'.format(dict_list, type(dict_list)))
# 把字典转为列表
list_dict = list(dict_list.items())
print('字典转为列表:{0},数据类型:{1}'.format(list_dict, type(list_dict)))
列表转为字典:{0: 'Python', 1: 'Go', 2: 'Java', 3: 'C'},数据类型:<class 'dict'>
字典转为列表:[(0, 'Python'), (1, 'Go'), (2, 'Java'), (3, 'C')],数据类型:<class 'list'>
字典中复杂数据的解析和精确子段的获取:
params = {
'status': 0,
'msg': 'ok',
'datas': [
{
'name': 'wu',
'age': 18,
'address': 'xian',
'company': ['google', 'microsoft', {'salary': 10000}]
}
]}
# 获取params 中的'salary'的值
list1 = params['datas'] # 获取字典里的datas的全部数据
a = list1[0]['company'] # datas是列表用索引值list1[0],获取到company的数据
sal = a[2]['salary'] #
# print(list1)
# print(a)
print(sal)