📅  最后修改于: 2023-12-03 15:42:17.620000             🧑  作者: Mango
这道题目来自于 2015 年 GATE-CS 的题目集,要求我们使用 Python 语言实现一个 door
类,该类可以模拟一个具有特定状态的门的行为。
门有三个状态:开、关和锁定。门的状态可以用整数 0
、1
和 2
来表示。门有两个操作:打开和关闭。门还有一个状态变量,该变量可以用布尔类型表示,表示门是否被锁定。
门的行为规则如下:
门类的接口如下:
class Door:
def __init__(self, state = 0, locked = False):
pass
def is_locked(self):
pass
def is_closed(self):
pass
def open(self):
pass
def close(self):
pass
其中,__init__
方法用于构造一个门对象,state
参数表示门的初始状态,取值为 0、1 或 2;locked
参数表示门的初始状态是否为锁定状态。
is_locked
方法用于判断门是否被锁定,返回一个布尔类型值。
is_closed
方法用于判断门是否关闭,返回一个布尔类型值。
open
方法用于将门打开,返回值为布尔类型,表示门是否被成功打开。
close
方法用于将门关闭,返回值为布尔类型,表示门是否被成功关闭。
根据题目中的行为规则,我们可以写出如下的 Door
类实现:
class Door:
def __init__(self, state = 0, locked = False):
self.state = state
self.locked = locked
def is_locked(self):
return self.locked
def is_closed(self):
return self.state == 0
def open(self):
if not self.locked:
if self.is_closed():
self.state = 1
return True
else:
return False
def close(self):
if not self.locked:
if not self.is_closed():
self.state = 0
return True
else:
return False
我们可以使用如下的代码片段来对 Door
类进行测试:
# 测试样例
door = Door()
assert door.is_closed() == True
assert door.is_locked() == False
door.locked = True
assert door.open() == False
assert door.close() == False
door.locked = False
assert door.open() == True
assert door.is_closed() == False
assert door.close() == True
assert door.is_closed() == True
其中,我们对门的初始化状态进行了测试,随后测试门是否能够被锁定,以及门的打开和关闭操作是否合法。