1 / 61

EECS 110: Lec 11: Indefinite Loops and Program Design

EECS 110: Lec 11: Indefinite Loops and Program Design. Aleksandar Kuzmanovic Northwestern University. http://cs.northwestern.edu/~akuzma/classes/EECS110-s10/. Final Exam. When: Wednesday 6/2/10 Where: Tech L165 Auditorium Time: 9AM – 10:30AM. Python and images.

ledmondson
Download Presentation

EECS 110: Lec 11: Indefinite Loops and Program Design

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. EECS 110: Lec 11: Indefinite Loops and Program Design Aleksandar Kuzmanovic Northwestern University http://cs.northwestern.edu/~akuzma/classes/EECS110-s10/

  2. Final Exam • When: • Wednesday 6/2/10 • Where: • Tech L165 Auditorium • Time: • 9AM – 10:30AM

  3. Python and images for creating and saving images import bmp.py image = BitMap( 300, 200, Color.GREEN ) creates a bitmap object and names it image

  4. Python and images import bmp.py for creating and saving images image = BitMap( 300, 200, Color.GREEN ) creates a bitmap object and names it image objects are software abstractions containing structured information

  5. Python and images and objects import bmp.py image = BitMap( 300, 200, Color.GREEN ) here, a bitmap object named image is calling an internal method named saveFile image.saveFile( "test.bmp" ) objects are variables that can contain their own functions, often called methods

  6. Python and images and objects import bmp.py image = BitMap( 300, 200, Color.GREEN ) image.setPenColor( Color.Red ) two more internal methods image.plotPixel( 150, 100 ) image.saveFile( "test.bmp" ) objects are variables that can contain their own functions, often called methods

  7. Q: What does this plot? from bmp import * def test(): """ image demonstration """ width = 200 height = 200 image = BitMap( width, height ) # a 2d loop over each pixel for col inrange(width): for row inrange(height): if col == row: image.plotPoint( col, row ) image.saveFile( "test.bmp" )

  8. Q: What does this plot? A: A diagonal in the SW -> NE direction from bmp import * def test(): """ image demonstration """ width = 200 height = 200 image = BitMap( width, height ) # a 2d loop over each pixel for col inrange(width): for row inrange(height): if col == row: image.plotPoint( col, row ) image.saveFile( "test.bmp" )

  9. How could you change this code so that it plots a diagonal from NW to SE? def test(): """ demonstrating images """ width = 200 height = 200 image = BitMap( width, height ) # a 2d loop over each pixel for col inrange(width): for row inrange(height): if col == row: image.plotPoint( col, row ) image.saveFile( "test.bmp" )

  10. How could you change this code so that it plots a diagonal from NW to SE? def test(): """ demonstrating images """ width = 200 height = 200 image = BitMap( width, height ) # a 2d loop over each pixel for col inrange(width): for row inrange(height): ifcol == height – row -1: image.plotPoint( col, row ) image.saveFile( "test.bmp" )

  11. Input and typing trouble! print 'Please input a number of meters' meters = raw_input() # get input from user cm = meters * 100 # convert to centimeters print 'That is', cm, 'cm.'# print out the result

  12. Input and typing trouble! print 'Please input a number of meters' meters = raw_input() # get input from user cm = meters * 100 # convert to centimeters print 'That is', cm, 'cm.'# print out the result >>> Please input a number of meters 5 That is 5555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555 cm. What is python thinking ?!?

  13. Fix #1: use a type converter print 'Please input a number of meters' meters = int(raw_input()) cm = meters * 100 print 'That is', cm, 'cm.' check out my newly installed int converter! 100 1 The type of variable (box) matters! name:meters type: int name:cm type: int

  14. Fix #1: use a type converter print 'Please input a number of meters' meters = int(raw_input()) # get int input from user cm = meters * 100 print 'That is', cm, 'cm.' print 'Please input a number of meters' meters = float(raw_input()) # get float input from user cm = meters * 100 print 'That is', cm, 'cm.' strconverts to string type

  15. Fix #2: use input() print 'Please input a number of meters' meters = input() # get processed input from user cm = meters * 100 print 'That is', cm, 'cm.' Why not ALWAYS use input() ?

  16. Fix #2: use input() print 'Please input a number of meters' meters = input() # get processed input from user cm = meters * 100 print 'That is', cm, 'cm.' Why not ALWAYS use input() ? raw_input always returns input as a string! input processes the input as if typed into Python both allow you to input a prompt string

  17. inputvs.raw_input reply = raw_input('Enter a string and I\'ll tell you what I see.') for c in reply: print'I see a(n) ', c interprets what the user types as a string of characters reply = input('Enter any list and I\'ll tell you what I see.') for c in reply: print'I see a(n) ', c processes what the user types just as python would

  18. More with Loopy thinking 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 s ='gattacaaggtaaaatgca' How could we find the number of 'a's ? How about 'a's or 't's? How could we find the number of 'ta's ? How could we find the longest sequence of 'a's ?

  19. Loopy thinking 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 s ='gattacaaggtaaaatgca' How could we find the number of 'a's ? How about 'a's or 't's? How could we find the number of 'ta's ? How could we find the longest sequence of 'a's ?

  20. Loopy thinking 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 s ='gattacaaggtaaaatgca' s = 'gattacaaggtaaaatgca' N = 0 for i in range(0,len(s)): if s[i] == 'a': N = N + 1 print'N is', N How could we find the number of 'a's ? How about 'a's or 't's? How could we find the number of 'ta's ? How could we find the longest sequence of 'a's ?

  21. Loopy thinking 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 s = 'gattacaaggtaaaatgca' How could we find the number of 'a's ? How about 'a's or 't's? How could we find the number of 'ta's ? How could we find the longest sequence of 'a's ?

  22. Loopy thinking 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 s = 'gattacaaggtaaaatgca' s = 'gattacaaggtaaaatgca' N = 0 for i in range(0,len(s)): if s[i] == 'a'or s[i] == 't': N = N + 1 print'N is', N How could we find the number of 'a's ? How about 'a's or 't's? How could we find the number of 'ta's ? How could we find the longest sequence of 'a's ?

  23. Loopy thinking 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 s ='gattacaaggtaaaatgca' How could we find the number of 'a's ? How about 'a's or 't's? How could we find the number of 'ta's ? How could we find the longest sequence of 'a's ?

  24. Loopy thinking 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 s ='gattacaaggtaaaatgca' s = 'gattacaaggtaaaatgca' N = 0 for i in range(1,len(s)): if s[i] == 'a'and s[i-1] == 't': N = N + 1 print'N is', N How could we find the number of 'a's ? How about 'a's or 't's? How could we find the number of 'ta's ? How could we find the longest sequence of 'a's ?

  25. Loopy thinking 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 s ='gattacaaggtaaaatgca' s = 'gattacaaggtaaaatgca' N = 0 for i in range(1,len(s)): if s[i] == 'a'and s[i-1] == 't': N = N + 1 print'N is', N How could we find the number of 'a's ? How about 'a's or 't's? How could we find the number of 'ta's ? How could we find the longest sequence of 'a's ?

  26. Loopy thinking 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 s ='gattacaaggtaaaatgca' How could we find the longest sequence of 'a's ?

  27. Loopy thinking 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 s ='gattacaaggtaaaatgca‘ - Len of current run - Len of best run How could we find the longest sequence of 'a's ?

  28. Planning in "pseudocode" 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 s ='gattacaaggtaaaatgca' Keep track of CurRun, MaxRun Loop through the string: if we do see an 'a' if the PREVIOUS letter is NOT an 'a' if the PREVIOUS letter IS an 'a'

  29. Planning in "pseudocode" 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 s ='gattacaaggtaaaatgca' Keep track of CurRun, MaxRun Loop through the string: if we do see an 'a' if the PREVIOUS letter is NOT an 'a' Start a Run! CurRun = 1 if the PREVIOUS letter IS an 'a' Continue our run! CurRun = CurRun + 1 Check for a new maximum…

  30. Planning in "pseudocode" 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 s ='gattacaaggtaaaatgca' MAX = 0 cur = 0 for i in range(0,len(s)): if s[i] == 'a': ifs[i-1] != 'a': cur = 1 else: cur = cur + 1 if cur > MAX: MAX = cur print'Max is', MAX Keep track of CurRun, MaxRun Loop through the string: if we do see an 'a' if the PREVIOUS letter is NOT an 'a' Start a Run! if the PREVIOUS letter IS an 'a' Continue our run! Check for a new maximum…

  31. Summary 1 s = 'gattacaaggtaaaatgca' N = 0 for i in range(0,len(s)): if s[i] == 'a': N = N + 1 print'N is', N 2 s = 'gattacaaggtaaaatgca' N = 0 for i in range(0,len(s)): if s[i] == 'a'or s[i] == 't': N = N + 1 print'N is', N s = 'gattacaaggtaaaatgca' MAX = 0 cur = 0 for i in range(0,len(s)): if s[i] == 'a': ifs[i-1] != 'a': cur = 1 else: cur = cur + 1 if cur > MAX: MAX = cur print'Max is', MAX 4 3 s = 'gattacaaggtaaaatgca' N = 0 for i in range(1,len(s)): if s[i] == 'a'and s[i-1] == 't': N = N + 1 print'N is', N

  32. Loops for while indefinite iteration definite iteration For a known number of iterations For an unknown number of iterations

  33. Seeing into the future… defmenu(): choice = 1 # Anything except 9 while choice != 9: print "I see danger in your future..." printMenu() choice = input("Make your choice ") print"The inner eye can see no more" def printMenu(): print"What would you like to do?" print"\t 0: See another prediction" print"\t 9: Quit" "\t " represents a tab

  34. Gimme a break I'll figure out later how to get out of this loop! defmenu(): whileTrue: print "I see danger in your future..." printMenu() choice = input("Make your choice ") if choice == 9: break print"The inner eye can see no more" def printMenu(): print"What would you like to do?" print"\t 0: See another prediction" print"\t 9: Quit" OK – I'll stop the loop now and continue with the code after the loop break stops the execution of the current loop

  35. Indefinite Loops + input A problem this week ask you to repeatedly interact with the user (TTSecurities) What would you like to do? 0: Enter a new list 1: Print the current list 2: Find the average 9: Quit Please enter your choice The user's choice controls what happens

  36. Indefinite Loops + input defmenu(): choice = 1 while choice != 9: printMenu() choice = input("Please enter your choice ") if choice == 0: print"You chose to enter a new list" elif choice == 1: print"You chose to print the list" elif choice == 2: print"You chose to find this average of the list" elif choice != 9: print"You made an invalid choice" print"Goodbye!" def printMenu(): print"What would you like to do?" print"\t 0: Enter a new list" print"\t 1: Print the current list" print"\t 2: Find the average" print"\t 9: Quit"

  37. if vs elif defmenu(): choice = 1 while choice != 9: printMenu() choice = input("Please enter your choice ") if choice == 0: print"You chose to enter a new list" if choice == 1: print"You chose to print the list" if choice == 2: print"You chose to find this average of the list" if choice != 9: print"You made an invalid choice" print"Goodbye!" What happens if we change the elifs to ifs?

  38. Indefinite Loops + input defmenu(): choice = 1 L = [] while choice != 9: printMenu() choice = input("Please enter your choice ") if choice == 0: L = getNewList() elif choice == 1: printList(L) elif choice == 2: averageList(L) elif choice != 9: print"You made an invalid choice" print"Goodbye!" defgetNewList(): print "You chose to get a new list" return[] Making a function for each choice makes the codecleaner and easier to modify

  39. Gimme another break defmenu(): choice = 1 L = [] whileTrue: printMenu() choice = input("Please enter your choice ") if choice == 0: L = getNewList() elif choice == 1: printList(L) elif choice == 2: averageList(L) elif choice == 9: break else: print"You made an invalid choice" print"Goodbye!"

  40. The Price Is Right! Goal: Buy from a set of 5items (as many of each as you want)while spending between $9.25 and $10.00.

  41. Step 1: Identify Information To Store • What information does this program need to keep track of? Money you have spent, how much each item is, Items, # items to buy, limits,

  42. Step 1: Identify Information To Store • How much has the user spent? float: money • Which items are available? list of strings: items • How much does each available item cost? list of floats: prices • Which item did the user currently choose? int: choice • How many of the currently chosen item does the user want? int: number Money you have spent, how much each item is, Items, # items to buy, limits,

  43. Step 1: Identify Information To Store • How much has the user spent? float: money • Which items are available? [“coke”, “ramer”] list of strings: items • How much does each available item cost? list of floats: prices • Which item did the user currently choose? int: choice • How many of the currently chosen item does the user want? int: number Money you have spent, how much each item is, Items, # items to buy, limits,

  44. Step 1: Identify Information To Store • How much has the user spent? float: money • Which items are available? [“coke”, “ramer”] list of strings: items • How much does each available item cost? list of floats: prices [ 0.75, 0.25] • Which item did the user currently choose? int: choice • How many of the currently chosen item does the user want? int: number Money you have spent, how much each item is, Items, # items to buy, limits,

  45. Step 2: Break Down Functionality • What are the things that this program needs to do? Allow user to buy one item Ask user how many items to buy Update $$, update item list, check if finished

  46. Step 2: Break Down Functionality • Control the overall game play • Prompt the user to enter a choice and number of items • Calculate the total spent • Figure out when the game is over • Figure out win or lose • Print a welcome message • Remove the purchased item from the lists (items, prices) Allow user to buy one item Ask user how many items to buy Update $$, update item list, check if finished

  47. defplayTry1(): print"Welcome to the price is right!" print"Your goal is to buy 5 or fewer items (any number of each)" print"and spend between $9.25 and $10" items = ["bleach","coke","ramen","ice cream","super ball"] prices = [1.35, .75, .25, 3.00, 1.75] money = 0.0 while money < 9.25 and len(items) > 0: print"You have spent $", money printItems( items ) choice = input( "Which item would you like to buy? ") number = input( "How many "+items[choice]+" would you like?") print items[choice], "is $", prices[choice] money += prices[choice]*number prices = prices[0:choice] + prices[choice+1:] items = items[0:choice] + items[choice+1:] print"You have spent $", money if money >= 9.25 and money <= 10.0: print"You win!" else: print"You lose!" Attempt 1 ID problems, write on board

  48. "Quiz" part 1: Print Items >>> items = [“coke”, “pepsi”, “sprite”] >>> printItems(items) 0 : coke 1 : pepsi 2 : sprite Allow user to buy one item Ask user how many items to buy Update $$, update item list, check if finished

  49. defplayTry1(): print"Welcome to the price is right!" print"Your goal is to buy 5 or fewer items (any number of each)" print"and spend between $9.25 and $10" items = ["bleach","coke","ramen","ice cream","super ball"] prices = [1.35, .75, .25, 3.00, 1.75] money = 0.0 while money < 9.25 and len(items) > 0: print"You have spent $", money printItems( items ) choice = input( "Which item would you like to buy? ") number = input( "How many "+items[choice]+" would you like?") print items[choice], "is $", prices[choice] money += prices[choice]*number prices = prices[0:choice] + prices[choice+1:] items = items[0:choice] + items[choice+1:] print"You have spent $", money if money >= 9.25 and money <= 10.0: print"You win!" else: print"You lose!" Attempt 1 ID problems, write on board

  50. defplayTry1(): print"Welcome to the price is right!" print"Your goal is to buy 5 or fewer items (any number of each)" print"and spend between $9.25 and $10" items = ["bleach","coke","ramen","ice cream","super ball"] prices = [1.35, .75, .25, 3.00, 1.75] money = 0.0 while money < 9.25 and len(items) > 0: print"You have spent $", money printItems( items ) choice = input( "Which item would you like to buy? ") number = input( "How many "+items[choice]+" would you like?") print items[choice], "is $", prices[choice] money += prices[choice]*number prices = prices[0:choice] + prices[choice+1:] items = items[0:choice] + items[choice+1:] print"You have spent $", money if money >= 9.25 and money <= 10.0: print"You win!" else: print"You lose!" Attempt 1: Issues ID problems, write on board Magic numbers!

More Related