华为od机考手机app防沉迷python
时间: 2024-12-28 08:25:00 浏览: 14
### 华为OD机考 手机APP 防沉迷功能 Python 实现方案
为了实现手机App防沉迷系统的功能,可以按照以下思路设计程序结构:
#### 数据结构定义
首先,需要定义一个合适的数据结构来存储各个应用及其对应的使用时间段。这里可以选择字典(`dict`),其中键表示应用程序名称,值是一个列表,保存该应用的多个使用时间段。
每个时间段可以用元组形式表示,即 `(start_time, end_time)` 形式的二元组,分别代表起始时间和结束时间。这样做的好处是可以方便地进行区间查询操作。
```python
app_schedule = {
"App1": [(8, 9), (17, 18)],
"App2": [(10, 12), (14, 16)]
}
```
#### 输入解析函数
编写一个用于处理输入数据并将其转换成上述格式的功能模块。假设输入是一系列字符串,每行描述了一个特定的应用以及它被允许使用的具体时间段。
对于给定的时间戳 t ,通过遍历所有已知的应用及时段来进行匹配判断;当找到符合条件的应用时立即返回其名字;如果没有发现对应关系,则最终输出 `"NA"` 表明当前时刻无可用应用[^3]。
```python
def parse_input(input_lines):
schedule = {}
for line in input_lines:
app_name, timeslots_str = line.split(": ")
timeslots = []
# 解析单个 App 的时间段
for slot in timeslots_str.strip().split(","):
start_hour, end_hour = map(int, slot.split("-"))
timeslots.append((start_hour, end_hour))
schedule[app_name] = timeslots
return schedule
input_data = [
"App1: 8-9, 17-18",
"App2: 10-12, 14-16"
]
app_schedule = parse_input(input_data)
print(app_schedule)
# 输出结果应类似于 {'App1': [(8, 9), (17, 18)], 'App2': [(10, 12), (14, 16)]}
```
#### 时间点查询逻辑
接下来构建核心算法部分——基于用户提供的某个整数小时数作为参数 `query_hour` 进行查找,并依据之前建立好的映射表得出结论。
此过程涉及线性扫描整个记录集直至定位到目标项为止。考虑到实际应用场景下可能存在的大量并发请求情况,建议在此基础上进一步优化性能,比如采用更高效的数据索引机制或预处理技术减少不必要的重复运算开销[^4]。
```python
def find_app_at(query_hour, app_schedule):
for app_name, slots in app_schedule.items():
for start, end in slots:
if start <= query_hour < end:
return app_name
return "NA"
test_hours = [7, 8, 11, 15, 18]
for hour in test_hours:
result = find_app_at(hour, app_schedule)
print(f"At {hour}:00 -> Using '{result}'")
```
以上就是针对华为OD机考试题关于“手机App防沉迷系统”的Python解决方案概述。通过对输入数据的有效管理和快速检索策略的设计,实现了对指定时间点所关联应用的成功判定[^5]。
阅读全文