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: >>> >>> 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 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. Geremy Condra
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.
First
|
Prev
|
Pages: 1 2 3 Prev: ██▓▒░░ *** CREDIT CARD *** ░▒░▒▓██ Next: subprocess escaping POpen?! |