new to python - trouble calling a function from another function
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,
More information about the Python-list