EECS 110: Lec 10: Definite Loops and User Input

Slides:



Advertisements
Similar presentations
Two motion and change: programming with imperatives.
Advertisements

Introduction to Computing Science and Programming I
CS0004: Introduction to Programming Repetition – Do Loops.
ITERATIVE CONSTRUCTS: DOLIST Dolist is an iterative construct (a loop statement) consisting of a variable declaration and a body The body states what happens.
Python November 18, Unit 7. So Far We can get user input We can create variables We can convert values from one type to another using functions We can.
Lecture 12 Another loop for repetition The while loop construct © 2007 Daniel Valentine. All rights reserved. Published by Elsevier.
CS Discrete Mathematical Structures Mehdi Ghayoumi MSB rm 132 Ofc hr: Thur, 9:30-11:30a.
Loops are MATLAB constructs that permit us to execute a sequence of statements more than once. There are two basic forms of loop constructs: i. while.
Guide to Programming with Python
Programming for Engineers in Python Sawa 2015 Lecture 2: Lists and Loops 1.
Computer Science Department Data Structure & Algorithms Lecture 8 Recursion.
EECS 110: Lec 17: Review for the Final Exam Aleksandar Kuzmanovic Northwestern University
EECS 110: Lec 5: List Comprehensions Aleksandar Kuzmanovic Northwestern University
EECS 110: Lec 12: Mutable Data Aleksandar Kuzmanovic Northwestern University
Roles of Variables with Examples in Python ® © 2014 Project Lead The Way, Inc.Computer Science and Software Engineering.
IS 313: Putting loops to work for you What's next? [ 1, 11, 21, 1211, , ? ] [ -35, -24, -13, -2, 9, 20, 31, ? ] [ 2, 22, 222, ? ] [ 26250, 5250,
Lecture 4 Looping. Building on the foundation Now that we know a little about  cout  cin  math operators  boolean operators  making decisions using.
EECS 110: Lec 11: Indefinite Loops and Program Design Aleksandar Kuzmanovic Northwestern University
Looping and Counting Lecture 3 Hartmut Kaiser
Ch. 10 For Statement Dr. Bernard Chen Ph.D. University of Central Arkansas Spring 2012.
EECS 110: Lec 4: Functions and Recursion Aleksandar Kuzmanovic Northwestern University
Input and typing trouble! print 'Please input a number of meters' meters = input() # get input from user cm = meters * 100 # convert to centimeters print.
Comprehending List Comprehensions
EECS 110: Lec 8: Lists of Lists Aleksandar Kuzmanovic Northwestern University
Loops ! We've seen variables change in-place before: [ x*6 for x in range(8) ] [ 0, 6, 12, 18, 24, 30, 36, 42 ] remember range ?
Loops and Simple Functions CS303E: Elements of Computers and Programming.
EECS 110: Lec 10: Definite Loops and User Input Aleksandar Kuzmanovic Northwestern University
Code Compression the benefits of looping... Today in CS 5 HW 4 - (3 problems) M/T sections W/Th sections due Sunday, 9/26 at midnight due Monday, 9/27.
Midterm Review Important control structures Functions Loops Conditionals Important things to review Binary Boolean operators (and, or, not) Libraries (import.
EECS 110: Lec 17: Review for the Final Exam Aleksandar Kuzmanovic Northwestern University
Spring  Problems:  Mandelbrot set  Time Travel Securities, Inc.  Pi from pie  Extra Credits:  Sequence Sums.
CS 101 – Oct. 15 Common elements in solutions –Types of variables –Traversing values in a list –Assigning vs. checking if equal –Printing things on the.
EECS 110: Lec 9: Review for the Midterm Exam Aleksandar Kuzmanovic Northwestern University
EECS 110: Lec 12: Mutable Data Aleksandar Kuzmanovic Northwestern University
Why Repetition? Read 8 real numbers and compute their average REAL X1, X2, X3, X4, X5, X6, X7, X8 REAL SUM, AVG READ *, X1, X2, X3, X4, X5, X6, X7, X8.
Int fact (int n) { If (n == 0) return 1; else return n * fact (n – 1); } 5 void main () { Int Sum; : Sum = fact (5); : } Factorial Program Using Recursion.
Lecture 7 – Repetition (Loop) FTMK, UTeM – Sem /2014.
H ASKELL Session 2 Ronald L. Ramos Proglan DLS-CSB 2 nd Term SY
Python – Part 4 Conditionals and Recursion. Conditional execution If statement if x>0:# CONDITION print (‘x is positive’) Same structure as function definition.
ENGINEERING 1D04 Tutorial 1. WELCOME! What we’re doing today Who am I How to do well What are computer programs Software Development Cycle Pseudo Code.
EECS 110: Lec 10: Definite Loops and User Input
CSc 110, Autumn 2017 Lecture 13: Cumulative Sum and Boolean Logic
EECS 110: Lec 12: Mutable Data
EECS 110: Lec 17: Review for the Final Exam
EECS 110: Lec 9: Review for the Midterm Exam
EECS 110: Lec 5: List Comprehensions
EECS 110: Lec 5: List Comprehensions
EECS 110: Lec 11: Indefinite Loops and Program Design
Printing Lines of Asterisks
CS5 Stylin' !.
While Loops in Python.
Counted Loops.
EECS 110: Lec 4: Functions and Recursion
The CS 5 Black Post Penguins Invade Dormitory
Looping.
Arrays, For loop While loop Do while loop
#31 He was seized by the fidgets,
What does this do? def revList(L): if len(L) < = 1: return L x = L[0] LR = revList(L[1:]) return LR + x.
EECS 110: Lec 4: Functions and Recursion
Lecture 8:The For Loop AP Computer Science Principles.
Flowcharts and Pseudo Code
For loops Taken from notes by Dr. Neil Moore
Loops and Simple Functions
Programming Dr. Jalal Kawash.
Spring 2018 EECS 110: Homework IV.
EECS 110: Lec 12: Mutable Data
List Comprehensions Problem: given a list of prices, generate a new list that has a 20% discount to each. Formally: input: list of old prices; output:
While Loops in Python.
REPETITION Why Repetition?
Lecture 6 - Recursion.
Presentation transcript:

EECS 110: Lec 10: Definite Loops and User Input Aleksandar Kuzmanovic Northwestern University http://cs.northwestern.edu/~akuzma/classes/EECS110-s09/

Loops! [ x*6 for x in range(8) ] [ 0, 6, 12, 18, 24, 30, 36, 42 ] We've seen variables change in-place before: [ x*6 for x in range(8) ] [ 0, 6, 12, 18, 24, 30, 36, 42 ] remember range?

fore! for x in range(8): print 'x is', x print 'Phew!' 1 3 2 4 x is assigned each value from this sequence 1 for x in range(8): print 'x is', x print 'Phew!' 3 LOOP back to step 1 for EACH value in the list 2 the BODY or BLOCK of the for loop runs with that x 4 Code AFTER the loop will not run until the loop is finished.

four on for for x in range(8): print 'x is', x factorial function? sum the list? construct the list?

Fact with for def fact( n ): answer = 1 for x in range(n): answer = answer * x return answer

Fact with for def fact( n ): answer = 1 for x in range(1,n+1): answer = answer * x return answer

Accumulating an answer… Finding the sum of a list: def sum( L ): """ returns the sum of L's elements """ sum = 0 for x in L: sum = sum + x return sum Accumulator! shortcuts? vs. recursion? sum every OTHER element?

Shortcut Shortcuts for changing variables: age = 38 age = age + 1 age += 1 #shortcut for age = age + 1

Two kinds of for loops sum = 0 for x in L: sum += x L = [ 42, -10, 4 ] Element-based Loops sum = 0 for x in L: sum += x L = [ 42, -10, 4 ] x "selfless"

Two kinds of for loops sum = 0 for x in L: sum += x sum = 0 for i in : Element-based Loops Index-based Loops sum = 0 for x in L: sum += x sum = 0 for i in : sum += i 1 2 L = [ 42, -10, 4 ] L = [ 42, -10, 4 ] x

Two kinds of for loops sum = 0 for x in L: sum += x sum = 0 Element-based Loops Index-based Loops sum = 0 for x in L: sum += x sum = 0 for i in range(len(L)): sum += L[i] i 1 2 L = [ 42, -10, 4 ] L = [ 42, -10, 4 ] x L[i]

Sum every other element Finding the sum of a list: def sum( L ): """ returns the sum of L's elements """ sum = 0 for i in range(len(L)): if ________: sum += L[i] return sum Accumulator! shortcuts? vs. recursion? sum every OTHER element?

Sum every other element Finding the sum of a list: def sum( L ): """ returns the sum of L's elements """ sum = 0 for i in range(len(L)): if i%2 == 0: sum += L[i] return sum Accumulator! shortcuts? vs. recursion? sum every OTHER element?

Extreme Looping What does this code do? print 'It keeps on' while True: print 'going and' print 'Phew! I\'m done!'

Extreme Looping Anatomy of a while loop: print 'It keeps on' while True: print 'going and' print 'Phew! I\'m done!' the loop keeps on running as long as this test is True “while” loop This won't print until the while loop finishes - in this case, never! alternative tests?

the loop keeps on running as long as this test is True Extreme Looping Slowing things down… import time print 'It keeps on' while True: print 'going and' time.sleep(1) print 'Phew! I\'m done!' the loop keeps on running as long as this test is True “while” loop

Making our escape! import random escape = 0 while escape != 42: print 'Help! Let me out!' escape = random.choice([41,42,43]) print 'At last!' how could we count the number of loops we run?

Loops aren't just for lists… for c in 'down with CS!': print c

"Quiz" def min( L ): n = 0 for c in 'forty-two': if c not in 'aeiou': Names: Write a loop to find and return the min of a list, L def min( L ): L is a list of numbers. What do these two loops print? n = 0 for c in 'forty-two': if c not in 'aeiou': n += 1 print n Write a loop so that this function returns True if its input is prime and False otherwise: def isPrime( n ): n is a positive integer n = 3 while n > 1: print n if n%2 == 0: n = n/2 else: n = 3*n + 1

What do these two loops print? while n > 1: print n if n%2 == 0: n = n/2 else: n = 3*n + 1 n = 0 for c in 'forty-two': if c not in 'aeiou': n += 1 print n ??

What do these two loops print? while n > 1: print n if n%2 == 0: n = n/2 else: n = 3*n + 1 ?? n = 0 for c in 'forty-two': if c not in 'aeiou': n += 1 print n 7

What do these two loops print? while n > 1: print n if n%2 == 0: n = n/2 else: n = 3*n + 1 3 n = 0 for c in 'forty-two': if c not in 'aeiou': n += 1 print n 7

What do these two loops print? while n > 1: print n if n%2 == 0: n = n/2 else: n = 3*n + 1 3 10 n = 0 for c in 'forty-two': if c not in 'aeiou': n += 1 print n 7

What do these two loops print? while n > 1: print n if n%2 == 0: n = n/2 else: n = 3*n + 1 3 10 5 n = 0 for c in 'forty-two': if c not in 'aeiou': n += 1 print n 7

What do these two loops print? while n > 1: print n if n%2 == 0: n = n/2 else: n = 3*n + 1 3 10 5 16 n = 0 for c in 'forty-two': if c not in 'aeiou': n += 1 print n 7

What do these two loops print? while n > 1: print n if n%2 == 0: n = n/2 else: n = 3*n + 1 3 10 5 16 8 n = 0 for c in 'forty-two': if c not in 'aeiou': n += 1 print n 7

What do these two loops print? while n > 1: print n if n%2 == 0: n = n/2 else: n = 3*n + 1 3 10 5 16 8 4 n = 0 for c in 'forty-two': if c not in 'aeiou': n += 1 print n 7

What do these two loops print? while n > 1: print n if n%2 == 0: n = n/2 else: n = 3*n + 1 3 10 5 16 8 4 2 n = 0 for c in 'forty-two': if c not in 'aeiou': n += 1 print n 7

def min( L ): def isPrime( n ): L is a list of numbers. n is a positive integer

for i in range(1,len(L)): if L[i] < mn: mn = L[i] return mn def min( L ): mn = L[0] for i in range(1,len(L)): if L[i] < mn: mn = L[i] return mn L is a list of numbers. def isPrime( n ): n is a positive integer

for i in range(1,len(L)): if L[i] < mn: mn = L[i] return mn def min( L ): mn = L[0] for i in range(1,len(L)): if L[i] < mn: mn = L[i] return mn mn=L[0] for s in L: if s < mn: mn = s L is a list of numbers. def isPrime( n ): n is a positive integer

for i in range(1,len(L)): if L[i] < mn: mn = L[i] return mn def min( L ): mn = L[0] for i in range(1,len(L)): if L[i] < mn: mn = L[i] return mn mn=L[0] for s in L: if s < mn: mn = s L is a list of numbers. def isPrime( n ): for i in range (n): if i not in [0,1]: if n%i == 0: return False return True n is a positive integer

Lab 8: the Mandelbrot Set Consider the following update rule for all complex numbers c: z0 = 0 zn+1 = zn2 + c If z does not diverge, c is in the M. Set. Benoit M. Imaginary axis z3 c z1 z2 z4 Real axis z0

Lab 8: the Mandelbrot Set Consider the following update rule for all complex numbers c: z0 = 0 zn+1 = zn2 + c If c does not diverge, it's in the M. Set. Benoit M. Imaginary axis z3 c z1 z2 z4 z0 Real axis example of a non-diverging cycle

Lab 8: the Mandelbrot Set Consider the following update rule for all complex numbers c: z0 = 0 zn+1 = zn2 + c The shaded area are points that do not diverge.

for creating and saving images 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

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

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

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

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 in range(width): for row in range(height): if col == row: image.plotPoint( col, row ) image.saveFile( "test.bmp" )

A: A diagonal in the SW -> NE direction 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 in range(width): for row in range(height): if col == row: image.plotPoint( col, row ) image.saveFile( "test.bmp" )

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 in range(width): for row in range(height): if col == row: image.plotPoint( col, row ) image.saveFile( "test.bmp" )

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 in range(width): for row in range(height): if col == height – row -1: image.plotPoint( col, row ) image.saveFile( "test.bmp" )

See you in Lab!