[Tutor] While Loop Question

Steven D'Aprano steve at pearwood.info
Thu May 11 10:15:15 EDT 2017

```On Wed, May 10, 2017 at 06:53:21PM -0700, Rafael Skovron wrote:
> Sorry I left out the indents in my previous email. It seems like j is
> always reset to zero. Why does j vary?

Because you run code that adds 1 to j.

> Are there two different instances of j going on?

No. Try to run the code in your head and see what happens. See below:

> for i in range(1, 5):
>     j=0
>     while j < i:
>          print(j, end = " ")
>          j += 1

We start by setting i = 1, then the body of the for-loop begins. That
sets j = 0, and since 0 < 1, we enter the while-loop.

Inside the while-loop, we print j (0), then add 1 to j which makes it 1.
Then we return to the top of the while-loop. Since 1 is NOT less than 1,
we exit the while-loop and return to the top of the for-loop.

Now we set i = 2, and continue into the body of the for-loop. That sets
j = 0 (again!) and since 0 < 2, we enter the while-loop.

Inside the while-loop, we print j (0), then add 1 to j which makes it 1.
Then we return to the top of the while-loop. Since 1 < 2, we continue
inside the body, print j (1), then add 1 to j which makes it 2. Since 2
is not LESS than 2, we exit the while-loop and return to the top of the
for-loop.

Now we set i = 3, and continue into the body of the for-loop. That sets
j = 0 (again!) and since 0 < 3, we enter the while-loop.

Inside the while-loop, we follow the same steps and print 0, then 1,
then 2, then exit the while-loop and return to the top of the for-loop.

Now we set i = 4, and again continue into the while-loop to print 0, 1,
2 and finally 3, then exit the while-loop and return to the top of the
for-loop, which is now complete.

--
Steve
```