Brandon McCombs wrote: > 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. [...] > sorry about the formatting
While I can certainly forgive you the formatting (my problem is rather that you didn't reduce the code to the smallest possible example), Python wont. Python is a language where whitespace is significant and can subtly change the meaning of your code. Example: > for i in range(0,self.newPassengers): > self.passengerList.append(self.passengerWaitQ.pop()) > self.goUp() The formatting here is completely removed, but there are two conceivable ways this could be formatted: # variant 1 for i in range(0,self.newPassengers): self.passengerList.append(self.passengerWaitQ.pop()) self.goUp() #variant 2 for i in range(0,self.newPassengers): self.passengerList.append(self.passengerWaitQ.pop()) self.goUp() Someone already mentioned PEP 8 (search the web!). These PEPs could be called the standards governing Python behaviour, and PEP 8 actually defines several things concerning the formatting of sourcecode. Apply it unless you have a good reason not to. Further, you should run Python with "-t" as argument on the commandline. This will give you warnings when it encounters inconsistent tab/spaces usage. This can make a difference. Example: #variant 3 for i in range(0,self.newPassengers): self.passengerList.append(self.passengerWaitQ.pop()) <TAB>self.goUp() If your editor is set to four spaces per tab, this will look like variant 2, with 8 spaces it will look like variant 1. I don't know (and don't care, since PEP-8 mandates four spaces) which interpretation Python actually uses. Lastly, you can simplify your check_queue() function. First, determine the number of free places inside the elevator. Then, you simply append that many passengers from the waiting list to the passenger list: free = MAX_CAPACITY - len(self.passengers) new_passengers = self.passenger_wait_queue[:free] self.passenger_wait_queue = self.passenger_wait_queue[free:] self.passengers += new_passengers This uses the fact that list indices are automatically truncated to a valid range, so requesting the elements 0 to 10 from a 5-element list will only yield those five elements, not raise an exception. It's up to you though which version is clearer to you. I would perhaps bail out if "free == 0" and then also not call go_up() lateron. Cheers and good luck! Uli -- Sator Laser GmbH Geschäftsführer: Thorsten Föcking, Amtsgericht Hamburg HR B62 932 -- http://mail.python.org/mailman/listinfo/python-list