\(\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