Download presentation

Presentation is loading. Please wait.

Published byMacie Brandom Modified over 3 years ago

1
Control Flow Copyright © Software Carpentry 2010 This work is licensed under the Creative Commons Attribution License See http://software-carpentry.org/license.html for more information. Python

2
Control Flow Real power of programs comes from:

3
PythonControl Flow Real power of programs comes from: repetition

4
PythonControl Flow Real power of programs comes from: repetition

5
PythonControl Flow Real power of programs comes from: repetitionselection

6
PythonControl Flow Real power of programs comes from: repetitionselection

7
PythonControl Flow Simplest form of repetition is while loop

8
PythonControl Flow Simplest form of repetition is while loop num_moons = 3 while num_moons > 0: print num_moons num_moons -= 1

9
PythonControl Flow Simplest form of repetition is while loop num_moons = 3 while num_moons > 0: print num_moons num_moons -= 1 test

10
PythonControl Flow Simplest form of repetition is while loop num_moons = 3 while num_moons > 0: print num_moons num_moons -= 1 do

11
PythonControl Flow Simplest form of repetition is while loop num_moons = 3 while num_moons > 0: print num_moons num_moons -= 1 3 do

12
PythonControl Flow Simplest form of repetition is while loop num_moons = 3 while num_moons > 0: print num_moons num_moons -= 1 3 test again

13
PythonControl Flow Simplest form of repetition is while loop num_moons = 3 while num_moons > 0: print num_moons num_moons -= 1 3 2

14
PythonControl Flow Simplest form of repetition is while loop num_moons = 3 while num_moons > 0: print num_moons num_moons -= 1 3 2 1

15
PythonControl Flow While loop may execute zero times

16
PythonControl Flow While loop may execute zero times print 'before' num_moons = -3 while num_moons > 0: print num_moons num_moons -= 1 print 'after'

17
PythonControl Flow While loop may execute zero times print 'before' num_moons = -3 while num_moons > 0: print num_moons num_moons -= 1 print 'after' not true when first tested…

18
PythonControl Flow While loop may execute zero times print 'before' num_moons = -3 while num_moons > 0: print num_moons num_moons -= 1 print 'after' …so this is never executed

19
PythonControl Flow While loop may execute zero times print 'before' num_moons = -3 while num_moons > 0: print num_moons num_moons -= 1 print 'after' before after

20
PythonControl Flow While loop may execute zero times print 'before' num_moons = -3 while num_moons > 0: print num_moons num_moons -= 1 print 'after' before after Important to consider this case when designing and testing code

21
PythonControl Flow While loop may also execute forever

22
PythonControl Flow While loop may also execute forever print 'before' num_moons = 3 while num_moons > 0: print num_moons print 'after'

23
PythonControl Flow While loop may also execute forever print 'before' num_moons = 3 while num_moons > 0: print num_moons print 'after' before

24
PythonControl Flow While loop may also execute forever print 'before' num_moons = 3 while num_moons > 0: print num_moons print 'after' before 3

25
PythonControl Flow While loop may also execute forever print 'before' num_moons = 3 while num_moons > 0: print num_moons print 'after' before 3

26
PythonControl Flow While loop may also execute forever print 'before' num_moons = 3 while num_moons > 0: print num_moons print 'after' before 3

27
PythonControl Flow While loop may also execute forever print 'before' num_moons = 3 while num_moons > 0: print num_moons print 'after' before 3 ⋮

28
PythonControl Flow While loop may also execute forever print 'before' num_moons = 3 while num_moons > 0: print num_moons print 'after' before 3 ⋮ Nothing in here changes the loop control condition

29
PythonControl Flow While loop may also execute forever print 'before' num_moons = 3 while num_moons > 0: print num_moons print 'after' before 3 ⋮ Usually not the desired behavior…

30
PythonControl Flow While loop may also execute forever print 'before' num_moons = 3 while num_moons > 0: print num_moons print 'after' before 3 ⋮ Usually not the desired behavior… …but there are cases where it's useful

31
PythonControl Flow Why indentation?

32
PythonControl Flow Why indentation? Studies show that's what people actually pay attention to

33
PythonControl Flow Why indentation? Studies show that's what people actually pay attention to –Every textbook on C or Java has examples where indentation and braces don't match

34
PythonControl Flow Why indentation? Studies show that's what people actually pay attention to –Every textbook on C or Java has examples where indentation and braces don't match Doesn't matter how much you use, but whole block must be consistent

