python language: control flow

37
Python language: Control Flow The FOSSEE Group Department of Aerospace Engineering IIT Bombay Mumbai, India FOSSEE Team (FOSSEE – IITB) Control flow 1 / 32

Upload: others

Post on 24-Apr-2022

35 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Python language: Control Flow

Python language: Control Flow

The FOSSEE Group

Department of Aerospace EngineeringIIT Bombay

Mumbai, India

FOSSEE Team (FOSSEE – IITB) Control flow 1 / 32

Page 2: Python language: Control Flow

Outline

1 Control flowBasic Conditional flow

2 Control flowBasic Looping

3 Exercises

FOSSEE Team (FOSSEE – IITB) Control flow 2 / 32

Page 3: Python language: Control Flow

Control flow

Outline

1 Control flowBasic Conditional flow

2 Control flowBasic Looping

3 Exercises

FOSSEE Team (FOSSEE – IITB) Control flow 3 / 32

Page 4: Python language: Control Flow

Control flow

Control flow constructs

if/elif/else : branchingwhile : loopingfor : iteratingbreak, continue : modify looppass : syntactic filler

FOSSEE Team (FOSSEE – IITB) Control flow 4 / 32

Page 5: Python language: Control Flow

Control flow Basic Conditional flow

Outline

1 Control flowBasic Conditional flow

2 Control flowBasic Looping

3 Exercises

FOSSEE Team (FOSSEE – IITB) Control flow 5 / 32

Page 6: Python language: Control Flow

Control flow Basic Conditional flow

if...elif...else example

Type the following code in an editor & save as ladder.pyx = int(input("Enter an integer: "))if x < 0:

print(’Be positive!’)elif x == 0:

print(’Zero’)elif x == 1:

print(’Single’)else:

print(’More’)

Run in IPython: %run ladder.py

Run on terminal: python ladder.py

FOSSEE Team (FOSSEE – IITB) Control flow 6 / 32

Page 7: Python language: Control Flow

Control flow Basic Conditional flow

if...elif...else example

Type the following code in an editor & save as ladder.pyx = int(input("Enter an integer: "))if x < 0:

print(’Be positive!’)elif x == 0:

print(’Zero’)elif x == 1:

print(’Single’)else:

print(’More’)

Run in IPython: %run ladder.py

Run on terminal: python ladder.py

FOSSEE Team (FOSSEE – IITB) Control flow 6 / 32

Page 8: Python language: Control Flow

Control flow Basic Conditional flow

Ternary operator

score_str is either ’AA’ or a string of one ofthe numbers in the range 0 to 100.We wish to convert the string to a number usingint

Convert it to 0, when it is ’AA’if-else construct or the ternary operator

In []: if score_str != ’AA’:.....: score = int(score_str).....: else:.....: score = 0

FOSSEE Team (FOSSEE – IITB) Control flow 7 / 32

Page 9: Python language: Control Flow

Control flow Basic Conditional flow

Ternary operator

With the ternary operator you can do this:In []: ss = score_strIn []: score = int(ss) if ss != ’AA’ else 0

FOSSEE Team (FOSSEE – IITB) Control flow 8 / 32

Page 10: Python language: Control Flow

Control flow

Outline

1 Control flowBasic Conditional flow

2 Control flowBasic Looping

3 Exercises

FOSSEE Team (FOSSEE – IITB) Control flow 9 / 32

Page 11: Python language: Control Flow

Control flow Basic Looping

Outline

1 Control flowBasic Conditional flow

2 Control flowBasic Looping

3 Exercises

FOSSEE Team (FOSSEE – IITB) Control flow 10 / 32

Page 12: Python language: Control Flow

Control flow Basic Looping

while: motivational problem

Example: Fibonacci seriesSum of previous two elements defines the next:

0, 1, 1, 2, 3, 5, 8, 13, 21, ...

FOSSEE Team (FOSSEE – IITB) Control flow 11 / 32

Page 13: Python language: Control Flow

Control flow Basic Looping

How do you solve this?

Task: Give computer, instructions to solve this

How would you solve it?How would you tell someone to solve it?

Assume you are given the starting values, 0 and 1.

FOSSEE Team (FOSSEE – IITB) Control flow 12 / 32

