Control Flow#

These notes follow the official python tutorial pretty closely: http://docs.python.org/3/tutorial/

To write a program, we need the ability to iterate and take action based on the values of a variable. This includes if-tests and loops.

Python uses whitespace to denote a block of code.

While loop#

A simple while loop—notice the indentation to denote the block that is part of the loop.

Here we also use the compact += operator: n += 1 is the same as n = n + 1

n = 0
while n < 10:
    print(n)
    n += 1
0
1
2
3
4
5
6
7
8
9

This was a very simple example. But often we’ll use the range() function in this situation. Note that range() can take a stride.

for n in range(2, 10, 2):
    print(n)
2
4
6
8

if statements#

if allows for branching. python does not have a select/case statement like some other languages, but if, elif, and else can reproduce any branching functionality you might need.

x = 0

if x < 0:
    print("negative")
elif x == 0:
    print("zero")
else:
    print("positive")
zero

Iterating over elements#

it’s easy to loop over items in a list or any iterable object. The in operator is the key here.

alist = [1, 2.0, "three", 4]
for a in alist:
    print(a)
1
2.0
three
4
for c in "this is a string":
    print(c)
t
h
i
s
 
i
s
 
a
 
s
t
r
i
n
g

We can combine loops and if-tests to do more complex logic, like break out of the loop when you find what you’re looking for

n = 0
for a in alist:
    if a == "three":
        break
    else:
        n += 1

print(n)
2

(for that example, however, there is a simpler way)

print(alist.index("three"))
2

for dictionaries, you can also loop over the elements

my_dict = {"key1":1, "key2":2, "key3":3}

for k in my_dict:
    print(f"key = {k}, value = {my_dict[k]}")
key = key1, value = 1
key = key2, value = 2
key = key3, value = 3

sometimes we want to loop over a list element and know its index – enumerate() helps here:

for n, a in enumerate(alist):
    print(n, a)
0 1
1 2.0
2 three
3 4