35
PythonControl Flow Why indentation? Studies show that's what people actually pay attention to –Every textbook on C or Java has examples where indentation and braces don't match Doesn't matter how much you use, but whole block must be consistent Python Style Guide (PEP 8) recommends 4 spaces

36
PythonControl Flow Why indentation? Studies show that's what people actually pay attention to –Every textbook on C or Java has examples where indentation and braces don't match Doesn't matter how much you use, but whole block must be consistent Python Style Guide (PEP 8) recommends 4 spaces And no tab characters

37
PythonControl Flow Use if, elif, and else to make choices

38
PythonControl Flow Use if, elif, and else to make choices moons = 3 if moons < 0: print 'less' elif moons == 0: print 'equal' else: print 'greater'

39
PythonControl Flow Use if, elif, and else to make choices not true when first tested… moons = 3 if moons < 0: print 'less' elif moons == 0: print 'equal' else: print 'greater'

40
PythonControl Flow Use if, elif, and else to make choices moons = 3 if moons < 0: print 'less' elif moons == 0: print 'equal' else: print 'greater' …so this is not executed

41
PythonControl Flow Use if, elif, and else to make choices moons = 3 if moons < 0: print 'less' elif moons == 0: print 'equal' else: print 'greater' this isn't true either…

42
PythonControl Flow Use if, elif, and else to make choices moons = 3 if moons < 0: print 'less' elif moons == 0: print 'equal' else: print 'greater' …so this isn't executed

43
PythonControl Flow Use if, elif, and else to make choices moons = 3 if moons < 0: print 'less' elif moons == 0: print 'equal' else: print 'greater' nothing else has executed…

44
PythonControl Flow Use if, elif, and else to make choices moons = 3 if moons < 0: print 'less' elif moons == 0: print 'equal' else: print 'greater' …so this is executed

45
PythonControl Flow Use if, elif, and else to make choices moons = 3 if moons < 0: print 'less' elif moons == 0: print 'equal' else: print 'greater' greater

46
PythonControl Flow Use if, elif, and else to make choices moons = 3 if moons < 0: print 'less' elif moons == 0: print 'equal' else: print 'greater' greater Always start with if

47
PythonControl Flow Use if, elif, and else to make choices Can have any number of elif clauses (including none) moons = 3 if moons < 0: print 'less' elif moons == 0: print 'equal' else: print 'greater' greater Always start with if

48
PythonControl Flow Use if, elif, and else to make choices Can have any number of elif clauses (including none) And the else clause is optional moons = 3 if moons < 0: print 'less' elif moons == 0: print 'equal' else: print 'greater' greater Always start with if

49
PythonControl Flow Use if, elif, and else to make choices Can have any number of elif clauses (including none) And the else clause is optional Always tested in order moons = 3 if moons < 0: print 'less' elif moons == 0: print 'equal' else: print 'greater' greater Always start with if

50
PythonControl Flow Blocks may contain blocks

51
PythonControl Flow Blocks may contain blocks num = 0 while num <= 10: if (num % 2) == 1: print num num += 1

52
PythonControl Flow Blocks may contain blocks num = 0 while num <= 10: if (num % 2) == 1: print num num += 1 Count from 0 to 10

53
PythonControl Flow Blocks may contain blocks num = 0 while num <= 10: if (num % 2) == 1: print num num += 1 Print odd numbers

54
PythonControl Flow Blocks may contain blocks num = 0 while num <= 10: if (num % 2) == 1: print num num += 1 1 3 5 7 9

55
PythonControl Flow A better way to do it

56
PythonControl Flow A better way to do it num = 1 while num <= 10: print num num += 2

57
PythonControl Flow A better way to do it num = 1 while num <= 10: print num num += 2 1 3 5 7 9

58
PythonControl Flow

59
PythonControl Flow Print primes less than 1000

60
PythonControl Flow Print primes less than 1000 num = 2 while num <= 1000:...figure out if num is prime... if is_prime: print num num += 1

61
PythonControl Flow Print primes less than 1000 Cannot be evenly divided by any other integer num = 2 while num <= 1000:...figure out if num is prime... if is_prime: print num num += 1

62
PythonControl Flow Print primes less than 1000 is_prime = True trial = 2 while trial < num: if...num divisible by trial...: is_prime = False trial += 1 num = 2 while num <= 1000:...figure out if num is prime... if is_prime: print num num += 1

