Date post: | 19-Jan-2016 |
Category: |
Documents |
Upload: | prosper-mathews |
View: | 217 times |
Download: | 0 times |
EECS 110: Lec 10: Definite Loops and User Input
Aleksandar Kuzmanovic
Northwestern University
http://networks.cs.northwestern.edu/EECS110-s15/
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?
for!
for x in range(8):
print('x is', x)
print('Phew!')
x is assigned each value from this
sequence
the BODY or BLOCK of the for loop runs with that x
Code AFTER the loop will not run until the loop is finished.
1
2
3
4
LOOP back to step 1 for EACH value in the list
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…
def sum( L ):
""" returns the sum of L's elements """
sum = 0
for x in L:
sum = sum + x
return sum
Finding the sum of a list:
Accumulator!
shortcuts?
vs. recursion?
sum every OTHER element?
Shortcut
Shortcuts for changing variables:
k = 38
k = k + 1
k += 1 #shortcut for k = k + 1
Two kinds of for loops
Element-based Loops
sum = 0
for x in L: sum += x
L = [ 42, -10, 4 ]
x
"selfless"
Two kinds of for loops
Element-based Loops
L = [ 42, -10, 4 ]
x
L = [ 42, -10, 4 ]
i0 1 2
Index-based Loops
sum = 0
for x in L: sum += x
sum = 0
for i in : sum +=
Two kinds of for loops
Element-based Loops
L = [ 42, -10, 4 ]
x
L = [ 42, -10, 4 ]
i0 1 2
Index-based Loops
sum = 0
for x in L: sum += x
sum = 0
for i in range(len(L)): sum += L[i]
L[i]
Sum every other element
def sum( L ):
""" returns the sum of L's elements """
sum = 0
for i in range(len(L)):
if ________:
sum += L[i]
return sum
Finding the sum of a list:
Accumulator!
shortcuts?
vs. recursion?
sum every OTHER element?
Sum every other element
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
Finding the sum of a list:
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!’)
“while” loop
the loop keeps on running as long as this test is True
alternative tests?
This won't print until the while loop finishes - in this case, never!
Extreme Looping
import time
print('It keeps on')
while True: print('going and') time.sleep(1)
print('Phew! I\'m done!')
“while” loop
Slowing things down…
the loop keeps on running as long as this test is True
Making our escape!
import randomescape = 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"What do these two loops
print?
n = 0
for c in 'forty-two':
if c not in 'aeiou':
n += 1
print(n)
def min( L ):
Write a loop to find and return the min of a list, LL is a list of numbers.
n = 3while n > 1: print(n) if n%2 == 0: n = n/2 else: n = 3*n + 1
def isPrime( n ):
Names:
Write a loop so that this function returns True if its input is prime and False otherwise:
n is a positive integer
What do these two loops print?
n = 0
for c in 'forty-two':
if c not in 'aeiou':
n += 1
print(n)
??
n = 3while n > 1: print(n) if n%2 == 0: n = n/2 else: n = 3*n + 1
What do these two loops print?
n = 0
for c in 'forty-two':
if c not in 'aeiou':
n += 1
print n
7
n = 3while n > 1: print n if n%2 == 0: n = n/2 else: n = 3*n + 1
??
What do these two loops print?
n = 0
for c in 'forty-two':
if c not in 'aeiou':
n += 1
print n
7
n = 3while n > 1: print n if n%2 == 0: n = n/2 else: n = 3*n + 1
3
What do these two loops print?
n = 0
for c in 'forty-two':
if c not in 'aeiou':
n += 1
print n
7
n = 3while n > 1: print n if n%2 == 0: n = n/2 else: n = 3*n + 1
310
What do these two loops print?
n = 0
for c in 'forty-two':
if c not in 'aeiou':
n += 1
print n
7
n = 3while n > 1: print n if n%2 == 0: n = n/2 else: n = 3*n + 1
3105
What do these two loops print?
n = 0
for c in 'forty-two':
if c not in 'aeiou':
n += 1
print n
7
n = 3while n > 1: print n if n%2 == 0: n = n/2 else: n = 3*n + 1
310516
What do these two loops print?
n = 0
for c in 'forty-two':
if c not in 'aeiou':
n += 1
print n
7
n = 3while n > 1: print n if n%2 == 0: n = n/2 else: n = 3*n + 1
3105168
What do these two loops print?
n = 0
for c in 'forty-two':
if c not in 'aeiou':
n += 1
print n
7
n = 3while n > 1: print n if n%2 == 0: n = n/2 else: n = 3*n + 1
31051684
What do these two loops print?
n = 0
for c in 'forty-two':
if c not in 'aeiou':
n += 1
print n
7
n = 3while n > 1: print n if n%2 == 0: n = n/2 else: n = 3*n + 1
310516842
def min( L ): L is a list of numbers. def isPrime( n ): n is a positive integer
L is a list of numbers. def isPrime( n ): n is a positive integerdef 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 integerdef min( L ):
mn = L[0]
for i in range(1,len(L)):
if L[i] < mn:
mn = L[i]
return mn
def min( L ):
mn=L[0]
for s in L:
if s < mn:
mn = s
return mn
def min( L ):
mn = L[0]
for i in range(1,len(L)):
if L[i] < mn:
mn = L[i]
return mn
def min( L ):
mn=L[0]
for s in L:
if s < mn:
mn = s
return mn
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
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.
Real axis
Imaginary axis
c
Lab 8: the Mandelbrot Set
Benoit M.
z0
z1z2
z3
z4
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.
Real axis
Imaginary axis
c
Lab 8: the Mandelbrot Set
Benoit M.
z0
z1z2
z3
z4
example of a non-diverging cycle
Consider the following update rule for all complex numbers c:
z0 = 0
zn+1 = zn2 + c
Lab 8: the Mandelbrot Set
The shaded area are points that do not diverge.