Page 14: Python language: Control Flow

Control flow Basic Looping

while: Fibonacci

Example: Fibonacci seriesSum of previous two elements defines the next:

0, 1, 1, 2, 3, 5, 8, 13, 21, ...

1 Start with: a, b = 0, 12 Next element: next = a + b3 Shift a, b to next values

a = bb = next

4 Repeat steps 2, 3 when b < 30

FOSSEE Team (FOSSEE – IITB) Control flow 13 / 32

Page 15: Python language: Control Flow

Control flow Basic Looping

while: Fibonacci

Example: Fibonacci seriesSum of previous two elements defines the next:

0, 1, 1, 2, 3, 5, 8, 13, 21, ...

1 Start with: a, b = 0, 12 Next element: next = a + b3 Shift a, b to next values

a = bb = next

4 Repeat steps 2, 3 when b < 30

FOSSEE Team (FOSSEE – IITB) Control flow 13 / 32

Page 16: Python language: Control Flow

Control flow Basic Looping

while: Fibonacci

Example: Fibonacci seriesSum of previous two elements defines the next:

0, 1, 1, 2, 3, 5, 8, 13, 21, ...

1 Start with: a, b = 0, 12 Next element: next = a + b3 Shift a, b to next values

a = bb = next

4 Repeat steps 2, 3 when b < 30

FOSSEE Team (FOSSEE – IITB) Control flow 13 / 32

Page 17: Python language: Control Flow

Control flow Basic Looping

while: Fibonacci

Example: Fibonacci seriesSum of previous two elements defines the next:

0, 1, 1, 2, 3, 5, 8, 13, 21, ...

1 Start with: a, b = 0, 12 Next element: next = a + b3 Shift a, b to next values

a = bb = next

4 Repeat steps 2, 3 when b < 30

FOSSEE Team (FOSSEE – IITB) Control flow 13 / 32

Page 18: Python language: Control Flow

Control flow Basic Looping

while: Fibonacci

Example: Fibonacci seriesSum of previous two elements defines the next:

0, 1, 1, 2, 3, 5, 8, 13, 21, ...

1 Start with: a, b = 0, 12 Next element: next = a + b3 Shift a, b to next values

a = bb = next

4 Repeat steps 2, 3 when b < 30

FOSSEE Team (FOSSEE – IITB) Control flow 13 / 32

Page 19: Python language: Control Flow

Control flow Basic Looping

while

In []: a, b = 0, 1In []: while b < 30:

...: print(b, end=’ ’)

...: next = a + b

...: a = b

...: b = next

...:

...:

Do this manually to check logicNote: Indentation determines scope

FOSSEE Team (FOSSEE – IITB) Control flow 14 / 32

Page 20: Python language: Control Flow

Control flow Basic Looping

while

We can eliminate the temporary next:

In []: a, b = 0, 1In []: while b < 30:

...: print(b, end=’ ’)

...: a, b = b, a + b

...:

...:1 1 2 3 5 8 13 21

Simple!

FOSSEE Team (FOSSEE – IITB) Control flow 15 / 32

Page 21: Python language: Control Flow

Control flow Basic Looping

for . . .range()

Example: print squares of first 5 numbers

In []: for i in range(5):....: print(i, i * i)....:....:

0 01 12 43 94 16

FOSSEE Team (FOSSEE – IITB) Control flow 16 / 32

Page 22: Python language: Control Flow

Control flow Basic Looping

range()

range([start,] stop[, step])

range() returns a sequence of integersThe start and the step arguments are optionalstop is not included in the sequence

Documentation conventionAnything within [] is optionalNothing to do with Python

FOSSEE Team (FOSSEE – IITB) Control flow 17 / 32

Page 23: Python language: Control Flow

Control flow Basic Looping

for . . .range()

Example: print squares of odd numbers from 3 to 9

In []: for i in range(3, 10, 2):....: print(i, i * i)....:....:

3 95 257 499 81

FOSSEE Team (FOSSEE – IITB) Control flow 18 / 32

Page 24: Python language: Control Flow

Control flow Basic Looping

Exercise with for

Convert the Fibonnaci sequence example to use a forloop with range.

