Python Forum

Full Version: elevator simulator...whats the wrong at this code?
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
import random

class Lift(object):
    def _init_(self,floors,passengers_in,direction  ="up",cur_floor=1):
        self.total_floors = floors
        self.reg_list = []
        self.floor = cur_floor
        self.direct = direction
    def move(self):
        if self.total_floors == self.floors:
            self.direct = "down"
        if self.direct == "up" :
            self.floor += 1
        else :
            self.floor -= 1
    def get_in(self,passenger):
        self.reg_list.append(passenger)
    def get_out(self,passenger):
        self.reg_list.remove(passenger)
        
class Building(object):
    def _init_(self,floors,passengers,lift):
        self.total_floors=floors
        self.passengers=passengers
    def run(self):
        while lift.floor != 0:
            for passenger in self.passengers:
                print(passenger)
                if lift.floor == passenger.on_floor:
                    lift.reg_list.append(passenger)
                    passenger.indicator = 1
                elif lift.floor == passenger.going_floor:
                    lift.reg_list.remove(passenger)
                    passenger.indicator = 0
                    passenger.fin = 1
            lift.move()

    def output(self):
        pass

class Passenger(object):
    def _init_(self,ID,floors,cur_floor=0,end_floor=0,in_lift=0, finished=0):
        self.ident = ID
        self.indicator = in_lift
        self.fin = finished
        cur_floor = random.randint(1, floors)
        self.on_floor = cur_floor
        end_floor = random.randint (1, floors)
        while end_floor == cur_floor:
            end_floor = random.randint(1, floors)
        self.going_floor = end_floor


passenger_count = int(input("How many passengers are in the building?: "))
floor_count = int(input("How many floors does the building have?: "))
pass_list=[]
for i in range(1,passenger_count+1):
    pass_list.append(Passenger(i,floor_count))
elevator = Elevator(floor_count,cus_list)
building = Building(floor_count,cus_list, elevator)
What is wrong with this code ?
Explain what you expect to happen and what is actually happening and any errors received in error tags.
Note that building.run isn't going to do anything unless you call it. I think you will get an error when you try though, as lift is not defined in run, nor is it saved in Building.__init__.
import random

#Σχεδιασμός 3 κλάσεων,των Lift,Building και Passenger

class Lift(object):
    def __init__(self,floors,passengers_in,direction  ="up",cur_floor=1):
        self.total_floors = floors
#Ο ανελκυστήρας αρχικά είναι άδειος        
        self.reg_list = []
        self.floor = cur_floor
        self.direct = direction

        
    def move(self):
        if self.total_floors == self.floors:
            self.direct = "down"
        if self.direct == "up" :
            self.floor += 1
        else :
            self.floor -= 1
    def get_in(self,passenger):
        self.reg_list.append(passenger)
    def get_out(self,passenger):
        self.reg_list.remove(passenger)
        
class Building(object):
    def __init__(self,floors,passengers,lift):
        self.total_floors=floors
        self.passengers=passengers
    def run(self):
        while lift.floor != 0:
            for passenger in self.passengers:
                print(passenger)
                if lift.floor == passenger.on_floor:
                    lift.reg_list.append(passenger)
                    passenger.indicator = 1
                elif lift.floor == passenger.going_floor:
                    lift.reg_list.remove(passenger)
                    passenger.indicator = 0
                    passenger.fin = 1
            lift.move()

    def output(self):
        pass

class Passenger(object):
    def __init__(self,ID,floors,cur_floor=0,end_floor=0,in_lift=0, finished=0):
        self.ident = ID
        self.indicator = in_lift
        self.fin = finished
        cur_floor = random.randint(1, floors)
        self.on_floor = cur_floor
        end_floor = random.randint (1, floors)
        while end_floor == cur_floor:
            end_floor = random.randint(1, floors)
        self.going_floor = end_floor


passenger_count = int(input("How many passengers are in the building?: "))
floor_count = int(input("How many floors does the building have?: "))
pass_list=[]
for i in range(1,passenger_count+1):
    pass_list.append(Passenger(i,floor_count))
lift = Lift(floor_count,pass_list)
building = Building(floor_count,pass_list, lift)
This sounds like homework where you dont put any effort in
While that sounds possible, it could also be that the OP simply isn't very familiar with English.