Download presentation
Presentation is loading. Please wait.
1
EECS 110: Lec 10: Definite Loops and User Input
Aleksandar Kuzmanovic Northwestern University
2
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?
3
for! 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.
4
four on for for x in range(8): print('x is', x) factorial function?
sum the list? construct the list?
5
Fact with for def fact( n ): answer = 1 for x in range(n):
answer = answer * x return answer
6
Fact with for def fact( n ): answer = 1 for x in range(1,n+1):
answer = answer * x return answer
7
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?
8
Shortcut Shortcuts for changing variables: k = 38 k = k + 1
k += 1 #shortcut for k = k + 1
9
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"
10
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
11
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]
12
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?
13
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?
14
Extreme Looping What does this code do? print('It keeps on’)
while True: print('going and') print('Phew! I\'m done!')
15
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?
16
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
17
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?
18
Loops aren't just for lists…
for c in 'down with CS!': print(c)
19
"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
20
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) ??
21
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
22
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
23
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
24
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
25
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
26
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
27
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
28
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
29
def min( L ): def isPrime( n ): L is a list of numbers.
n is a positive integer
30
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
31
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
32
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
33
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
34
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
35
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.
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.