关于停车场的代码

时间:2016-04-16 16:52:56

标签: python arrays queue

笑声停车场包含一条可容纳十辆汽车的单车道。汽车到达车库的南端,从北端出发。如果客户到达接车 那不是最北端的,他车子以北的所有车都搬出去了,他的车被赶出去了, 其他汽车的恢复顺序与原来的顺序相同。 每当汽车离开时,南方的所有汽车都向前移动。这就是所有的 所有空的空间都在车库的南部。 编写python程序来读取一组输入行。每行包含“a”到达或 “d”出发和车牌号码。假设汽车按顺序到达和离开 由输入指定。每次汽车到达时,程序都应该打印一条消息 出发。当汽车到达时,按摩应指明是否有车的空间 在车库里。如果没有车的空间,汽车会等到有空间或直到出发线为止 读车了。当房间可用时,应打印另一个按摩。当一辆车 离开时,按摩应该包括汽车在车库内移动的次数 (包括出发本身但不是到达),如果汽车离开,这个数字是0 等候线。

这是我的代码。我陷入了代码的中间位置。我排队停车。当中间车离开时,我不知道如何重新组装汽车。我想要一种方法来打印汽车在公园出发前的行动次数。所以任何人都可以帮助我?“

class Stack:
    def __init__(self):
        self.items =[]

    def isEmpty(self):
        return self.items ==[]

    def push(self,item):
        self.items.append(item)

    def pop(self):
        return self.items.pop()

    def peek(self):
        return self.items[len(self.items)-1]

    def size(self):
        return len(self.items)

class Queue:
    def __init__(self,maxSize):
        self.items =[]
        self._count = 0
        self._front = 0
        self._back = maxSize - 1


    def isEmpty(self):
        return self.items ==[]

    def enqueue(self, item):
        self.items.insert(0,item)

    def dequeue(self):
        return self.items.pop()

    def size(self):
        return len(self.items)

    def index(self,item):
        return self.items.index(item)



q1park = Queue(maxSize=10)
q2wait= Queue()
q3assemble= Queue() 

x =raw_input("Car number: ")

def cararrival():
    if x[0]=="a":
        while q1park.size ==10:
            q1park.enqueue(x[1:len(x)])
            print(x + "car is arrived")

            if q1park.size ==10:
                print("No room available in the garage")

                x1=raw_input("do you want to wait: ")
                if x1=="yes":
                    q2wait.enqueue(x[1:len(x)])
                elif x1=="no":
                    print("see you next time")
               else:
                    print("Enter yes or no")


def cardepart():
    if x[0]=="d":
        if x[1:len(x)] in q1park:
            while not q1park.index(x[1:len(x)])==0:
                q3assemble.enqueue(q1park.dequeue())
                q3assemble.dequeue()

            while not q3assemble.isEmpty:

1 个答案:

答案 0 :(得分:1)

我对上述问题的回答就在这里。

#creating a class for car
class Car:

    #initialization and creating properties
    def __init__(self, licenseNum):
        self.licenseNum = licenseNum
        self.moveCount = 0

    #increase the moveCount by 1
    def move(self):
        self.moveCount += 1

    #get information to a string
    def toString(self):
        return "Car {0}\tmoves:{1}".format(self.licenseNum, self.moveCount)


#creating queue class for cars
class CarQueue:

    #initialization
    def __init__(self):
        self.carList = []

    #add car to the queue
    def enqueue(self, car):
        self.carList.append(car)

    #remove car from the queue
    def dequeue(self):
        return self.carList.pop(0)

    #return the car by license plate number
    def getCar(self, licenseNum):
        for car in self.carList:
            if car.licenseNum == licenseNum:
                return car

    #check whether license plate number is in the car list or not
    def contains(self, licenseNum):
        return self.getCar(licenseNum)!=None

    #remove car from the list   
    def remove(self, car):
        if self.contains(car.licenseNum):
            self.carList.remove(car)

    #return the number of cars in the list  
    def size(self):
        return len(self.carList)

    #check whether list is empty of not
    def isEmpty(self):
        return self.size()==0

    #return the index of the car in the list
    def positionOf(self, car):
        return self.carList.index(car)

    #move forward all the cars in southern side of the position.
    def moveCarsFrom(self, position):
        for c in self.carList[position:]:
            c.move()

    #get information to a string
    def toString(self):
        carNameList = []
        for car in self.carList:
            carNameList.append(car.licenseNum)
        return "[{0}]".format(" ".join(carNameList))


#creating class for the garage
class Garage:

    #initialization with the given number of rooms in the garage
    def __init__(self, maxSize):
        self.carQueue = CarQueue()
        self.maxSize = maxSize

    #add car to the list, when arrive
    def arrive(self, car):
        self.carQueue.enqueue(car)

    #remove car from the list and record movements of other cars to the southern side, when depart
    def depart(self, car):
        position = self.carQueue.positionOf(car)
        self.carQueue.remove(car)
        self.carQueue.moveCarsFrom(position)

    #check whether the garage is full or not
    def isFull(self):
        return self.carQueue.size()==self.maxSize



#create new garage which can hold up to 10 cars
garage = Garage(10)

#create new CarQueue to store waiting cars
waiting = CarQueue()

header = """
##############################################
               PARKING GARAGE
##############################################
Welcome!
"""

help = """
you have to input your command and press enter.
[a/d] [LICENSE PLATE NUMBER],   for car arrival or departure
    a,  arrival
    d,  departure

help,   show instructions
exit,   quit the programme
show,   show the queues in the garage and the waiting line
"""

#display the header
print("{0}Instructions:{1}\nPlease enter the command...".format(header, help))

#infinity loop to get user inputs again and again
while True:

    #get user command
    command = raw_input("\nlaughs> ")

    #excecuting general commands
    if command=="exit":
        print("Good bye!\n")
        break
    elif command=="help":
        print(help)
        continue
    elif command=="show":
        print("Garage        {0}: {1}".format(garage.carQueue.size(), garage.carQueue.toString()))
        print("Waiting line  {0}: {1}".format(waiting.size(), waiting.toString()))
        continue

    #get seperately the action character ('a' or 'd') and the license plate number from the command
    action = ""
    licenseNum = ""
    try:
        action,licenseNum = command.split()
    except:
        #show error message for invalid inputs
        print("Invalid input! Try again. Enter 'help' for instructions")