Presentation is loading. Please wait.

Presentation is loading. Please wait.

Programming for Engineers in Python Sawa 2015 Lecture 2: Lists and Loops 1.

Similar presentations


Presentation on theme: "Programming for Engineers in Python Sawa 2015 Lecture 2: Lists and Loops 1."— Presentation transcript:

1 Programming for Engineers in Python Sawa 2015 Lecture 2: Lists and Loops 1

2 2 Plan for today While loop Lists For loop

3 While Loop Used to repeat the same instructions until a stop criterion is met while expression: statement1 statement2 … expression true false statement(s)

4 4 Example - factorial #factorial n = 7 fact = 1 i = 1 while i <= n: fact = fact * i i = i + 1 print n, "! = ", fact

5 Example – smallest divisor # Find the smallest divisor n = 2015 div = 2 while n % div != 0: div = div + 1 print "Smallest divisor of", n, "is", div  Can the while loop above be infinite? 5

6 Infinite Loops i = 1 while i < 4: print i 6

7 7 Plan for today Highlights from last week While loop Lists For loop

8 Lists A list is an ordered sequence of elements. Create a list in Python: >>> my_list = [2, 3, 5, 7, 11] >>> my_list [2,3,5,7,11] 8

9 Lists are Indexable Remember this? The same indexing + slicing works for lists! 9

10 Lists are Indexable >>> my_list = [2, 3, 5, 7, 11] >>> my_list[0] 2 >>> my_list[4] 11 >>> my_list[-3] 5 >>> my_list[5] Traceback (most recent call last): File " ", line 1, in my list[5] IndexError: list index out of range 10 117532 43210 -2-3-4-5

11 Slicing >>> my_list = [1,2,3,4,5,6,7,8,9,10] >>> my_list[1:5] # slicing [2, 3, 4, 5] >>> my_list[0:-1] # forward/backward indexing [1, 2, 3, 4, 5, 6, 7, 8, 9] >>> my_list[::2] # add a step [1, 3, 5, 7, 9] 11

12 Slicing # reverse >>> my_list[::-1] [10, 9, 8, 7, 6, 5, 4, 3, 2, 1] # output is an empty list. This is NOT an error >>> my_list[3:8:-2] [] # slicing does NOT change original list >>> my_list [1,2,3,4,5,6,7,8,9,10] 12

13 Lists Lists can contain strings: >>> days = ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"] >>> days[3] 'Wed' >>> len(days) 7 Lists can mix different types: >>> pi = ['pi', 3.14159, True] # student: name, age, height, SAT >>> student = ['Roi', 21, 1.83, 782] 13

14 Lists – Dynamic Maintain a list of the students either by name or by id: >>> students = ['Itay',9255587, 'Alon', 'Zohar',744554887] >>> students[2] 'Alon' Michal decided to join the course, so we update the list: # append - add an element to the end of the list >>> students.append('Michal') >>> students ['Itay', 9255587, 'Alon', 'Zohar', 744554887, 'Michal'] 14

15 Lists – Dynamic Alon wants to leave the course: >>> students.remove('Alon') >>> students ['Itay', 9255587, 'Zohar', 744554887, 'Michal'] remove removes only the first occurrence of a value. 15

16 Nested Lists >>> mat = [ [1, 2, 3],[4, 5, 6] ] >>> mat[1] [4,5,6] >>> mat[1][2] 6 What is len(mat) ? 16

17 Nested Lists >>> family = [‘Meir‘, [‘Yossi‘, [‘Yuval‘, [‘Elisha‘]] ], [‘Yitzhak‘, [‘Meir‘], [‘Orna‘], [‘Evyatar‘] ], [‘Gavri‘, [’Uri‘], [‘Boaz‘] ],] 17

18 Range An ordered list of integers in the range. >>> range(10) [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] range(from, to) contains all integers k satisfying from ≤ k < to. range(to) is a shorthand for range(0, to). >>> range(2,10) [ 2, 3, 4, 5, 6, 7, 8, 9] >>> range(-2,2) [-2, -1, 0, 1] >>> range(4,2) [] 18

19 Range >>> type(range(3)) Step size: range(from, to, step) returns: from, from+step, from+2*step,…, from+i*step until to is reached, not including to itself. >>> range(0,10,2) [0, 2, 4, 6, 8] >>> range(10,0,-2) [10, 8, 6, 4, 2] 19

20 Range >>> range (0, 10, -1) [] >>> range (0,10,0) Traceback (most recent call last): File " ", line 1, in range(0,10,0) ValueError: range() step argument must not be zero 20

21 21 Plan for today Highlights from last week While loop Lists For loop

22 For Loop for element in iterable: statement 1 statement 2 … Run over all elements in the iterable (list, string, etc.) Iteration 0: Assign element = iterable[0] Execute the statements Iteration 1: Assign element = iterable[1] Execute the statements … 22

23 For Loop 23

24 For Example Compute 1 + 2 + … + 100: The sum is 5050 Shortcut: sum(range(1,101)) 24

