[Tutor] while Loop

Luke Paireepinart rabidpoobear at gmail.com
Wed Jul 18 17:57:33 CEST 2007


Darren Williams wrote:
> Hi all,
>  
> I'm writing a calculator for an online game that I used to play but 
> don't seem to be able to break out of the while loop, the program will 
> just go over and over the loop, crashing the program and I don't know 
> if Python is just really slow at this type of thing or i'm doing it 
> completely wrong in Python (the equivalent code in JavaScript works fine).
I don't think you're doing it completely wrong, just partially :)
And I doubt that, if it's quick in Javascript, it will be any slower in 
Python, since Javascript is interpreted as well, but by the browser 
while it's simultaneously downloading the content of the webpage and 
rendering it to the screen.
Also, I'm pretty sure the code here is not equivalent to the Javascript 
code you included (specific remarks below.)
>  
> Python code -
>  
> def main():
>     usedPocketsOne = 192000
>     junkiesOne = 500
>     labSpaceOne = 0
>  
>     resultOne = 0
>     while usedPocketsOne > (junkiesOne - labSpaceOne) * 17:
I don't know much about Javascript, but doesn't it have order of operations?
For example,
usedPocketsOne > junkiesOne - labSpaceOne * 17
is generally assumed to be
x = labSpaceOne * 17
y = junkiesOne - x
usedPocketsOne > y


Whereas your Python equivalent, with the parenthesis,
usedPocketsOne > (junkiesOne - labSpaceOne) * 17

changes the order of operations (forces the subtraction before the 
multiplication)
and hence changes the resulting value.  That is, unless Javascript 
evaluates left-to-right with no operator heirarchy (which I would be 
saddened to learn, if it's true.)
>         resultOne = resultOne + 1
>         usedPocketsOne = (UsedPocketsOne - junkiesOne + labSpaceOne) * 17
This shouldn't even run - you should get a syntax error because 
UsedPocketsOne is not defined anywhere else in the program (that you've 
shown us.)
Perhaps you're running it in IDLE with no subprocess and some value for 
UsedPocketsOne is hanging around (from previous edits of the program, or 
interpreter session, or something else) and mucking up the works?
-Luke




More information about the Tutor mailing list