From: geremy condra on 6 Aug 2010 17:47
On Thu, Aug 5, 2010 at 8:15 AM, Brandon McCombs <none(a)none.com> wrote:
> Jon Clements wrote:
>> On 5 Aug, 08:25, Brandon McCombs <n...(a)none.com> wrote:
>>> I'm building an elevator simulator for a class assignment. I recently
>>> ran into a roadblock and don't know how to fix it. For some reason, in
>>> my checkQueue function below, the call to self.goUp() is never executed..
>>> It is on the last line of code I pasted in. I can put print statements
>>> before and after the call and I have a print statement in goUp() itself..
>>> Only the print statements before and after the call are executed. The
>>> one inside goUp() is never executed because goUp() never seems to be
>>> executed. How can that be? I don't get any errors when the script
>>> executes. Surely this isn't some limitation I'm encountering?
>>> sorry about the formatting
>>> class Elevator(Process):
>>> def __init__(self,name):
>>> self.numPassengers = 0
>>> self.passengerList = 
>>> self.passengerWaitQ = 
>>> self.currentFloor = 1
>>> self.idle = 1
>>> self.newPassengers = 0
>>> def goUp(self):
>>> print "here"
>>> bubbleSort(self.passengerList, len(self.passengerList))
>>> self.currentFloor += 1
>>> if len(self.passengerList) > 0:
>>> for p in self.passengerList:
>>> if self.currentFloor == p.destination:
>>> yield (p.destination - self.currenteFloor) * TRAVELTIME,
>>> def checkQueue(self):
>>> if (len(self.passengerWaitQ)) > 0 and len(self.passengerList) <
>>> if len(self.passengerWaitQ) < MAXCAPACITY:
>>> self.newPassengers = len(self.passengerWaitQ)
>>> self.newPassengers = MAXCAPACITY - len(self.passengerList)
>>> for i in range(0,self.newPassengers):
>> Hi Brandon,
>> Nice one at having a good crack at coding before posting!
>> From your posted code, I'm struggling to see what's trying to be
>> taught to you for this class assignment.
> not relevant at this point
>> As a note it'll be worth reading PEP 8 regarding naming conventions,
>> because it looks very Java-ish to me!
> ok but not relevant
>> (I might be taking too much a real-world approach in the following,
>> but do with it as you will...)
>> I'm assuming that MAXCAPACITY and TRAVELTIME are globals somewhere.
>> Although what I'm thinking is that different Elevators will have
>> different capacities and different floors they service. An Elevator is
>> *not* going to know its number of passengers (the most it could do is
>> capacity based on weight restrictions) therefore it's not going to
>> know the number of new passengers on each floor either.
> okay but not relevant to the problem at hand
>> A couple of things that'd be worthwhile:
>> 1) Post the requirements for your assignment - what's it supposed to
>> output etc...
> that isn't relevant for determining at the python level why a function
> simply isn't being called
>> 2) Go find an elevator, take a pen and pad with you, and stand in it
>> for 30 mins or so, and see how the real thing deals with situations
>> and make notes. ie, does it queue requests, or decide to take the next
>> nearest floor, when does it stop and open etc...?
> actually it doesn't help at all since you decided to focus on everything but
> my actual question of why a function call wasn't working but rather question
> the validity of the program itself
This is too bad. You looked like you were all set to be the poster
child for how to ask a good question here, and now you've blown it.
From: Michael Torrie on 7 Aug 2010 02:10
On 08/05/2010 01:25 AM, Brandon McCombs wrote:
> How can that be? I don't get any errors when the script
> executes. Surely this isn't some limitation I'm encountering?
> <snipped code>
> yield (p.destination - self.currenteFloor) * TRAVELTIME, self
To be succinct, goUp() is apparently a generator function. "yield"
means the function needs to be iterated over; calling it just sets up
the generator and returns a generator object. So yeah your goUp() call
will appear (and actually does) do nothing at all.