isinstance and while loops
play

isinstance and While Loops [Andersen, Gries, Lee, Marschner, Van - PowerPoint PPT Presentation

CS 1110: Introduction to Computing Using Python Lecture 20 isinstance and While Loops [Andersen, Gries, Lee, Marschner, Van Loan, White] Announcements A4: Due 4/20 at 11:59pm Should only use our str method to test __init__ Testing


  1. CS 1110: Introduction to Computing Using Python Lecture 20 isinstance and While Loops [Andersen, Gries, Lee, Marschner, Van Loan, White]

  2. Announcements • A4: Due 4/20 at 11:59pm  Should only use our str method to test __init__  Testing of all other methods should be done as usual • Thursday 4/20: Review session in lecture • Prelim 2 on Tuesday 4/25, 7:30pm – 9pm  Covers material up through Tuesday 4/18  Lecture: Professor office hours  Labs: TA/consultant office hours • No labs on 4/26 4/13/17 While Loops 2

  3. More Mixed Number Example • What if we want to add mixed numbers and fractions? 4/13/17 While Loops 3

  4. The isinstance Function • isinstance(<obj>,<class>) object  True if <obj>’s class is same as or id4 e a subclass of <class>  False otherwise id4 Executive • Example : Employee  isinstance(e,Executive) is True _name 'Fred'  isinstance(e,Employee) is True _start 2012  isinstance(e,object) is True Executive 0.0 _salary  isinstance(e,str) is False 0.0 _bonus • Generally preferable to type  Works with base types too! 4/13/17 While Loops 4

  5. isinstance and Subclasses >>> e = Employee('Bob',2011) object e id5 >>> isinstance(e,Executive) ??? id5 Employee Employee _name 'Bob' FALSE _start 2012 Executive 50k _salary 4/13/17 While Loops 5

  6. More Mixed Number Example • What if we want to add mixed numbers and fractions? 4/13/17 While Loops 6

  7. Review: For Loops • loop sequence: seq The for-loop: • loop variable : x for x in seq: • body : print x print x To execute the for-loop: 1. Check if there is a “next” element of loop sequence 2. If not, terminate execution seq has True put next 3. Otherwise, assign element more elements element in x to the loop variable Execute all of the body 4. False print x 5. Repeat as long as 1 is true 4/13/17 While Loops 7

  8. Beyond Sequences: The while-loop while < condition >: statement 1 repetend or body … statement n • Relationship to for-loop  Must explicitly ensure condition becomes false  You explicitly manage true condition repetend what changes per iteration false 4/13/17 While Loops 8

  9. While-Loops and Flow print 'Before while' Output: count = 0 Before while i = 0 Start loop 0 while i < 3: End loop print 'Start loop '+str(i) Start loop 1 count = count + i End loop i = i + 1 Start loop 2 print 'End loop ' End loop print 'After while' After while 4/13/17 While Loops 9

  10. What gets printed? a = 0 while a < 1: prints 1 a = a + 1 print a 4/13/17 While Loops 10

  11. What gets printed? a = 0 while a < 2: prints 2 a = a + 1 print a 4/13/17 While Loops 11

  12. What gets printed? a = 0 while a > 2: prints 0 a = a + 1 print a 4/13/17 While Loops 12

  13. What gets printed? a = 0 while a < 3: INFINITE LOOP if a < 2: a = a + 1 print a 4/13/17 While Loops 13

  14. What gets printed? a = 4 while a > 0: prints 0 a = a – 1 print a 4/13/17 While Loops 14

  15. What gets printed? a = 8 A: INFINITE LOOP B: 8 b = 12 C: 12 while a != b: D: 4 CORRECT if a > b: E: I don’t know a = a – b This is Euclid’s Algorithm for else: finding the greatest common b = b – a factor of two positive integers. print a Trivia : It is one of the oldest recorded algorithms (~300 B.C.) 4/13/17 While Loops 15

  16. More Mixed Number Example • Adding with greatest common factor, finally! • Reducing 4/13/17 While Loops 16

  17. Note on Ranges • m..n is a range containing n+1-m values  2..5 contains 2, 3, 4, 5. Contains 5+1 – 2 = 4 values  2..4 contains 2, 3, 4. Contains 4+1 – 2 = 3 values  2..3 contains 2, 3. Contains 3+1 – 2 = 2 values  2..2 contains 2. Contains 2+1 – 2 = 1 values • Notation m..n always implies that m <= n+1  If m = n+1, the range has 0 values 4/13/17 While Loops 17

  18. while Versus for # process range b..c-1 # process range b..c-1 for k in range(b,c) k = b # code involving k while k < c: # code involving k Must remember to increment k = k+1 # process range b..c # process range b..c for k in range(b,c+1) k = b # code involving k while k <= c: # code involving k k = k+1 4/13/17 While Loops 18

  19. while Versus for # incr seq elements # incr seq elements for k in range(len(seq)): k = 0 seq[k] = seq[k]+1 while k < len(seq): seq[k] = seq[k]+1 k = k+1 while is more flexible, but often requires more code 4/13/17 While Loops 19

  20. Patterns for Processing Integers range a..b-1 range c..d i = a i = c while i < b: while i <= d: # process integer i # process integer i i = i + 1 i = i + 1 # store in count # of '/'s in string s # Store in v the sum 1/1 + 1/2 + …+ 1/n count = 0 v = 0 i = 0 i = 0 while i < len(s): while i <= n: if s[i] == '/': v = v + 1.0 / i count = count + 1 i = i +1 i = i +1 # v= 1/1 + 1/2 + …+ 1/n # count is # of '/'s in s[0..s.length()-1] 4/13/17 While Loops 20

  21. while Versus for # list of squares to N # list of squares to N seq = [] seq = [] n = floor(sqrt(N)) + 1 k = 0 for k in range(n): while k*k <= N: seq.append(k*k) seq.append(k*k) k = k+1 A while loop can use A for-loop requires that complex expressions to you know where to stop check if the loop is done the loop ahead of time 4/13/17 While Loops 21

  22. while Versus for Fibonacci numbers: F 0 = 1 F 1 = 1 F n = F n –1 + F n –2 # List of n Fibonacci numbers # List of n Fibonacci numbers fib = [1, 1] fib = [1, 1] gets last for k in range(2,n): while len(fib) < n: element fib.append(fib[-1] + fib[-2]) fib.append(fib[-1] + fib[-2]) gets second-to-last element Sometimes you do not use Do not need to have a loop the loop variable at all variable if you don’t need one 4/13/17 While Loops 22

  23. Cases to Use while Great for when you must modify the loop variable # Remove all 3's from list t # Remove all 3's from list t i = 0 while 3 in t: while i < len(t): t.remove(3) # no 3’s in t[0..i–1] if t[i] == 3: del t[i] else: i += 1 4/13/17 While Loops 23

  24. Cases to Use while Great for when you must modify the loop variable 4/13/17 While Loops 24

  25. But first, += • Can shorten i = i + 1 as :  i += 1 • Also works for -=, *=, /=, %= 4/13/17 While Loops 25

  26. Cases to Use while Great for when you must modify the loop variable # Remove all 3's from list t # Remove all 3's from list t i = 0 while 3 in t: while i < len(t): t.remove(3) # no 3’s in t[0..i–1] if t[i] == 3: The stopping condition is not del t[i] a numerical counter this time. Stopping else: Simplifies code a lot. point keeps i += 1 changing. 4/13/17 While Loops 26

  27. Collatz Conjecture • Does this loop terminate for all x ? while x != 1: if x % 2 == 0: # if x is even x /= 2 else: # if x is odd x = 3 * x + 1 WHILE LOOPS CAN BE HARD. Must think formally. 4/13/17 While Loops 27

  28. Some Important Terminology • assertion : true-false statement placed in a program to assert that it is true at that point  Can either be a comment , or an assert command • invariant : assertion supposed to "always" be true  If temporarily invalidated, must make it true again  Example : class invariants and class methods • loop invariant : assertion supposed to be true before and after each iteration of the loop • iteration of a loop : one execution of its body 4/13/17 While Loops 28

  29. Preconditions & Postconditions n 1 2 3 4 5 6 7 8 precondition # x = sum of 1..n-1 x contains the sum of these (6) x = x + n n = n + 1 # x = sum of 1..n-1 n 1 2 3 4 5 6 7 8 postcondition x contains the sum of these (10) • Precondition: assertion placed before a segment Relationship Between Two • Postcondition: assertion If precondition is true, then postcondition will be true placed after a segment 4/13/17 While Loops 30

Download Presentation
Download Policy: The content available on the website is offered to you 'AS IS' for your personal information and use only. It cannot be commercialized, licensed, or distributed on other websites without prior consent from the author. To download a presentation, simply click this link. If you encounter any difficulties during the download process, it's possible that the publisher has removed the file from their server.

Recommend


More recommend