1 Commits

Author SHA1 Message Date
shimmer 4bc50db47c 更新 written.md 2026-10-03 13:36:57 +08:00
4 changed files with 3 additions and 123 deletions
-46
View File
@@ -1,46 +0,0 @@
import json
import os
def analyze_log(filepath: str) -> dict:
if not os.path.exists(filepath):
return {}
total = 0
by_level = {}
by_user = {}
last_error = None
try:
with open(filepath, 'r', encoding="utf-8") as f:
first_line = f.readline()
if not first_line.strip():
return {}
f.seek(0)
for line in f:
line = line.strip()
if not line:
continue
try:
log_entry = json.loads(line)
level = log_entry["level"]
user = log_entry["user"]
message = log_entry["message"]
except (json.JSONDecodeError, TypeError, KeyError):
continue
total += 1
by_level[level] = by_level.get(level, 0) + 1
by_user[user] = by_user.get(user, 0) + 1
if level == "ERROR":
last_error = message
except OSError:
return {}
return {
"total": total,
"by_level": by_level,
"by_user": by_user,
"last_error": last_error
}
-5
View File
@@ -1,5 +0,0 @@
{"timestamp":"2026-10-01 10:23:45","level":"INFO","message":"用户登录成功","user":"老三"}
{"timestamp":"2026-10-02 10:24:01","level":"ERROR","message":"数据库连接失败","user":"老四"}
{"timestamp":"2026-10-03 10:25:12","level":"INFO","message":"用户登出","user":"老八"}
{"timestamp":"2026-10-04 10:26:30","level":"ERROR","message":"超时","user":"老六"}
{"timestamp":"2026-10-05 10:27:00","level":"INFO","message":"任务完成","user":"老王"}
-55
View File
@@ -1,55 +0,0 @@
import json
class UserManager:
def __init__(self):
self.users = []
self.next_id = 1
def add_user(self, name: str, age: int) -> dict:
user = {
"id": self.next_id,
"name": name,
"age": age
}
self.users.append(user)
self.next_id += 1
return user
def get_user(self, user_id: int):
for u in self.users:
if u["id"] == user_id:
return u
return None
def update_age(self, user_id: int, new_age: int) -> bool:
user = self.get_user(user_id)
if user is None:
return False
user["age"] = new_age
return True
def remove_user(self, user_id: int) -> bool:
for idx, u in enumerate(self.users):
if u["id"] == user_id:
self.users.pop(idx)
return True
return False
def list_users(self):
return self.users.copy()
def save_to_json(self, file_path: str):
with open(file_path, "w", encoding="utf-8") as f:
json.dump(self.users, f, ensure_ascii=False, indent=2)
def load_from_json(self, file_path: str):
with open(file_path, "r", encoding="utf-8") as f:
loaded_users = json.load(f)
self.users = loaded_users
if self.users:
max_id = max(u["id"] for u in self.users)
self.next_id = max_id + 1
else:
self.next_id = 1
+3 -17
View File
@@ -60,7 +60,7 @@
4. 依次执行以下代码,输出是什么?
```python
s = " hello "
s = " hello "
print(len(s))
print(len(s.strip()))
```
@@ -163,7 +163,7 @@
### 答案
(在此填写,格式:`1. B 2.B 3. B 4. B 5. A 6. B 7. B 8. B 9. B 10. B )
(在此填写,格式:`1. A 2. B 3. C 4. D 5. A 6. B 7. C 8. D 9. A 10. B`)
---
@@ -182,8 +182,7 @@ import copy
c = copy.deepcopy(a)
```
(在此作答)b是a的浅层copy,而c则是a的深层copy,c相对而言更独立(不受a的影响),所以最后b是[[1, 2, 99], [3, 4]]
而c没变
(在此作答)
### 第 2 题:字典与列表的综合应用
@@ -204,9 +203,6 @@ logs = [
3. 解释为什么第 2 问不能直接用 `len(logs)` 得到结果,需要什么遍历结构?
(在此作答)
1.[log for log in logs if log["level"] == "ERROR"]
2.{user: sum(1 for log in logs if log["user"] == user) for user in set(log["user"] for log in logs)}
3.因为len(logs)是在计算元素数量(5),应该先for遍历提取user的值(先创建空字典),没则计
### 第 3 题:异常处理设计
@@ -222,13 +218,3 @@ Day_10 中你写过 `safe_int(s)` 函数:能转就返回整数,不能转就
请写出函数代码,并说明:为什么这里用 `try/except` 比先用 `if` 判断再计算更好?
(在此作答)
def safe_divide(a, b):
try:
num_a = float(a)
num_b = float(b)
result = num_a / num_b
return result
except (ValueError, ZeroDivisionError):
return None
因为if干的活try/except也可以干,不用if可以让代码更简洁