Python实现天梯图书阅览室借阅统计:精准处理时间与无效记录
```python import datetime def calculate_borrow_info(records): # 存储每本书的借阅时间 book_times = {} # 有效借阅次数 valid_borrow_times = 0 # 总阅读时间(分钟) total_read_time = 0 for record in records: book_id, key, time_str = record time = datetime.datetime.strptime(time_str, "%H:%M") if key =='s': if book_id not in book_times: book_times[book_id] = time elif key == 'e': if book_id in book_times: start_time = book_times.pop(book_id) read_time = (time - start_time).total_seconds() / 60 total_read_time += read_time valid_borrow_times += 1 # 计算平均阅读时间 average_read_time = int(total_read_time / valid_borrow_times) if valid_borrow_times > 0 else 0 return valid_borrow_times, average_read_time n = int(input()) for _ in range(n): records = [] while True: line = input().split() if line[0] == '0': break records.append((int(line[0]), line[1], line[2])) borrow_times, average_time = calculate_borrow_info(records) print(f"{borrow_times} {average_time}") ``` 额外需要注意的逻辑点: 1. 对于时间的处理要准确,确保能正确计算阅读时长。 2. 处理无效纪录时要确保不影响有效借阅的统计。 3. 注意边界情况,比如第一天的开始时间和最后一天的结束时间。 ######[AI写代码神器 | 395点数解答 | 2024-11-30 10:47:03]
- Python 运行报错:urllib3 网络连接创建失败,原因及排查建议(字节豆包 | 161点数解答 | 2024-10-31 00:39:36)461
- Python 实现球类:精准计算半径、表面积与体积,附输入验证与异常处理!(阿里通义 | 261点数解答 | 2024-11-28 21:19:39)345
- 卡牌游戏技能“教化”机制全解析:规则、代码与注意要点 (DeepSeek | 353点数解答 | 2025-07-07 15:40:28)169
- Python 模拟无名杀“教化”技能:出牌阶段规则与代码实现及优化建议(字节豆包 | 546点数解答 | 2025-07-07 15:41:02)175
- Java 实现“教化”技能:出牌阶段限两次的牌获取规则代码解析(字节豆包 | 1003点数解答 | 2025-07-07 15:41:54)146
- JavaScript 实现“教化”技能:两次出牌限制与牌型记录逻辑揭秘(字节豆包 | 846点数解答 | 2025-07-07 15:42:46)184
- 易语言读取文本文件并显示到超级列表框:代码示例与注意要点(DeepSeek | 571点数解答 | 2025-08-23 20:54:40)224
- 易语言:读取并显示特定文本到超级列表框,还能增加新数据的方法与要点(DeepSeek | 1317点数解答 | 2025-08-23 20:58:40)231
- 游戏惊变!成为【杀】的目标,弃牌触发两大惊人选择!(字节豆包 | 35点数解答 | 2025-02-17 18:55:50)179
- Python 实战:学生信息列表转字典、遍历、深拷贝及数据修改全流程(GPT | 422点数解答 | 2024-10-29 15:43:54)416
- Python实战:学生成绩列表转字典,深拷贝与数据修改操作全解析(字节豆包 | 254点数解答 | 2024-10-29 16:01:39)409
- CentOS下Java进程出现futex_wait_queue_me问题的处理全流程(阿里通义 | 283点数解答 | 2023-11-20 14:51:26)461