Created
November 16, 2014 19:42
-
-
Save mmahmoudian/ce896d70799cf6f68013 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
""" | |
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