【python基础语法】第7天作业练习题
import keyword ''' # 第一题:简单题 1、什么是全局变量? 2、什么是局部变量? 3、函数内部如何修改全局变量(如何声明全局变量 )? 4、写出已经学过的所有python关键字,分别写出用途? # 第二题:数据转换 现在有以下数据, li1 = ["{'a':11,'b':2}", "[11,22,33,44]"] 需要转换为以下格式: li1 = [{'a': 11, 'b': 2}, [11, 22, 33, 44]] 请封装一个函数,按上述要求实现数据的格式转换 # 第三题:数据转换 # 有一组用例数据如下: cases = [ ['case_id', 'case_title', 'url', 'data', 'excepted'], [1, '用例1', 'www.baudi.com', '001', 'ok'], [4, '用例4', 'www.baudi.com', '002', 'ok'], [2, '用例2', 'www.baudi.com', '002', 'ok'], [3, '用例3', 'www.baudi.com', '002', 'ok'], [5, '用例5', 'www.baudi.com', '002', 'ok'], ] # 需要转换为以下格式 res1 = [ {'case_id': 1, 'case_title': '用例1', 'url': 'www.baudi.com', 'data': '001', 'excepted': 'ok'}, {'case_id': 4, 'case_title': '用例4', 'url': 'www.baudi.com', 'data': '002', 'excepted': 'ok'}, {'case_id': 2, 'case_title': '用例2', 'url': 'www.baudi.com', 'data': '002', 'excepted': 'ok'}, {'case_id': 3, 'case_title': '用例3', 'url': 'www.baudi.com', 'data': '002', 'excepted': 'ok'}, {'case_id': 5, 'case_title': '用例5', 'url': 'www.baudi.com', 'data': '002', 'excepted': 'ok'} ] # 要求:封装一个函数,完成上述数据转换的功能,并且将case_id大于3的用例数据过滤出来,得到如下结果 res = [ {'case_id': 4, 'case_title': '用例4', 'url': 'www.baudi.com', 'data': '002', 'excepted': 'ok'}, {'case_id': 5, 'case_title': '用例5', 'url': 'www.baudi.com', 'data': '002', 'excepted': 'ok'} ''' ''' # 第一题:简单题 1、什么是全局变量? 直接定义在文件中的变量,叫做全局变量,在该文件任何地方都能够访问 2、什么是局部变量? 定义在函数内部的变量叫做局部变量 3、函数内部如何修改全局变量(如何声明全局变量 )? 声明全局变量: global关键字:将函数内部的局部变量转换为全局变量 修改全局变量: 使用nonlocal可以在嵌套函数内部修改外部函数的局部变量的值 """ """ # 第二题:数据转换 现在有以下数据, li1 = ["{'a':11,'b':2}", "[11,22,33,44]"] 需要转换为以下格式: li1 = [{'a': 11, 'b': 2}, [11, 22, 33, 44]] 请封装一个函数,按上述要求实现数据的格式转换 ''' # 第二题 data = ["{'a':11,'b':2}", "[11,22,33,44]"] def work2(): new_data = [] for i in data: res = eval(i) new_data.append(res) return new_data li1 = work2() print(li1) # 第三题 cases = [ ['case_id', 'case_title', 'url', 'data', 'excepted'], [1, '用例1', 'www.baudi.com', '001', 'ok'], [4, '用例4', 'www.baudi.com', '002', 'ok'], [2, '用例2', 'www.baudi.com', '002', 'ok'], [3, '用例3', 'www.baudi.com', '002', 'ok'], [5, '用例5', 'www.baudi.com', '002', 'ok'], ] def work3(cases): # 创建一个新列表 new_cases = [] # 获取新数据的key title = cases[0] # 遍历所有的数据 for data in cases[1:]: # 将遍历的数据和key进行聚合打包,并转换为字典 c = dict(zip(title,data)) print(c) # 判断转换后的数据,放到信列表中 if c["case_id"] > 3: new_cases.append(c) # 返回所有转换之后的结果 return new_cases res = work3(cases) print(res) # 方式二: def work3(cases): # 创建一个新列表 new_cases = [] # 获取新数据的key title = cases[0] # 遍历所有的数据 for data in cases[1:]: # 将遍历的数据和key进行聚合打包,并转换为字典 c = dict(zip(title,data)) # 将转换后的数据,放到新列表中 new_cases.append(c) # 使用fitter过滤器结果 # lambda后面跟函数的匿名参数x说明需要一个参数 # 冒号后面是匿名函数的返回值,返回参数 # new_cases,是需要传递的数据,字典参数 def func(x): return x["case_id"] > 3 result = filter(func,new_cases) # result = filter(lambda x:x["case_id"]>3,new_cases) return result