63
PythonControl Flow Print primes less than 1000 Remainder is zero is_prime = True trial = 2 while trial < num: if...num divisible by trial...: is_prime = False trial += 1 num = 2 while num <= 1000:...figure out if num is prime... if is_prime: print num num += 1

64
PythonControl Flow Print primes less than 1000 (num % trial) == 0 is_prime = True trial = 2 while trial < num: if...num divisible by trial...: is_prime = False trial += 1 num = 2 while num <= 1000:...figure out if num is prime... if is_prime: print num num += 1

65
PythonControl Flow Print primes less than 1000 num = 2 while num <= 1000: is_prime = True trial = 2 while trial < num: if (num % trial) == 0: is_prime = False trial += 1 if is_prime: print num num += 1

66
PythonControl Flow A more efficient way to do it

67
PythonControl Flow A more efficient way to do it num = 2 while num <= 1000: is_prime = True trial = 2 while trial**2 < num: if (num % trial) == 0: is_prime = False trial += 1 if is_prime: print num num += 1

68
PythonControl Flow A more efficient way to do it num = 2 while num <= 1000: is_prime = True trial = 2 while trial**2 < num: if (num % trial) == 0: is_prime = False trial += 1 if is_prime: print num num += 1 N cannot be divided evenly by any number greater than sqrt(N)

69
PythonControl Flow Any code that hasn't been tested is probably wrong

70
PythonControl Flow Any code that hasn't been tested is probably wrong num = 2 while num <= 10: is_prime = True trial = 2 while trial**2 < num: if (num % trial) == 0: is_prime = False trial += 1 if is_prime: print num num += 1

71
PythonControl Flow Any code that hasn't been tested is probably wrong num = 2 while num <= 10: is_prime = True trial = 2 while trial**2 < num: if (num % trial) == 0: is_prime = False trial += 1 if is_prime: print num num += 1 234579234579

72
PythonControl Flow Any code that hasn't been tested is probably wrong num = 2 while num <= 10: is_prime = True trial = 2 while trial**2 < num: if (num % trial) == 0: is_prime = False trial += 1 if is_prime: print num num += 1 234579234579

73
PythonControl Flow Any code that hasn't been tested is probably wrong num = 2 while num <= 10: is_prime = True trial = 2 while trial**2 < num: if (num % trial) == 0: is_prime = False trial += 1 if is_prime: print num num += 1 234579234579 Where's the bug?

74
PythonControl Flow Failures occur for perfect squares

75
PythonControl Flow Failures occur for perfect squares num = 2 while num <= 10: is_prime = True trial = 2 while trial**2 < num: if (num % trial) == 0: is_prime = False trial += 1 if is_prime: print num num += 1

76
PythonControl Flow Failures occur for perfect squares num = 2 while num <= 10: is_prime = True trial = 2 while trial**2 < num: if (num % trial) == 0: is_prime = False trial += 1 if is_prime: print num num += 1 2**2 == 4

77
PythonControl Flow Failures occur for perfect squares num = 2 while num <= 10: is_prime = True trial = 2 while trial**2 < num: if (num % trial) == 0: is_prime = False trial += 1 if is_prime: print num num += 1 2**2 == 4 So never check to see if 4 % 2 == 0

78
PythonControl Flow Failures occur for perfect squares num = 2 while num <= 10: is_prime = True trial = 2 while trial**2 < num: if (num % trial) == 0: is_prime = False trial += 1 if is_prime: print num num += 1 2**2 == 4 So never check to see if 4 % 2 == 0 Or if 9 % 3 == 0, etc.

79
September 2010 created by Greg Wilson Copyright © Software Carpentry 2010 This work is licensed under the Creative Commons Attribution License See http://software-carpentry.org/license.html for more information.

Similar presentations

OK

CSCI 125 & 161 Lecture 12 Martin van Bommel. Prime Numbers Prime number is one whose only divisors are the number 1 and itself Therefore, number is prime.

CSCI 125 & 161 Lecture 12 Martin van Bommel. Prime Numbers Prime number is one whose only divisors are the number 1 and itself Therefore, number is prime.

© 2018 SlidePlayer.com Inc.

All rights reserved.

Ads by Google

Ppt on non ferrous minerals in water Ppt on diffusion of innovation Ppt on apache web server Insect anatomy and physiology ppt on cells Muscular system anatomy and physiology ppt on cells Ppt on hindu religion songs Ppt on automobile industry in india free download Ppt on solar power generation Free download ppt on autonomous car Ppt on carbon and its compounds worksheet