python日常练习(五)

# 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}]
"""

  

猜你喜欢

转载自www.cnblogs.com/jinyan-huang/p/11373060.html