new to python - trouble calling a function from another function

Jon Clements joncle at googlemail.com
Fri Aug 6 23:10:35 CEST 2010


On 5 Aug, 16:15, Brandon McCombs <n... at none.com> wrote:
> 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

Heard of something called 'sentences' that start with a capital letter
that end with (mostly) a full stop?

Anyway, what I suggested was that your design is massively flawed. You
ask a group, that's friendly to newbies for help, and you receive
advice... then "bitch" about it.

Indeed, the intention was to make you re-think the whole program --
then you'd have learnt more. Focusing on one thing when it's the wrong
design anyway is a *bad thing*.

Remember, you've posted to a list that have members that have done 30+
years of programming in a professional role.

Just my 2c,

Jon.



More information about the Python-list mailing list