📌  相关文章
📜  门| Sudo GATE 2020 Mock II(2019年1月10日)|问题8(1)

📅  最后修改于: 2023-12-03 15:12:45.100000             🧑  作者: Mango

Sudo GATE 2020 Mock II(2019年1月10日) - 问题8

物品门禁系统

这个系统是基于一个电子门禁系统,由物品管理系统发出访问请求。每个物品都有一个唯一的ID,这些ID被存储在物品管理系统中。门禁系统存储着被允许访问门禁的ID,以及一个标志着门禁是开启还是关闭的状态。

门禁系统处理以下两种不同的命令:

访问命令

管理系统通过“access ”命令请求门禁系统允许某个ID进入门禁系统。如果门禁系统能够找到该ID,并且该门禁处于开启的状态,则门禁系统会允许该ID进入,并且将门禁状态设为关闭;否则门禁状态不变,门禁系统返回"Access Denied"。

def access(id, access_dict):
    if id in access_dict and access_dict[id] == "Open":
        access_dict[id] = "Closed"
        return "Access Granted"
    else:
        return "Access Denied"
控制命令

管理系统通过“control ”命令控制某个门禁的状态。状态可以取值Open或Close。

def control(id, status, access_dict):
    if id in access_dict:
        access_dict[id] = status
        return "Control Successful"
    else:
        return "Access Denied"

在这里,access_dict是一个字典,将ID映射到门禁状态。在每个门禁的开机时,它们启动开启状态。

实现对门禁状态的控制

我们可以使用以下代码模拟我们的物品门禁系统:

access_dict = {
    "item_001": "Open",
    "item_002": "Open",
    "item_003": "Open",
    "item_004": "Open",
}

print(access("item_001", access_dict)) # "Access Granted"

print(control("item_002", "Close", access_dict)) # "Control Successful"
print(access("item_002", access_dict)) # "Access Denied"

print(control("item_003", "Close", access_dict)) # "Control Successful"
print(control("item_003", "Close", access_dict)) # "Control Successful"
print(access("item_003", access_dict)) # "Access Denied"

在这个实现中,我们假设一个字典access_dict来存储每个门禁系统的状态,其中“Open”表示门禁处于开放状态,而“Closed”则表示门禁处于关闭状态。我们可以使用以下语句对门禁系统进行访问请求和状态控制: access(id, access_dict)control(id, status, access_dict)。访问请求命令会返回“Access Granted”或“Access Denied”,并自动关闭门禁,如果门禁系统找到该ID并且处于开启状态。状态控制命令会将门禁状态更改为Open或Closed,并返回“Control Successful”或“Access Denied”如果该ID不存在。

注意,我们还可以通过在全局范围内定义access_dict变量来将这个字典传递给访问请求和状态控制函数,而不是作为参数。