【问题标题】:Code about car park停车场代码
【发布时间】:2016-04-16 16:52:56
【问题描述】:

笑声停车场包含一条最多可停放十辆汽车的车道。汽车到达车库的南端,然后从北端离开。如果客户来取车 那不是最北边,他车北边的车都搬出去了,他的车开出去了, 其他汽车按照原来的顺序恢复。 每当一辆车离开时,所有向南的汽车都向前移动。所以,在所有 次所有的空地都在车库的南部。 编写python程序来读取一组输入行。每行包含一个“a”到达或 “d”出发和车牌号。假设汽车按顺序到达和离开 由输入指定。程序应在每次汽车到达时打印一条消息或 离开。有车到的时候,按摩要注明车子有没有空位 在车库里。如果没有车位,车会等到有车位或出发线 为车读书。当房间可用时,应打印另一个按摩。当一辆车 离开时,按摩应包括汽车在车库内移动的次数 (包括出发本身但不包括到达),如果汽车从 排队等候。

这是我的代码。我卡在代码中间。我排队停车。当中间车离开时,我不知道如何重新组装汽车。我想要一种在汽车离开公园之前打印移动次数的方法。所以有人可以帮助我吗?`

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:

【问题讨论】:

    标签: python arrays queue


    【解决方案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")
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-02-08
      • 2016-04-29
      • 2020-12-01
      • 2012-07-27
      • 1970-01-01
      • 2022-10-12
      • 2021-04-20
      相关资源
      最近更新 更多