forked from ITStudio_OUC/ProgrammeHomework
更新 written.md
This commit is contained in:
+33
-1
@@ -163,7 +163,7 @@
|
|||||||
|
|
||||||
### 答案
|
### 答案
|
||||||
|
|
||||||
(在此填写,格式:`1. A 2. B 3. C 4. D 5. A 6. B 7. C 8. D 9. A 10. B`)
|
(在此填写,格式:`1. B 2. B 3. B 4. B 5. B 6. B 7. B 8. B 9. B 10. B`)
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
@@ -183,6 +183,9 @@ c = copy.deepcopy(a)
|
|||||||
```
|
```
|
||||||
|
|
||||||
(在此作答)
|
(在此作答)
|
||||||
|
a、b、c三者的关系:a是原始嵌套列表,b是用a.copy()做的浅拷贝,c是用copy.deepcopy(a)做的深拷贝。
|
||||||
|
执行a[0].append(99)之后,b会变成[[1, 2, 99], [3, 4]],因为b是浅拷贝,b里的子列表会跟着a的变化而变化。
|
||||||
|
c还是[[1, 2], [3, 4]],因为深拷贝把内层的子列表也都复制了新的,和a完全没关系了,所以a的修改不会影响到c
|
||||||
|
|
||||||
### 第 2 题:字典与列表的综合应用
|
### 第 2 题:字典与列表的综合应用
|
||||||
|
|
||||||
@@ -203,6 +206,23 @@ logs = [
|
|||||||
3. 解释为什么第 2 问不能直接用 `len(logs)` 得到结果,需要什么遍历结构?
|
3. 解释为什么第 2 问不能直接用 `len(logs)` 得到结果,需要什么遍历结构?
|
||||||
|
|
||||||
(在此作答)
|
(在此作答)
|
||||||
|
m=[]
|
||||||
|
for i in logs:
|
||||||
|
n=i["level"]
|
||||||
|
if n=="ERROR":
|
||||||
|
m.append(i)
|
||||||
|
|
||||||
|
d={}
|
||||||
|
for i in logs:
|
||||||
|
u=i["user"]
|
||||||
|
if u in d:
|
||||||
|
d[u]=d[u]+1
|
||||||
|
else:
|
||||||
|
d[u]=1
|
||||||
|
|
||||||
|
因为 len(logs) 算出来的是总共有5条字典,没法知道每个人到底出现了几次。
|
||||||
|
得用 for 循环遍历 logs 列表,取出里面的 user 名字,同一个人就在原来数字上加一,最终知道这个人出现几次
|
||||||
|
|
||||||
|
|
||||||
### 第 3 题:异常处理设计
|
### 第 3 题:异常处理设计
|
||||||
|
|
||||||
@@ -218,3 +238,15 @@ Day_10 中你写过 `safe_int(s)` 函数:能转就返回整数,不能转就
|
|||||||
请写出函数代码,并说明:为什么这里用 `try/except` 比先用 `if` 判断再计算更好?
|
请写出函数代码,并说明:为什么这里用 `try/except` 比先用 `if` 判断再计算更好?
|
||||||
|
|
||||||
(在此作答)
|
(在此作答)
|
||||||
|
def safe_divide(a,b)
|
||||||
|
try:
|
||||||
|
x=float(a)
|
||||||
|
y=float(b)
|
||||||
|
m=x/y
|
||||||
|
return m
|
||||||
|
except ValueError:
|
||||||
|
return None
|
||||||
|
except ZeroDivisionError:
|
||||||
|
return None
|
||||||
|
|
||||||
|
因为用if要先判断字符串有没有转换成数字,而且分母不能为0,很麻烦;但是用try/except就很方便了,直接运行去算,算错了还会有None输出
|
||||||
|
|||||||
Reference in New Issue
Block a user