Boston Python Workshop 7/Loops

For loops
Use a  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

statements inside 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.

Sometimes you want to start with a new empty list, and only add to that list if some condition is true:

>>> vowel_names = [] >>> for name in ["Alice", "Bob", "Cassie", "Deb", "Ellen"]: ...    if name[0] in "AEIOU": ...        vowel_names.append(name) ... >>> print vowel_names ['Alice', 'Ellen']

loops inside loops
You can put  loops inside   loops. The indentation dictates which  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  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  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
The  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  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

loops
Use a  loop to loop so long as a condition is.

>>> i = 0 >>> while i < 10: ...    print i ... i = i + 1 ... 0 1 2 3 4 5 6 7 8 9

keyword
Use the  keyword to break out of a loop early:

>>> i = 0 >>> while True: ...    print i ... i = i + 1 ...    if i > 10: ...        break ... 0 1 2 3 4 5 6 7 8 9 10

Get user input with
>>> while True: ...    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! >>>