Subsections

# While loops

Presenting our first control structure. Ordinarily, the computer starts with the first line and then goes down from there. Control structures change the order that statements are executed or decide if a certain statement will be run. Here's the source for a program that uses the while control structure:

```a = 0
while a < 10:
a = a + 1
print(a)
```

And here is the extremely exciting output:

```1
2
3
4
5
6
7
8
9
10
```

(And you thought it couldn't get any worse after turning your computer into a five dollar calculator?) So what does the program do? First it sees the line a = 0 and makes a zero. Then it sees while a < 10: and so the computer checks to see if a < 10. The first time the computer sees this statement a is zero so it is less than 10. In other words while a is less than ten the computer will run the indented statements.

Here is another example of the use of while:

```a = 1
s = 0
print('Enter Numbers to add to the sum.')
print('Enter 0 to quit.')
while a != 0:
print('Current Sum:', s)
a = float(input('Number? '))
s = s + a
print('Total Sum =', s)
```

The first time I ran this program Python printed out:

```  File "sum.py", line 3
while a != 0
^
SyntaxError: invalid syntax
```
I had forgotten to put the : after the while. The error message complained about that problem and pointed out where it thought the problem was with the `SPMquot`^" . After the problem was fixed here was what I did with the program:
```Enter Numbers to add to the sum.
Enter 0 to quit.
Current Sum: 0
Number? 200
Current Sum: 200.0
Number? -15.25
Current Sum: 184.75
Number? -151.85
Current Sum: 32.9
Number? 10.00
Current Sum: 42.9
Number? 0
Total Sum = 42.9
```

Notice how print('Total Sum =', s) is only run at the end. The while statement only affects the line that are indented (a.k.a. have spaces at the front). The != means does not equal so while a != 0: means until a is zero run the indented statements that are afterwards. (Note: be consistent, always use spaces or tabs to indent, never mix them.)

Now that we have while loops, it is possible to have programs that run forever. An easy way to do this is to write a program like this:

```while 1 == 1:
print("Help, I'm stuck in a loop.")
```

This program will output Help, I'm stuck in a loop. until the heat death of the universe or you stop it. The way to stop it is to hit the Control (or Ctrl) button and `c' (the letter) at the same time. This will kill the program. (Note: sometimes you will have to hit enter after the Control C.)

# Examples

Fibonnacci.py

```#This program calulates the fibonnacci sequence
a = 0
b = 1
count = 0
max_count = 20
while count < max_count:
count = count + 1
#we need to keep track of a since we change it
old_a = a
old_b = b
a = old_b
b = old_a + old_b
#Notice that end=' ' in a print statement keeps it
# from switching to a new line
print(old_a, end=' ')
print()
```

Output:

```0 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181
```

```# Waits until a password has been entered.  Use control-C to break out with out

#Note that this must not be the password so that the
# while loop runs at least once.

#note that != means not equal
```Password:auo