📅  最后修改于: 2023-12-03 15:12:34.982000             🧑  作者: Mango
这是一道GATE 2017 MOCK II的编程题,需要考生编写一个程序来模拟门的打开和关闭。
题目描述非常简单。要求编写一个程序,对一个门进行操作,实现打开和关闭两个功能,并可以查询当前门的状态(打开或关闭)。
具体要求如下:
输入门的编号(N),以及门的初始状态(0或1)。
程序需要支持以下三种操作:
程序应当一直运行,直到接收到退出命令(如果使用命令行,则应当输入 ctrl+c)
操作结果需要输出,例如:
门1已打开。
门2已关闭。
门3状态:关闭。
该题目考查的是对数据结构和算法的理解和应用,具体实现思路如下:
定义一个门类Gate,包括门的编号、状态、打开和关闭的方法以及查询状态的方法。
程序中需要定义一个门的集合,可以使用数组或者其他的数据结构来存放门的信息。
根据用户输入的命令选择对应的操作,调用相应的方法实现门的打开、关闭或者查询状态。
如果用户输入错误的命令,程序需要提示用户重新输入。
程序需要一直运行,可以使用while循环实现。
class Gate:
def __init__(self, number, status):
self.number = number
self.status = status # 0表示关闭,1表示打开
def open(self):
self.status = 1
def close(self):
self.status = 0
def get_status(self):
if self.status == 1:
return "已打开"
else:
return "已关闭"
def main():
n = int(input("请输入门的数量:"))
gates = [Gate(i, 0) for i in range(1, n + 1)]
while True:
command = int(input("请输入操作命令:1-打开门,0-关闭门,2-查询门的状态,3-退出\n"))
if command == 3:
break
gate_num = int(input("请输入门的编号:"))
if gate_num < 1 or gate_num > n:
print("门的编号错误,请重新输入")
continue
gate = gates[gate_num - 1]
if command == 0:
gate.close()
print("门{}已关闭。".format(gate_num))
elif command == 1:
gate.open()
print("门{}已打开。".format(gate_num))
elif command == 2:
print("门{}状态:{}。".format(gate_num, gate.get_status()))
else:
print("错误的操作命令,请重新输入")
if __name__ == '__main__':
main()
以上的代码示例为Python语言实现,主要使用了类和集合的概念。 其中定义了Gate类来表示一个门对象,代码实现比较简洁、易懂。