## {.separator}

Python Programming


Loops

--- ## Discussion: A Small list This situation isn’t so bad… ``` visible_colors = ["red", "orange", "yellow", "green", "blue", "violet"] print(visible_colors[0]) print(visible_colors[1]) print(visible_colors[2]) print(visible_colors[3]) print(visible_colors[4]) print(visible_colors[5]) ``` But, what would we do if there were 1,000 items in the list to print? --- ## The "For" Loop {.separator-subhead} --- ## The `for` Loop The `for` loop always follows this form: ``` for item in collection: # Do something with item ``` For example: ``` visible_colors = ["red", "orange", "yellow", "green", "blue", "violet"] for each_color in visible_colors: print(each_color) ``` --- ## Knowledge Check: What Will This Code Do? Think about what the code will do before you actually run it. --- ## Writing a Loop Let's write a loop to print names of guests. First, we need a list. - Create a local `.py` file named `my_loop.py`. - Make your list: Declare a variable `my_list` and assign it to a list containing the names of at least five people. --- ## Write a Loop — Make the Loop Now we'll add the loop. - Skip a line and write the first line of your for loop. - For the variable that holds each item, give it a name that reflects what the item is (e.g., name of person). - Inside your loop, add the code to print "Hello," plus the name. ``` "Hello, Felicia!" "Hello, Srinivas!" ``` --- ## Write a Loop Greeting Your Guest List Our guests are definitely VIPs! Let's give them a lavish two-line greeting. - Inside your loop, add the code to print another sentence of greeting: ``` "Hello, Srinivas!" "Welcome to the party!" ``` --- ## Where Else Could We Use a Loop? A loop prints everything in a collection of items. - `guest_list = ["Fred", "Cho", "Brandi", "Yuna", "Nanda", "Denise"]` What, besides a list, could we use a loop on? **Hint**: There are six on this slide! --- ## Looping Strings Loops are collections of strings and numbers. Strings are collections of characters! --- ## What About… Looping for a Specific Number of Iterations? We have: ``` guest_list = ["Fred", "Cho", "Brandi", "Yuna", "Nanda", "Denise"] for guest in guest_list: print("Hello, " + guest + "!") ``` The loop runs for every item in the list — the length of the collection. Here, it runs six times. What if we don't know how long guest_list will be? Or only want to loop some of it? --- ## Range() {.separator-subhead} --- ## Enter: Range range(x): - Automatically generated. - A list that contains only integers. - Starts at zero. - Stops before the number you input. `range(5) # => [0, 1, 2, 3, 4]` --- ## Looping Over a Range Let's look at range() in action: --- ## Looping Over a Range Looping over names here is really just going through the loop four times: At index `0, 1, 2`, and `3`. We can instead use `range()` to track the index and loop names: `range(4)` is `[0, 1, 2, 3]`. We can then use `len(names)`, which is 4, as our range. --- ## Using `range()` to Modify Collections Why would you use `range()` on a list, when you could just loop the list? We can't do: ``` guest_list = ["Fred", "Cho", "Brandi", "Yuna", "Nanda", "Denise"] for guest in guest_list: guest = "A new name" ``` But we can do: ``` guest_list = ["Fred", "Cho", "Brandi", "Yuna", "Nanda", "Denise"] for guest in range(len(guest_list)): guest_list[guest] = "A new name" ``` --- ## Looping Over a Range Let’s make this list all uppercase: --- ## Knowledge Check `my_list = ['mon', 'tue', 'wed', 'thu', 'fri']` Which of the following lines is correct? ``` for day in range(my_list): # answer A for day in range(len(my_list)): # answer B for day in range(my_list.length): # answer C ``` --- ## Solo Exercise: Range() (5–10 minutes) Locally, create a new file called `range_practice.py`. In it: - Create a list of colors. - Using a `for` loop, print out the list. - Using `range()`, set each item in the list to be the number of characters in the list. - For example: ``` ["red", "green", "blue"] # => [3, 5, 4] ``` --- ## Quick Review: `for` Loops and Range `for` Loops ``` # On a list (a collection of strings) guest_list = ["Fred", "Cho", "Brandi", "Yuna", "Nanda", "Denise"] for guest in guest_list: print("Hello, " + guest + "!") # On a string (a collection of characters) my_string = "Hello, world!" for character in my_string: print(character) ##### Range ##### range(4) # => [0, 1, 2, 3] # Using Range as an Index Counter names = ["Flint", "John Cho", "Billy Bones", "Nanda Yuna"] for each_name in range(4): print(names[each_name]) ``` --- ## Quick Review: `for` Loops and Range ``` # OR for each_name in range(len(names)): print(names[each_name]) # Using Range to Change a List: guest_list = ["Fred", "Cho", "Brandi", "Yuna", "Nanda", "Denise"] for guest in range(len(guest_list)): guest_list[guest] = "A new name" ``` --- ## The “While” Loop {.separator-subhead} --- ## The `while` Loop What about "While the bread isn't brown, keep cooking"? Python provides two loop types. `for`: - You just learned! - Loops over collections a finite number of times. `while`: - You're about to learn! - When your loop could run an indeterminate number of times. - Checks if something is `True` _(the bread isn't brown yet)_ and runs until it's set to `False` _(now the bread is brown, so stop)_. --- ## `while` Loop Syntax ``` # While is True: # Run some code. # If you're done, set the to False. # Otherwise, repeat. a = 0 while a < 10: print(a) a += 1 ``` --- ## `while` Loop Syntax --- ## `while`: Be Careful! Don't _ever_ do: ``` a = 0 while a < 10: print(a) ``` And don't _ever_ do: ``` a = 0 while a < 10: print(a) a += 1 ``` Your program will run forever! If your program ever doesn't leave a loop, hit `control-c` (break). --- ## Filling a Glass of Water Create a new local file, `practicing_while.py`. In it, we'll create: - A variable for our current glass content. - Another variable for the total capacity of the glass. Let's start with this: ``` glass = 0 glass_capacity = 12 ``` Can you start the `while` loop? --- ## Filling a Glass of Water Add the loop: ``` glass = 0 glass_capacity = 12 while glass < glass_capacity: glass += 1 # Here is where we add more water. ``` That’s it! --- ## Side Note: `input()` Let's do something more fun. With a partner, you will write a program that - Has a user guess a number. - But first, how do we have users input numbers? Using `input()`. ``` user_name = input("Please enter your name:") # user_name now has what the user typed. print(user_name) ``` Erase the code in your `practicing_while.py` file and replace it with the above code. Run it! What happens? Does it work? --- ## A Guessing Game (5 minutes) Now, get with a partner! Let's write the game. Decide who will be the driver and who will be the navigator. Add this to your existing file. - Set a variable, answer to "5" (yes, a string!). - Prompt the user for a guess and save it in a new variable, `guess`. - Create a `while` loop, ending when `guess` is equal to `answer`. - In the `while` loop, prompt the user for a new `guess`. - After the `while` loop, print: "You did it!" Discuss with your partner: Why do we need to make an initial variable before the loop? --- ## A Guessing Game (Solution) ``` answer = "4" guess = input("Guess what number I'm thinking of (1-10): ") while guess != answer: guess = input("Nope, try again: ") print("You got it!") ``` How'd you do? Questions? --- ## Conclusion {.separator-subhead} --- ## Python Programming: Loops {.separator-subhead} **Lesson Summary** Today we explored: - Loops: - Common, powerful control structures that let us efficiently deal with repetitive tasks. - `for` loops: - Used to iterate a set number of times over a collection (e.g., list, string, or using `range`). - `range()` uses indices, not duplicates, so it lets you modify the collection. --- ## Python Programming: Loops {.separator-subhead} **Lesson Summary** Today we explored: - `while` loops: - Run until a condition is False. - Used when you don't know how many times you need to iterate. Up Next: {Add Upcoming Lesson Topics/Pre-Work} --- ## Q&A {.separator-subhead} --- ## Additional Resources {.separator-subhead} --- ## Additional Reading [Learn Python Programming: Loops Video](https://www.youtube.com/watch?v=JkQ0Xeg8LRI) [Python: For Loop](https://wiki.python.org/moin/ForLoop) [Python: Loops](https://www.tutorialspoint.com/python/python_loops.htm) --- ## Exit Tickets {.separator-subhead} ---