Skip to content

Instantly share code, notes, and snippets.

@mmahmoudian
Created November 16, 2014 19:42
Show Gist options
  • Save mmahmoudian/ce896d70799cf6f68013 to your computer and use it in GitHub Desktop.
Save mmahmoudian/ce896d70799cf6f68013 to your computer and use it in GitHub Desktop.
"""
Author: Mehrad Mahmoudian
Date: 17-Jan-2013
A simple assignment
"""
class CarPark:
def __init__(self, room, reserved): # Constructor
if reserved > room :
print "number of reserved parkings should not be more than total space"
print "please start over"
self.reserve = reserved
self.space = room - reserved # check whether the typed the input correctly
self.nbrOfCars = 0
self.reservDict = {}
#for i in range(0,self.reserve): # creating empty dictionary with specific amount
# self.reservDict[i] = ''
# print i
print "parking created successfully !\n"
def reservation(self,plate_number) : # for assigning a car to an empty reserved place
if self.search_among_reserved(plate_number) == True : # check if there is already a parking reserved for this car
print "there is already a reserved parking for this car"
if len(self.reservDict) >= self.reserve : # check if there is empty reservable space left.
print "sorry, no more reserved space left !"
else:
self.reservDict[plate_number] = False # set the plate number as key because of the dict.has_key(key) and False means it's not filled yet
print 'reservation for "' + plate_number + '" is done.'
def parkOneCar(self, plate_number): # Method for parking a car
if self.search_among_reserved(plate_number):
if self.reservDict[plate_number] == False :
self.reservDict[plate_number] = True
print '"'+plate_number+'" parked in reserved parking.'
else:
print "There is a car parked with the same plate !!\n Check your input again."
else:
if self.nbrOfCars < self.space:
self.nbrOfCars = self.nbrOfCars + 1
print "car is parked"
else:
print "No room for new car. Drive out some cars first."
def driveOutOneCar(self, plate_number): # Method for parking a car
if self.search_among_reserved(plate_number):
if self.reservDict[plate_number] == True :
self.reservDict[plate_number] = False
print '"'+plate_number+'" drived out.'
else:
print "There is no car with such plate number !!\n Check your input again."
else:
if self.nbrOfCars > 0:
self.nbrOfCars = self.nbrOfCars - 1
else:
print "No cars to drive out !"
def search_among_reserved(self, plate_number): # Method to search in reserved dictionary
if plate_number == '':
print "Please enter the plate number properly."
else:
return self.reservDict.has_key(plate_number)
def parking_status(self):
print "Number of free normal parking lots:", self.space - self.nbrOfCars ,"/", self.space
print "Number of reservable parkings:", self.reserve - len(self.reservDict) ,"/", self.reserve
reserved_car_counter = 0
for i in self.reservDict :
if self.reservDict[i] == True :
reserved_car_counter += 1
print "Number of filled reserved parkings:", reserved_car_counter ,"/", len(self.reservDict)
#----------------------------------------------
def get_command():
operator_command = raw_input("\nwhat do you want to do?\n Type (not case sensitive):\n [Reserve], [Drive in], [Drive out], [Status], [Quit]\n> ")
if operator_command.lower() == "reserve" :
input_plate = raw_input("please type the plate number for reservation:\n> ")
my_parking.reservation(input_plate)
get_command();
elif operator_command.lower() == "drive in" :
input_plate = raw_input("please type the plate number to park:\n> ")
my_parking.parkOneCar(input_plate)
get_command();
elif operator_command.lower() == "drive out" :
input_plate = raw_input("please type the plate number to drive out:\n> ")
my_parking.driveOutOneCar(input_plate)
get_command();
elif operator_command.lower() == "status" :
my_parking.parking_status()
get_command();
elif operator_command.lower() == "quit" :
print "Goodbye !"
else:
print "invalid input\n\n> ";
get_command();
num_total_space = input('Please type the total parking space:\n')
num_reserve_space= input('Please type the total reserve space:\n')
my_parking = CarPark(num_total_space, num_reserve_space)
print "---------------[ Configuration Done ! ]---------------\n\n"
get_command()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment