\(\newcommand{L}[1]{\| #1 \|}\newcommand{VL}[1]{\L{ \vec{#1} }}\newcommand{R}[1]{\operatorname{Re}\,(#1)}\newcommand{I}[1]{\operatorname{Im}\, (#1)}\)
For loops¶
See: Conditionals, functions and loops for an introduction to while
loops.
To start, let us redefine the function to do a coin toss:
>>> import random
>>> def coin_toss():
... random_no = random.random()
... if random_no < 0.5:
... our_result = 0
... else:
... our_result = 1
... return our_result
In loops and functions, we have already used while
loops
to collect four coin toses. Just to remind you, the while
loop looks like
this:
>>> # We use a counter to keep track of how many times we've run
>>> counter = 0
>>> coin_tosses = []
>>> while counter < 4:
... result = coin_toss()
... coin_tosses.append(result)
... counter = counter + 1
...
>>> coin_tosses
[1, 1, 0, 1]
In face, people writing Python code do not often use while
loops. That is
because Python has a particularly nice and general for
loop. Here is the
way we would write the while
loop above, using a for
loop:
>>> coin_tosses = []
>>> for i in range(4):
... result = coin_toss()
... coin_tosses.append(result)
...
>>> coin_tosses
[0, 0, 1, 0]
The take-home¶
If you want to repeat something N times in Python, then use a for
loop,
that starts with something like for i in range(N):
.
That’s the quick version. If you want to understand more about the range
and the i
in that statement, read on.
More detail¶
Notice the use of range
. The range
function here gives us a sequence
of numbers, starting at 0, and going up to, but not including 4. Therefore,
the range
function is giving us 4 numbers, 0, 1, 2, 3:
>>> list(range(4))
[0, 1, 2, 3]
Now notice the line for i in range(4)
. The for loop will take each of the
numbers 0 through 3, and put it into the variable we’ve named i
. This is
the loop variable. You can see better what is going on if we collect the
loop variable value in the for loop, instead of doing the coin toss:
>>> variable_values = []
>>> for i in range(4):
... variable_values.append(i)
...
>>> variable_values
[0, 1, 2, 3]
We can see the same thing, if we call the print
function at each iteration
of the loop, to show the value of i
. print
displays the value as
text.
>>> for i in range(4):
... # Show the value of i at each iteration of the loop
... print('Value of i is', i)
...
Value of i is 0
Value of i is 1
Value of i is 2
Value of i is 3