new to python - trouble calling a function from another function

Jon Clements joncle at googlemail.com
Thu Aug 5 05:50:05 EDT 2010


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.

As a note it'll be worth reading PEP 8 regarding naming conventions,
because it looks very Java-ish to me!

(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.

A couple of things that'd be worthwhile:

1) Post the requirements for your assignment - what's it supposed to
output etc...
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.




More information about the Python-list mailing list