📌  相关文章
📜  门| Sudo GATE 2020 Mock I(2019年12月27日)|第58章(1)

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

题目介绍:门

题目描述

你需要实现一个门,这个门可以被打开和关闭。门的状态必须被保存。

门必须有以下方法:

  • open():打开门。
  • close():关闭门。
  • is_open():如果门当前是开的,则返回True,否则返回False。
  • is_closed():如果门当前是关的,则返回True,否则返回False。
示例
door = Door()
assert not door.is_closed()
assert door.is_open()

door.close()
assert door.is_closed()
assert not door.is_open()

door.open()
assert not door.is_closed()
assert door.is_open()
注意事项
  • 初始状态下,门是打开的。
  • 不需要支持锁定门的功能。
  • 代码应该易于理解。
解题思路

创建一个 Door 类,用于处理门的打开和关闭,同时跟踪门的状态。为了保存门的状态,我们可以使用一个布尔值来表示门的状态。

创建 Door 类后,我们需要创建 opencloseis_openis_closed 实例方法,用于操作门的行为,并获取门的状态。

openclose 方法中,我们只需要改变保存门状态的变量,来达到我们操作门的目的。

is_openis_closed 方法中,我们可以检查当前门状态,并返回相应的值。

实现代码
class Door:
    def __init__(self):
        self._is_open = True

    def open(self):
        self._is_open = True

    def close(self):
        self._is_open = False

    def is_open(self):
        return self._is_open

    def is_closed(self):
        return not self._is_open
测试代码
def test_door():
    door = Door()
    assert not door.is_closed()
    assert door.is_open()

    door.close()
    assert door.is_closed()
    assert not door.is_open()

    door.open()
    assert not door.is_closed()
    assert door.is_open()

test_door()
结果分析

test_door 测试方法运行通过。

此实例说明了如何创建一个包含状态跟踪的简单类。门可以根据操作进行打开或关闭,并可以查询其状态。