# 1.列举你了解的字典中的功能(字典独有)。 """ dict.pop() 删除某元素 并返回 dict.get() 通过键值获得元素,如果没有此键返回None dict.updtae() 批量更新键值 如无此键则增加 有则更新 dict.keys() 获取所有键值 生成高仿列表 dict.values() 获取所有属性 生成高仿列表 dict.setdefault() 新增键值 如已有则不新增 dict.items() 将键对转为元组 """ # 2.列举你了解的集合中的功能(集合独有)。 """ set.discard() 删除元素 set.add() 追加元素 set.union() 生成并集返回新集合 set.intersection() 生成交集返回新集合 set.difference() 生成差集返回新集合 set.update() 批量更新 集合是无重复如果更新中有重复值将不会被更新 """ # 3.列举你了解的可以转换为布尔值且为False的值。 """ " ",0,[],{},() """ # 4.请用代码实现 info = {'name': '王刚蛋', 'hobby': '铁锤'} # - 循环提示用户输入,根据用户输入的值为键去字典中获取对应的值并输出。 while True: s = input("请输入name或hobby") for i in info: if s == i: print(info[i]) # - 循环提示用户输入,根据用户输入的值为键去字典中获取对应的值并输出(如果key不存在,则获取默认“键不存在”,并输出)。 # 注意:无需考虑循环终止(写死循环即可) while True: s = input("请输入name或hobby") v = info.get(s,'键不存在') print(v) # 5.请用代码验证"name"是否在字典的键中? info = {'name':'王刚蛋', 'hobby':'铁锤', 'age':'18'} if 'name' in info.keys(): print('存在') else: print('不存在') # 6.请用代码验证"alex"是否在字典的值中? info = {'name': '王刚蛋', 'hobby': '铁锤', 'age': '18'} if 'alex' in info.values(): print('存在') else: print('不存在') # 7.有如下 v1 = {'武沛齐', '李杰', '太白', '景女神'} v2 = {'李杰', '景女神'} # - 请得到 v1 和 v2 的交集并输出 s1 = v1.intersection(v2) print(s1) # - 请得到 v1 和 v2 的并集并输出 s2 = v1.union(v2) print(s2) # - 请得到 v1 和 v2 的 差集并输出 s3 = v1.difference(v2) print(s3) # - 请得到 v2 和 v1 的 差集并输出 s4 = v2.difference(v1) print(s4) #8. 循环提示用户输入,并将输入内容追加到列表中(如果输入N或n则停止循环) lst = [] while True: s = input('请随意输入,输入N停止更新') if s.upper() == 'N': break else: lst.append(s) print(lst) # 9. 循环提示用户输入,并将输入内容添加到集合中(如果输入N或n则停止循环) se = set() while True: s = input('请随意输入,输入n退出输入') if s.lower() == 'n': break else: se.add(s) print(se) # 10.写代码实现 v1 = {'alex', '武sir', '肖大'} v2 = [] # # 循环提示用户输入,如果输入值在v1中存在,则追加到v2中,如果v1中不存在,则添加到v1中。(如果输入N或n则停止循环) while True: s = input('请输入(输入N退出):') if s.upper() == 'N': break elif s in v1: v2.append(s) else: v1.add(s) print(v1) print(v2) # 11.判断以下值那个能做字典的key ?那个能做集合的元素? # - 1 字典和集合都能 # - -1 字典和集合都能 # - "" 字典和集合都能 # - None 字典和集合都能 # - [1, 2] 字典不能 集合不能 # - (1,) 字典和集合都能 # - {11, 22, 33, 4} 字典不能,集合不能 # - {'name': 'wupeiq', 'age': 18} 字典不能,集合不能 # 12. is 和 == 的区别? """ is : 是比较变量内存地址 == : 是比较变量的数值属性 """ # 13.type使用方式及作用? # 查看对象类型,方便开发人员知道变量是什么类型 # 14.id的使用方式及作用? #查看对象的内存地址,方便开发人员比对变量是否指向同一个内存地址 # 15.看代码写结果并解释原因 # v1 = {'k1': 'v1', 'k2': [1, 2, 3]} #v2 = {'k1': 'v1', 'k2': [1, 2, 3]} # result1 = v1 == v2 # result2 = v1 is v2 # print(result1) 结果:True # print(result2) 结果:False # 原因:result1 比较的是集合中的元素 result2比较集合的内存地址 每次重新赋值等于开辟了新的内存空间 # 16.看代码写结果并解释原因 # v1 = {'k1': 'v1', 'k2': [1, 2, 3]} # v2 = v1 # result1 = v1 == v2 # result2 = v1 is v2 # print(result1) 结果:true # print(result2) 结果:true 原因:v2=v1 相当于 2个变量指向了同一个内存地址,可以用id()验证 # 17.看代码写结果并解释原因 # v1 = {'k1': 'v1', 'k2': [1, 2, 3]} # v2 = v1 # v1['k1'] = 'wupeiqi' # print(v2) 结果:v2['k1'] = 'wupeiqi' #原因:变量指向一个内存地址操作一个变量其他变量也发生变化 # 18.看代码写结果并解释原因 # v1 = '人生苦短,我用Python' # v2 = [1, 2, 3, 4, v1] # v1 = "人生苦短,用毛线Python" # print(v2) """ 原因: 1.字符串的修改相当于重新赋值,因为字符串是可哈希的,无法修改,只会开辟一个新的内存地址 2.v1字符串重新赋值后,v2中的v1与列表外的v1操作的内存地址已不是同一个地址 """ # 19.看代码写结果并解释原因 # info = [1, 2, 3] # userinfo = {'account': info, 'num': info, 'money': info} # info.append(9) # print(userinfo) # info = "题怎么这么多" # # print(userinfo) """ 原因: 1.与上述题是一样的当info重新赋值后了userinfo内存地址与info内存地址不在是同一个 """ # 20.看代码写结果并解释原因 # info = [1, 2, 3] # userinfo = [info, info, info, info, info] # info[0] = '不仅多,还特么难呢' # print(info, userinfo) 结果:第0个索引都会变成字符串,list并没有重新开辟空间,只是修改了它列表中的元素,还是原地址 # 21.看代码写结果并解释原因 # info = [1, 2, 3] # userinfo = [info, info, info, info, info] # userinfo[2][0] = '闭嘴' # print(info, userinfo) 结果:原地址没变只是修改列表内的元素 # 22.看代码写结果并解释原因 # info = [1, 2, 3] # user_list = [] # for item in range(10): # user_list.append(info) # # info[1] = "是谁说Python好学的?" # # print(user_list) """ 原因: 1.user_list通过for循环追加了info列表 总共10次,注意的是user_list列表中的元素是info 2.当info元素中的属性发生改变的时候,相应的user_list中的info也会发生改变,因为user_list中的info元素内存地址 与info列表内存地址是一致的。 """ # 23. 看代码写结果并解释原因 # data = {} # for i in range(10): # data['user'] = i # # print(data) """ 结果:9 原因: 1.初始化data的字典 为空 2.循环了10次,data键值user重复更新了10次 所以i=9 索引值从0开始 3.索引打印出来键值user为9 """ #24.看代码写结果并解释原因 # data_list = [] # for i in range(10): # data = {} # data['user'] = i # data_list.append(data) # print(data_list) """ 原因: 1.循环了10次 1=9,索引值从0开始. 2.循环体data = {} 一直为空,没有赋值. 3.结束循环后,把i赋值给了data['user'] 4.data_list列表追加data 5.打印出来就是列表嵌套了字典[{'user':9}] """ # 1.列举你了解的字典中的功能(字典独有)。 """ dict.pop() 删除某元素 并返回 dict.get() 通过键值获得元素,如果没有此键返回None dict.updtae() 批量更新键值 如无此键则增加 有则更新 dict.keys() 获取所有键值 生成高仿列表 dict.values() 获取所有属性 生成高仿列表 dict.setdefault() 新增键值 如已有则不新增 dict.items() 将键对转为元组 """ # 2.列举你了解的集合中的功能(集合独有)。 """ set.discard() 删除元素 set.add() 追加元素 set.union() 生成并集返回新集合 set.intersection() 生成交集返回新集合 set.difference() 生成差集返回新集合 set.update() 批量更新 集合是无重复如果更新中有重复值将不会被更新 """ # 3.列举你了解的可以转换为布尔值且为False的值。 """ " ",0,[],{},() """ # 4.请用代码实现 info = {'name': '王刚蛋', 'hobby': '铁锤'} # - 循环提示用户输入,根据用户输入的值为键去字典中获取对应的值并输出。 while True: s = input("请输入name或hobby") for i in info: if s == i: print(info[i]) # - 循环提示用户输入,根据用户输入的值为键去字典中获取对应的值并输出(如果key不存在,则获取默认“键不存在”,并输出)。 # 注意:无需考虑循环终止(写死循环即可) while True: s = input("请输入name或hobby") v = info.get(s,'键不存在') print(v) # 5.请用代码验证"name"是否在字典的键中? info = {'name':'王刚蛋', 'hobby':'铁锤', 'age':'18'} if 'name' in info.keys(): print('存在') else: print('不存在') # 6.请用代码验证"alex"是否在字典的值中? info = {'name': '王刚蛋', 'hobby': '铁锤', 'age': '18'} if 'alex' in info.values(): print('存在') else: print('不存在') # 7.有如下 v1 = {'武沛齐', '李杰', '太白', '景女神'} v2 = {'李杰', '景女神'} # - 请得到 v1 和 v2 的交集并输出 s1 = v1.intersection(v2) print(s1) # - 请得到 v1 和 v2 的并集并输出 s2 = v1.union(v2) print(s2) # - 请得到 v1 和 v2 的 差集并输出 s3 = v1.difference(v2) print(s3) # - 请得到 v2 和 v1 的 差集并输出 s4 = v2.difference(v1) print(s4) #8. 循环提示用户输入,并将输入内容追加到列表中(如果输入N或n则停止循环) lst = [] while True: s = input('请随意输入,输入N停止更新') if s.upper() == 'N': break else: lst.append(s) print(lst) # 9. 循环提示用户输入,并将输入内容添加到集合中(如果输入N或n则停止循环) se = set() while True: s = input('请随意输入,输入n退出输入') if s.lower() == 'n': break else: se.add(s) print(se) # 10.写代码实现 v1 = {'alex', '武sir', '肖大'} v2 = [] # # 循环提示用户输入,如果输入值在v1中存在,则追加到v2中,如果v1中不存在,则添加到v1中。(如果输入N或n则停止循环) while True: s = input('请输入(输入N退出):') if s.upper() == 'N': break elif s in v1: v2.append(s) else: v1.add(s) print(v1) print(v2) # 11.判断以下值那个能做字典的key ?那个能做集合的元素? # - 1 字典和集合都能 # - -1 字典和集合都能 # - "" 字典和集合都能 # - None 字典和集合都能 # - [1, 2] 字典不能 集合不能 # - (1,) 字典和集合都能 # - {11, 22, 33, 4} 字典不能,集合不能 # - {'name': 'wupeiq', 'age': 18} 字典不能,集合不能 # 12. is 和 == 的区别? """ is : 是比较变量内存地址 == : 是比较变量的数值属性 """ # 13.type使用方式及作用? # 查看对象类型,方便开发人员知道变量是什么类型 # 14.id的使用方式及作用? #查看对象的内存地址,方便开发人员比对变量是否指向同一个内存地址 # 15.看代码写结果并解释原因 # v1 = {'k1': 'v1', 'k2': [1, 2, 3]} #v2 = {'k1': 'v1', 'k2': [1, 2, 3]} # result1 = v1 == v2 # result2 = v1 is v2 # print(result1) 结果:True # print(result2) 结果:False # 原因:result1 比较的是集合中的元素 result2比较集合的内存地址 每次重新赋值等于开辟了新的内存空间 # 16.看代码写结果并解释原因 # v1 = {'k1': 'v1', 'k2': [1, 2, 3]} # v2 = v1 # result1 = v1 == v2 # result2 = v1 is v2 # print(result1) 结果:true # print(result2) 结果:true 原因:v2=v1 相当于 2个变量指向了同一个内存地址,可以用id()验证 # 17.看代码写结果并解释原因 # v1 = {'k1': 'v1', 'k2': [1, 2, 3]} # v2 = v1 # v1['k1'] = 'wupeiqi' # print(v2) 结果:v2['k1'] = 'wupeiqi' #原因:变量指向一个内存地址操作一个变量其他变量也发生变化 # 18.看代码写结果并解释原因 # v1 = '人生苦短,我用Python' # v2 = [1, 2, 3, 4, v1] # v1 = "人生苦短,用毛线Python" # print(v2) """ 原因: 1.字符串的修改相当于重新赋值,因为字符串是可哈希的,无法修改,只会开辟一个新的内存地址 2.v1字符串重新赋值后,v2中的v1与列表外的v1操作的内存地址已不是同一个地址 """ # 19.看代码写结果并解释原因 # info = [1, 2, 3] # userinfo = {'account': info, 'num': info, 'money': info} # info.append(9) # print(userinfo) # info = "题怎么这么多" # # print(userinfo) """ 原因: 1.与上述题是一样的当info重新赋值后了userinfo内存地址与info内存地址不在是同一个 """ # 20.看代码写结果并解释原因 # info = [1, 2, 3] # userinfo = [info, info, info, info, info] # info[0] = '不仅多,还特么难呢' # print(info, userinfo) 结果:第0个索引都会变成字符串,list并没有重新开辟空间,只是修改了它列表中的元素,还是原地址 # 21.看代码写结果并解释原因 # info = [1, 2, 3] # userinfo = [info, info, info, info, info] # userinfo[2][0] = '闭嘴' # print(info, userinfo) 结果:原地址没变只是修改列表内的元素 # 22.看代码写结果并解释原因 # info = [1, 2, 3] # user_list = [] # for item in range(10): # user_list.append(info) # # info[1] = "是谁说Python好学的?" # # print(user_list) """ 原因: 1.user_list通过for循环追加了info列表 总共10次,注意的是user_list列表中的元素是info 2.当info元素中的属性发生改变的时候,相应的user_list中的info也会发生改变,因为user_list中的info元素内存地址 与info列表内存地址是一致的。 """ # 23. 看代码写结果并解释原因 # data = {} # for i in range(10): # data['user'] = i # # print(data) """ 结果:9 原因: 1.初始化data的字典 为空 2.循环了10次,data键值user重复更新了10次 所以i=9 索引值从0开始 3.索引打印出来键值user为9 """ #24.看代码写结果并解释原因 # data_list = [] # for i in range(10): # data = {} # data['user'] = i # data_list.append(data) # print(data_list) """ 原因: 1.循环了10次 1=9,索引值从0开始. 2.循环体data = {} 一直为空,没有赋值. 3.结束循环后,把i赋值给了data['user'] 4.data_list列表追加data 5.打印出来就是列表嵌套了字典[{'user':9}] """