25 25 For Example # factorial n = 8 fact = 1 for i in range(2, n+1): fact = fact * i print n, "! = ", fact Syntactic sugar: fact *= i is equivalent to fact = fact * i

26 26 Fibonacci series 0, 1, 1, 2, 3, 5, 8, 13, 21, 34 Definition fib(0) = 0 fib(1) = 1 fib(n) = fib(n-1) + fib(n-2) en.wikipedia.org/wiki/Fibonacci_numberLeonardo Fibonacci 1170-1250, Italy

27 27 סלט פיבונאצ'י

28 28 Fibonacci series Write a program that for an integer n > 0, prints the n th Fibonacci number.

29 29 Fibonacci series - code n = 10 if n < 2: curr = n else: prev = 0 curr = 1 for i in range(2, n+1): new = prev + curr prev = curr curr = new print "The nth Fibonacci number is", curr

30 30 Fibonacci – Another Code n = input(“Insert a non-negative number") fibs = [0, 1] for i in range(2, n + 1): fibs.append(fibs[-1] + fibs[-2]) print fibs[n] Is shorter code necessarily better? What about memory consumption?

31 For loop – Average # Average ages = [19, 22, 20] sum_ages = 0 for age in _____: ____________ sum_ages = sum_ages/len(ages) 31 ages sum_ages += age

32 For loop – Average Distance start_points = [5, 2, 8] end_points = [15, 14, 21] num_points = len(end_points) sum_dist = 0 for i in ____________: ____________________ sum_dist = sum_dist / num_points 32 range(num_points) sum_dist += end_points[i] – start_points[i]

33 For Loop and Strings Iterate over strings: name = "Kobe" for letter in name: print "Give me", letter print "What did we get?", name Give me K Give me o Give me b Give me e What did we get? 33

34 Example: Change Elements in List lst = [1, 4, 3, 6, 8] # we want to zero every odd element. 34 # take 2 inds_lst = range(len(lst)) for ind in inds_lst: if lst[ind] % 2 == 0: lst[ind] = 0 print lst # take 1 for elem in lst: if elem % 2 == 0: elem = 0 print lst

35 For loop – Think First! Given a sequence seq, we’ve seen 2 ways to go over it using a for loop: 1.Go over the elements of seq directly. for elem in seq: … # Do something with elem. 2.Go over the indexes of seq: for i in range(len(seq)): … # Do something with seq[i]. Before writing a for loop – choose the form which works better for you. 35

36 Break – breaking loops break terminates the nearest enclosing loop, skipping the code that follows the break inside the loop. Used for getting out of loops when a condition occurs. Example: for elem in lst: if elem < 0: print "First negative number is", elem break 36

37 # Find smallest divisor using for loop: for div in range(2, n+1): if n % div == 0: break print div Break Example 37

38 38 Example - Prime n = 2013 for div in range(2,int(n**0.5)): if n % div == 0: break if n % div == 0: print n, "is not prime" else: print n, "is prime" range must accept argument of the type int so we perform casting on the result of the power operation.

39 Continue 39 The continue statement, continues with the next iteration of the loop. Example - create a list of unique elements: >>> lst = [1,4,5,8,3,5,7,1,2] >>> uniques = [] >>> for x in lst: if x in uniques: continue uniques.append(x) >>> print uniques [1,4,5,8,3,7,2]

40 40 for or while? In most cases it is more natural to use for In some cases it is better to use while for: Predefined number of iterations No need to initialize or advance the loop variable while: Unknown number of iterations Can specify a stop condition

41 Let’s Play! secret = input(“Choose a number: ”)) while True: guess = input("Enter guess: ")) if _______________: break elif ______________: print "Try a higher number" else: print "Try a lower number" print "Right!" 41 guess == secret guess < secret Player 1 Player 2 Hint (sample output) Choose a number: 34 Enter guess: 100 Try a lower number Enter guess: 50 Try a lower number Enter guess: 25 Try a higher number Enter guess: 35 Try a lower number Enter guess: 34 Right! Hint (sample output) Choose a number: 34 Enter guess: 100 Try a lower number Enter guess: 50 Try a lower number Enter guess: 25 Try a higher number Enter guess: 35 Try a lower number Enter guess: 34 Right!

42 42 Programming Style Comments: # Meaningful variables names Why is it important?

43 43 Exercise – Integer Division Input: Two positive integers – A and B Output: How many times A contains B (the result of the integer division A/B) Do not use the operators ‘/’, ‘*’

44 44 Exercise – Power of Two Input: a positive integer A Output: If there is an integer N such that A == 2 N then print N, otherwise print a suitable message.

45 45 Write a program that prints an upside-down triangle of *. Input: The height of the triangle. ***** *** ** **** * Exercise – Triangle Printout


Download ppt "Programming for Engineers in Python Sawa 2015 Lecture 2: Lists and Loops 1."

Similar presentations


Ads by Google