浙江大学python程序设计(陈春晖、翁恺、季江民)习题答案-第五章
一、判断题
1.集合的元素可以是任意数据类型。 错误
2.len(set([0,4,5,6,0,7,8])的结果是7。错误
3.a = {},type(a)
结果是<class 'set'>
。 错误
4.列表可以作为字典的键。 错误
5.下面程序最后一行的输出是:"岳瑜":13611987725
。 错误
dic={"赵洁":15264771766,"张秀华":13063767486,"胡桂珍":15146046882,"龚丽丽":13606379542,"岳瑜":13611987725}
for i in len(dic):print(dic[i])
6.下面的程序输出是None
。 正确
dic={"赵洁":15264771766,"张秀华":13063767486,"胡桂珍":15146046882,"龚丽丽":13606379542,"岳瑜":13611987725}
print(dic.get("张军",None))
7.下面的程序输出是None
。 错误
dic={"赵洁":15264771766,"张秀华":13063767486,"胡桂珍":15146046882,"龚丽丽":13606379542,"岳瑜":13611987725}
print(dic["张军"])
8.下面的程序输出是张秀华
。 正确
dic={"赵洁":15264771766,"张秀华":13063767486,"胡桂珍":15146046882,"龚丽丽":13606379542,"岳瑜":13611987725}
reversedic={v:k for k,v in dic.items()}
print(reversedic[13063767486])
9.下面的程序输出是15929494512
。 正确
dic1={"赵洁":15264771766,"张秀华":13063767486,"胡桂珍":15146046882,"龚丽丽":13606379542,"岳瑜":13611987725}
dic2={"王玉兰":15619397270,"王强":15929494512,"王桂荣":13794876998,"邓玉英":18890393268,"何小红":13292597821}
dic3 = dic1.update(dic2)
print(dic3["王强"])
10.下面的程序输出是15146046882
。 正确
dic1={"赵洁":15264771766,"张秀华":13063767486,"胡桂珍":15146046882,"龚丽丽":13606379542,"岳瑜":13611987725}
dic2={"王玉兰":15619397270,"王强":15929494512,"王桂荣":13794876998,"邓玉英":18890393268,"何小红":13292597821}
dic3={** dic1,** dic2}
print(dic3["胡桂珍"])
11.下面的程序输出是True
。 正确
dic1={"赵洁":15264771766,"张秀华":13063767486,"胡桂珍":15146046882,"龚丽丽":13606379542,"岳瑜":13611987725}
dic2={"王玉兰":15619397270,"王强":15929494512,"王桂荣":13794876998,"邓玉英":18890393268,"何小红":13292597821}
dic3={ ** dic1, ** dic2}
dic1.update(dic2)
print(dic1== dic3)
二、选择题
1、以下( C
)会得到 {1,2,3}
。
A、list(“123”)
B、 tuple(“123”)
C、set(“123”)
D、 以上选项都不是
2、以下( A
)可以创建一个空的集合 。
A、 set()
B、{ }
C、[ ]
D、( )
3、对于两个集合s1和s2,s1<s2的意思是( C
)。
A、s1的大小小于s2的大小
B、s1的元素比s2的小
C、s1是s2的真子集
D、s2是s1的真子集
4、对于集合s,以下( B
)是不存在的 。
A、len(s)
B、s.append(1)
C、max(s)
D、s - {1}
5、对于操作a[2]=3
,a
不可能是( C
)。
A、集合
B、列表
C、元组
D、字典
分析:
对于操作a[2] = 3
,这意味着尝试给变量a
中索引或键为2
的位置赋值3
。我们分析一下各个选项的数据类型:
A、集合 (Set):集合是无序的,不支持通过索引或键来访问或修改元素。尝试
a[2] = 3
会引发TypeError
。
B、列表 (List):列表是有序的,支持通过索引来访问和修改元素。如果列表a
的长度大于等于 3,那么a[2] = 3
是一个有效的操作。 C、元组
(Tuple):元组是有序的,支持通过索引来访问元素,但是元组是不可变的(immutable),不支持修改元素。尝试a[2] = 3
会引发TypeError
。 D、字典
(Dictionary):字典是键值对的集合,支持通过键来访问和修改对应的值。a[2] = 3
会将键2
对应的值设置为
3
。这是一个有效的操作(如果键2
不存在,则会添加该键值对;如果存在,则会更新值)。操作
a[2] = 3
是一个赋值操作。在给定的选项中,集合和元组都不支持这种通过[2]
进行赋值的操作。集合是因为它不支持索引和赋值,元组是因为它不可变,不支持元素修改。然而,题目问的是
a
不可能是 哪种类型,使得操作a[2] = 3
成为一个不可能(即会出错)的操作。换句话说,哪种类型不支持a[2] = 3
这个操作。根据分析,集合和元组都不支持
a[2] = 3
这个操作。但是,在 Python 中,a[2]
这种语法通常用于访问序列类型(如列表、元组)的索引,或者字典的键。集合不支持a[2]
这种访问语法。元组支持a[2]
访问语法,但不允许赋值。考虑到选项和典型的 Python 考察点,元组的不可变性是其重要特性。虽然集合也不支持此操作,但
a[2]
的写法更倾向于索引或键访问。元组支持a[2]
访问,但a[2] = 3
会因其不可变性而失败。因此,最符合题意的答案是元组,因为它是支持
a[2]
访问语法但不支持a[2] = 3
赋值操作的类型。答案是 C。
三、填空题
- 在一行中输入若干个0 - 9的数字,数字之间用空格分隔,以下代码会输出0~9这10个数字在输入中出现的次数:
a = map(int, input().split())
m = ____
for x in a:m[x]=________
for k in m.keys():print(k,_____)
第一种解法:
第一空:{ }
第二空:m.get(x,0)+1
第三空:m.get(k,0)
第二种解法:
第一空:[0]*10
第二空:m[x]+1
第三空:m[k]
- 下面程序的输出结果是
30
。
dic1 = {"姓名":"xiaoming","年龄":27}
dic2 = {"性别":"male", "年龄":30}
dic3 = {k:v for d in [dic1,dic2] for k,v in d.items()}
print(dic3["年龄"])