Boston Python Workshop 8/Loops
For loops
Use a for
loop to do something to every element in a list.
>>> names = ["Jessica", "Adam", "Liz"] >>> for name in names: ... print(name) ... Jessica Adam Liz
>>> names = ["Jessica", "Adam", "Liz"] >>> for name in names: ... print("Hello " + name) ... Hello Jessica Hello Adam Hello Liz
if
statements inside for
loop
>>> for name in ["Alice", "Bob", "Cassie", "Deb", "Ellen"]: ... if name[0] in "AEIOU": ... print(name + " starts with a vowel.") ... Alice starts with a vowel. Ellen starts with a vowel.
Building up a list
Sometimes you want to build up a new list based on information about each element in an existing list. To do this, initialize an empty list before the for
loop, and append elements to the new list inside the for
loop:
>>> vowel_names = [] >>> for name in ["Alice", "Bob", "Cassie", "Deb", "Ellen"]: ... if name[0] in "AEIOU": ... vowel_names.append(name) ... >>> print(vowel_names) ['Alice', 'Ellen']
Using a counter
Sometimes you want to keep track of the number of occurrences of something, or a running total, as you loop through a list. To do this, initialize a variable before the for
loop that you update inside the for
loop:
>>> prices = [1.5, 2.35, 5.99, 16.49] >>> total = 0 >>> for price in prices: ... total = total + price ... >>> total 26.33
for
loops inside for
loops
You can put for
loops inside for
loops. The indentation dictates which for
loop a line is in.
>>> letters = ["a", "b", "c"] >>> numbers = [1, 2, 3] >>> for letter in letters: ... for number in numbers: ... print(letter * number) ... a aa aaa b bb bbb c cc ccc
The order of the for
loops matters. Compare the above example with this one:
>>> for number in numbers: ... for letter in letters: ... print(number * letter) ... a b c aa bb cc aaa bbb ccc
sorting lists
Use .sort()
to sort a list:
>>> names = ["Eliza", "Joe", "Henry", "Harriet", "Wanda", "Pat"] >>> names.sort() >>> names ['Eliza', 'Harriet', 'Henry', 'Joe', 'Pat', 'Wanda']
Getting the maximum and minimum values from a list
>>> numbers = [0, 3, 10, -1] >>> max(numbers) 10 >>> min(numbers) -1
Generating a list of numbers easily with range()
The range()
function returns a list of numbers. This is handy for when you want to generate a list of numbers on the fly instead of creating the list yourself.
>>> range(5) [0, 1, 2, 3, 4]
Use range
when you want to loop over a bunch of numbers in a list:
>>> numbers = range(5) >>> for number in numbers: ... print(number * number) ... 0 1 4 9 16
We could rewrite the above example like this:
>>> for number in range(5): ... print(number * number) ... 0 1 4 9 16
Get user input with raw_input()
>>> for i in range(100): ... input = raw_input("Please type something> ") ... if input == "Quit": ... print("Goodbye!") ... break ... else: ... print("You said: " + input) ... Please type something> Hello You said: Hello Please type something> How are you? You said: How are you? Please type something> Quit Goodbye! >>>