# 选择题 + 简答题 > 本文件包含所有选择题与简答题,请在你的仓库中于本文件作答。 > **硬性要求:本文件所有题目均必须完成,未完成的题目不进入部门筛选流程。** ## 一、选择题(每题 2 分,共 10 题,满分 20 分) > 说明:单选,将答案写在本节末尾的「答案」行中,格式如 `1. A 2. B 3. C ...`。 1. 依次执行以下代码,输出是什么? ```python def f(x, lst=[]): lst.append(x) return lst a = f(1) b = f(2) print(b) ``` - A. `[2]` - B. `[1, 2]` - C. `[1]` - D. `TypeError: 'list' object is not callable` 2. 依次执行以下代码,输出是什么? ```python a = [1, 2, 3] b = a c = a.copy() a.append(4) print(b, c) ``` - A. `[1, 2, 3, 4] [1, 2, 3, 4]` - B. `[1, 2, 3, 4] [1, 2, 3]` - C. `[1, 2, 3] [1, 2, 3, 4]` - D. `[1, 2, 3] [1, 2, 3]` 3. 依次执行以下代码,输出是什么? ```python try: x = 1 / 0 except ZeroDivisionError: print("A") else: print("B") finally: print("C") ``` - A. 只输出 `C` - B. 输出 `A` 和 `C` - C. 输出 `B` 和 `C` - D. 输出 `A`、`B` 和 `C` 4. 依次执行以下代码,输出是什么? ```python s = " hello " print(len(s)) print(len(s.strip())) ``` - A. `7 7` - B. `7 5` - C. `5 5` - D. `5 7` 5. 以下代码的执行结果是? ```python for i in range(5): if i == 3: break else: print("done") print("end") ``` - A. 输出 `done` 和 `end` - B. 只输出 `end` - C. 只输出 `done` - D. 什么都不输出 6. 依次执行以下代码,输出是什么? ```python class Animal: def __init__(self, name): self.name = name def speak(self): print("...") class Dog(Animal): def speak(self): print(f"{self.name}: woof") d = Dog("Rex") d.speak() ``` - A. `...` - B. `Rex: woof` - C. 输出两行:`...` 和 `Rex: woof` - D. `AttributeError: 'Dog' object has no attribute '__init__'` 7. 以下代码中,`d` 的值是什么? ```python d = {"a": 1, "b": 2} d = {k: v for k, v in d.items() if v > 1} print(d) ``` - A. `{'a': 1, 'b': 2}` - B. `{'b': 2}` - C. `{1: 'a', 2: 'b'}` - D. `SyntaxError: invalid syntax` 8. 依次执行以下代码,输出是什么? ```python import json s = json.dumps({"name": "张三", "age": 18}) print(type(s)) ``` - A. `` - B. `` - C. `` - D. `TypeError: dump() missing 1 required positional argument: 'fp'` 9. 依次执行以下代码,输出是什么? ```python def f(x): return x + 1 f(5) print(f(5)) ``` - A. 输出两行:`None` 和 `6` - B. 只输出 `6` - C. 只输出 `None` - D. 输出 `6` 两次 10. 以下代码中,`user.get("city")` 和 `user["city"]` 的区别是什么? ```python user = {"name": "张三", "age": 18} ``` - A. 没有区别,两者行为完全一致 - B. `get()` 返回默认值 `None`,`[]` 抛出 `KeyError` - C. `get()` 抛出 `KeyError`,`[]` 返回 `None` - D. `get()` 只能用于字符串键,`[]` 可以用于任意键 ### 答案 (在此填写,格式:`1. A 2. B 3. C 4. D 5. A 6. B 7. C 8. D 9. A 10. B`) --- ## 二、简答题(每题 10 分,共 3 题,满分 30 分) > 说明:直接在本文件对应题目下方作答,支持代码块。 ### 第 1 题:浅拷贝与深拷贝 以下代码中,`a`、`b`、`c` 三者之间的关系是什么?执行 `a[0].append(99)` 后,`b` 和 `c` 分别变成什么?请解释原因。 ```python a = [[1, 2], [3, 4]] b = a.copy() import copy c = copy.deepcopy(a) ``` (在此作答) ### 第 2 题:字典与列表的综合应用 以下代码模拟"从日志中提取用户信息",请回答: ```python logs = [ {"user": "张三", "action": "login", "level": "INFO"}, {"user": "李四", "action": "logout", "level": "INFO"}, {"user": "张三", "action": "error", "level": "ERROR"}, {"user": "王五", "action": "login", "level": "INFO"}, {"user": "李四", "action": "error", "level": "ERROR"}, ] ``` 1. 写出表达式,找出所有 `level` 为 `"ERROR"` 的日志(返回字典列表)。 2. 写出表达式,统计每个用户出现了几次(返回字典,键为用户名,值为次数)。 3. 解释为什么第 2 问不能直接用 `len(logs)` 得到结果,需要什么遍历结构? (在此作答) ### 第 3 题:异常处理设计 Day_10 中你写过 `safe_int(s)` 函数:能转就返回整数,不能转就返回 `None`。 现在请你设计一个 `safe_divide(a, b)` 函数: - 输入两个字符串 `a` 和 `b` - 尝试将它们转为数字并计算 `a / b` - 如果转换失败(`ValueError`)或除数为零(`ZeroDivisionError`),返回 `None` - 否则返回商(`float`) 请写出函数代码,并说明:为什么这里用 `try/except` 比先用 `if` 判断再计算更好? (在此作答)