FOSSEE Team (FOSSEE – IITB) Control flow 19 / 32

Page 25: Python language: Control Flow

Control flow Basic Looping

Solution

a, b = 0, 1for i in range(10):

print(b, end=’ ’)a, b = b, a + b

Note that the while loop is a more natural fit here

FOSSEE Team (FOSSEE – IITB) Control flow 20 / 32

Page 26: Python language: Control Flow

Control flow Basic Looping

break, continue, and pass

Use break to break out of loopUse continue to skip an iterationUse pass as syntactic filler

FOSSEE Team (FOSSEE – IITB) Control flow 21 / 32

Page 27: Python language: Control Flow

Control flow Basic Looping

break example

Find first number in Fibonnaci sequence < 100 divisibleby 4:

a, b = 0, 1while b < 500:

if b % 4 == 0:print(b)break

a, b = b, a + b

FOSSEE Team (FOSSEE – IITB) Control flow 22 / 32

Page 28: Python language: Control Flow

Control flow Basic Looping

continue

Skips execution of rest of the loop on currentiterationJumps to the end of this iterationSquares of all odd numbers below 10, notmultiples of 3

In []: for n in range(1, 10, 2):.....: if n%3 == 0:.....: continue.....: print(n*n)

FOSSEE Team (FOSSEE – IITB) Control flow 23 / 32

Page 29: Python language: Control Flow

Control flow Basic Looping

pass exampleTry this:

for i in range(5):if i % 2 == 0:

passelse:

print(i, ’is Odd’)

pass: does nothingKeep Python syntactically happy

Another example:

while True:pass

FOSSEE Team (FOSSEE – IITB) Control flow 24 / 32

Page 30: Python language: Control Flow

Exercises

Outline

1 Control flowBasic Conditional flow

2 Control flowBasic Looping

3 Exercises

FOSSEE Team (FOSSEE – IITB) Control flow 25 / 32

Page 31: Python language: Control Flow

Exercises

Problem 1.1: Armstrong numbers

Write a program that displays all three digit numbersthat are equal to the sum of the cubes of their digits.That is, print numbers abc that have the propertyabc = a3 + b3 + c3

For example, 153 = 13 + 53 + 33

HintsBreak problem into easier piecesHow would you solve the problem?Can you explain to someone else how to solve it?

FOSSEE Team (FOSSEE – IITB) Control flow 26 / 32

Page 32: Python language: Control Flow

Exercises

Some hints

What are the possible three digit numbers?Can you split 153 into its respective digits,a = 1, b = 5, c = 3?With a, b, c can you test if it is an Armstrongnumber?

FOSSEE Team (FOSSEE – IITB) Control flow 27 / 32

Page 33: Python language: Control Flow

Exercises

Solution: part 1

x = 153a = x//100b = (x%100)//10c = x%10

(a**3 + b**3 + c**3) == x

FOSSEE Team (FOSSEE – IITB) Control flow 28 / 32

Page 34: Python language: Control Flow

Exercises

Solution: part 2

x = 100while x < 1000:

print(x)x += 1 # x = x + 1

FOSSEE Team (FOSSEE – IITB) Control flow 29 / 32

Page 35: Python language: Control Flow

Exercises

Solution

x = 100while x < 1000:

a = x//100b = (x%100)//10c = x%10if (a**3 + b**3 + c**3) == x:

print(x)x += 1

FOSSEE Team (FOSSEE – IITB) Control flow 30 / 32

Page 36: Python language: Control Flow

Exercises

Problem 1.2: Collatz sequence

1 Start with an arbitrary (positive) integer.2 If the number is even, divide by 2; if the number is

odd, multiply by 3 and add 1.3 Repeat the procedure with the new number.4 It appears that for all starting values there is a

cycle of 4, 2, 1 at which the procedure loops.

Write a program that accepts the starting value andprints out the Collatz sequence.

FOSSEE Team (FOSSEE – IITB) Control flow 31 / 32

Page 37: Python language: Control Flow

Exercises

What did we learn?

Conditionals: if elif else

Looping: while & for

range

break, continue, pass

Solving simple problems

FOSSEE Team (FOSSEE – IITB) Control flow 32 / 32