new to python - trouble calling a function from another function

Brandon McCombs none at none.com
Thu Aug 5 11:15:48 EDT 2010


Jon Clements wrote:
> On 5 Aug, 08:25, Brandon McCombs <n... at none.com> wrote:
>> Hello,
>>
>> 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?
>>
>> thanks
>>
>> sorry about the formatting
>>
>> ---------------------------------------------
>> class Elevator(Process):
>> def __init__(self,name):
>>         Process.__init__(self,name=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, self
>>                 reactivate(p)
>>                 p.inBuilding()
>>               else:
>>                 self.goUp()
>>
>> def checkQueue(self):
>>         if (len(self.passengerWaitQ)) > 0 and len(self.passengerList) <
>> MAXCAPACITY:
>>         if len(self.passengerWaitQ) < MAXCAPACITY:
>>             self.newPassengers = len(self.passengerWaitQ)
>>         else:
>>              self.newPassengers = MAXCAPACITY - len(self.passengerList)
>>         for i in range(0,self.newPassengers):
>>           self.passengerList.append(self.passengerWaitQ.pop())
>>         self.goUp()
> 
> 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...?
> 
> hth
> 
> Jon.
> 

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



More information about the Python-list mailing list