+ All Categories
Home > Documents > Python Functions - Stanford UniversityData structures Midterm Graphics Object-Oriented Programming...

Python Functions - Stanford UniversityData structures Midterm Graphics Object-Oriented Programming...

Date post: 13-Jul-2020
Category:
Upload: others
View: 15 times
Download: 0 times
Share this document with a friend
116
Python Functions CS106AP Lecture 6
Transcript
Page 1: Python Functions - Stanford UniversityData structures Midterm Graphics Object-Oriented Programming Everyday Python Life aer CS106AP! Day 1! Data structures Everyday Python Object-Oriented

Python FunctionsCS106AP Lecture 6

Page 2: Python Functions - Stanford UniversityData structures Midterm Graphics Object-Oriented Programming Everyday Python Life aer CS106AP! Day 1! Data structures Everyday Python Object-Oriented

RoadmapProgramming Basics

The Console Images

Data structures

MidtermGraphics

Object-Oriented Programming

Everyday Python

Life after CS106AP!

Day 1!

Page 3: Python Functions - Stanford UniversityData structures Midterm Graphics Object-Oriented Programming Everyday Python Life aer CS106AP! Day 1! Data structures Everyday Python Object-Oriented

Data structures

Everyday PythonObject-Oriented Programming

MidtermGraphics

Images

Programming Basics

RoadmapThe Console

Life after CS106AP!

Day 1!Python

FunctionsStrings and the Console

Page 4: Python Functions - Stanford UniversityData structures Midterm Graphics Object-Oriented Programming Everyday Python Life aer CS106AP! Day 1! Data structures Everyday Python Object-Oriented

Today’s questions

How do we translate what we know from Karel into regular Python code?

How can we make our code more flexible by producing different outputs depending on the input?

Page 5: Python Functions - Stanford UniversityData structures Midterm Graphics Object-Oriented Programming Everyday Python Life aer CS106AP! Day 1! Data structures Everyday Python Object-Oriented

Today’s topics

1. Introduction and Review

2. Range For Loops

3. Python Functions

4. Variable Scope

5. What’s next?

Page 6: Python Functions - Stanford UniversityData structures Midterm Graphics Object-Oriented Programming Everyday Python Life aer CS106AP! Day 1! Data structures Everyday Python Object-Oriented

Who am I?

Page 7: Python Functions - Stanford UniversityData structures Midterm Graphics Object-Oriented Programming Everyday Python Life aer CS106AP! Day 1! Data structures Everyday Python Object-Oriented

Sonja Johnson-Yu

Page 8: Python Functions - Stanford UniversityData structures Midterm Graphics Object-Oriented Programming Everyday Python Life aer CS106AP! Day 1! Data structures Everyday Python Object-Oriented

Sonja Johnson-Yu

Page 9: Python Functions - Stanford UniversityData structures Midterm Graphics Object-Oriented Programming Everyday Python Life aer CS106AP! Day 1! Data structures Everyday Python Object-Oriented

Sonja Johnson-Yu

Page 10: Python Functions - Stanford UniversityData structures Midterm Graphics Object-Oriented Programming Everyday Python Life aer CS106AP! Day 1! Data structures Everyday Python Object-Oriented

Sonja Johnson-Yu

Page 11: Python Functions - Stanford UniversityData structures Midterm Graphics Object-Oriented Programming Everyday Python Life aer CS106AP! Day 1! Data structures Everyday Python Object-Oriented

Review

Page 12: Python Functions - Stanford UniversityData structures Midterm Graphics Object-Oriented Programming Everyday Python Life aer CS106AP! Day 1! Data structures Everyday Python Object-Oriented

Variables

Page 13: Python Functions - Stanford UniversityData structures Midterm Graphics Object-Oriented Programming Everyday Python Life aer CS106AP! Day 1! Data structures Everyday Python Object-Oriented

What is a variable?

A variable is a container for storing a data value.

num_flowers = 5 num_flowers 5variable’s

name

Page 14: Python Functions - Stanford UniversityData structures Midterm Graphics Object-Oriented Programming Everyday Python Life aer CS106AP! Day 1! Data structures Everyday Python Object-Oriented

What is a variable?

A variable is a container for storing a data value.

num_flowers = 5 num_flowers 5

variable’svalue

Page 15: Python Functions - Stanford UniversityData structures Midterm Graphics Object-Oriented Programming Everyday Python Life aer CS106AP! Day 1! Data structures Everyday Python Object-Oriented

Terminology summary

● Variables have a name and are associated with a value

● Variable assignment is the process of associating a value with the name (use the equals sign =)

● Retrieval is the process of getting the value associated with the name (use the variable’s name)○ This is how you use variables!

Page 16: Python Functions - Stanford UniversityData structures Midterm Graphics Object-Oriented Programming Everyday Python Life aer CS106AP! Day 1! Data structures Everyday Python Object-Oriented

Expressions

Page 17: Python Functions - Stanford UniversityData structures Midterm Graphics Object-Oriented Programming Everyday Python Life aer CS106AP! Day 1! Data structures Everyday Python Object-Oriented

Recall: expressions

● The computer evaluates expressions to a single value

● We use operators to combine literals and/or variables into expressions

Page 18: Python Functions - Stanford UniversityData structures Midterm Graphics Object-Oriented Programming Everyday Python Life aer CS106AP! Day 1! Data structures Everyday Python Object-Oriented

Arithmetic operators

* Multiplication

/ Division

// Integer division

% Modulus (remainder)

+ Addition

- Subtraction

Operator Precedence

() 1

*, /, //, % 2

+, - 3

Page 19: Python Functions - Stanford UniversityData structures Midterm Graphics Object-Oriented Programming Everyday Python Life aer CS106AP! Day 1! Data structures Everyday Python Object-Oriented

Arithmetic operators

* Multiplication

/ Division

// Integer division

% Modulus (remainder)

+ Addition

- Subtraction

Operator Precedence

() 1

*, /, //, % 2

+, - 3

Integer division takes the largest integer that is equal to or smaller than the quotient

Page 20: Python Functions - Stanford UniversityData structures Midterm Graphics Object-Oriented Programming Everyday Python Life aer CS106AP! Day 1! Data structures Everyday Python Object-Oriented

Integer Division Practice!

● 5 + 1 // 2● 9 // 3● 8 // 3● -8 // 3

Integer division takes the largest integer that is equal to or smaller than the quotient

Page 21: Python Functions - Stanford UniversityData structures Midterm Graphics Object-Oriented Programming Everyday Python Life aer CS106AP! Day 1! Data structures Everyday Python Object-Oriented

Integer Division Practice!

● 5 + 1 // 2 = 5● 9 // 3 = 3● 8 // 3 = 2● -8 // 3 = -3

Integer division takes the largest integer that is equal to or smaller than the quotient

Page 22: Python Functions - Stanford UniversityData structures Midterm Graphics Object-Oriented Programming Everyday Python Life aer CS106AP! Day 1! Data structures Everyday Python Object-Oriented

How can I repeat a task a finite number of times?

Page 23: Python Functions - Stanford UniversityData structures Midterm Graphics Object-Oriented Programming Everyday Python Life aer CS106AP! Day 1! Data structures Everyday Python Object-Oriented

While loop with variables

counter = 0while counter < 3:

do_something()counter += 1

WARNING: do not use variables on Karel!

Page 24: Python Functions - Stanford UniversityData structures Midterm Graphics Object-Oriented Programming Everyday Python Life aer CS106AP! Day 1! Data structures Everyday Python Object-Oriented

While loop with variables

counter = 0while counter < 3:

do_something()counter += 1

This is the same thing as:counter = counter + 1

Page 25: Python Functions - Stanford UniversityData structures Midterm Graphics Object-Oriented Programming Everyday Python Life aer CS106AP! Day 1! Data structures Everyday Python Object-Oriented

While loop with variables

counter = 0while counter < 3:

do_something()counter += 1

Generally, x += y is the same as:x = x + y

Page 26: Python Functions - Stanford UniversityData structures Midterm Graphics Object-Oriented Programming Everyday Python Life aer CS106AP! Day 1! Data structures Everyday Python Object-Oriented

While loop with variables

counter = 0while counter < 3:

do_something()counter += 1

Generally, x += y is the same as:

You can also do: -=, *=, /=x = x + y

Page 27: Python Functions - Stanford UniversityData structures Midterm Graphics Object-Oriented Programming Everyday Python Life aer CS106AP! Day 1! Data structures Everyday Python Object-Oriented

While loop with variables

counter = 0while counter < 3:

do_something()counter += 1

Computer scientists count from 0.

Page 28: Python Functions - Stanford UniversityData structures Midterm Graphics Object-Oriented Programming Everyday Python Life aer CS106AP! Day 1! Data structures Everyday Python Object-Oriented

While loop with variables

counter = 0while counter < 3:

do_something()counter += 1

counter 0

Page 29: Python Functions - Stanford UniversityData structures Midterm Graphics Object-Oriented Programming Everyday Python Life aer CS106AP! Day 1! Data structures Everyday Python Object-Oriented

While loop with variables

counter = 0while counter < 3:

do_something()counter += 1

counter 0

Page 30: Python Functions - Stanford UniversityData structures Midterm Graphics Object-Oriented Programming Everyday Python Life aer CS106AP! Day 1! Data structures Everyday Python Object-Oriented

While loop with variables

counter = 0while counter < 3:

do_something()counter += 1

counter 0

True

Page 31: Python Functions - Stanford UniversityData structures Midterm Graphics Object-Oriented Programming Everyday Python Life aer CS106AP! Day 1! Data structures Everyday Python Object-Oriented

While loop with variables

counter = 0while counter < 3:

do_something()counter += 1

counter 1

True

Page 32: Python Functions - Stanford UniversityData structures Midterm Graphics Object-Oriented Programming Everyday Python Life aer CS106AP! Day 1! Data structures Everyday Python Object-Oriented

While loop with variables

counter = 0while counter < 3:

do_something()counter += 1

counter 2

True

Page 33: Python Functions - Stanford UniversityData structures Midterm Graphics Object-Oriented Programming Everyday Python Life aer CS106AP! Day 1! Data structures Everyday Python Object-Oriented

While loop with variables

counter = 0while counter < 3:

do_something()counter += 1

counter 3

Page 34: Python Functions - Stanford UniversityData structures Midterm Graphics Object-Oriented Programming Everyday Python Life aer CS106AP! Day 1! Data structures Everyday Python Object-Oriented

While loop with variables

counter = 0while counter < 3:

do_something()counter += 1

counter 3

False!

Page 35: Python Functions - Stanford UniversityData structures Midterm Graphics Object-Oriented Programming Everyday Python Life aer CS106AP! Day 1! Data structures Everyday Python Object-Oriented

For loops

Page 36: Python Functions - Stanford UniversityData structures Midterm Graphics Object-Oriented Programming Everyday Python Life aer CS106AP! Day 1! Data structures Everyday Python Object-Oriented

For loop with range

for i in range(3):do_something()

Page 37: Python Functions - Stanford UniversityData structures Midterm Graphics Object-Oriented Programming Everyday Python Life aer CS106AP! Day 1! Data structures Everyday Python Object-Oriented

For loop with range

for i in range(3):do_something()

for loopA way to repeat a block of code a specific number of

times

Definition

Page 38: Python Functions - Stanford UniversityData structures Midterm Graphics Object-Oriented Programming Everyday Python Life aer CS106AP! Day 1! Data structures Everyday Python Object-Oriented

For loop with range

for i in range(3):do_something()

Tells us we’re going to loop through one by one

Page 39: Python Functions - Stanford UniversityData structures Midterm Graphics Object-Oriented Programming Everyday Python Life aer CS106AP! Day 1! Data structures Everyday Python Object-Oriented

For loop with range

for i in range(3):do_something()

A variable that helps us keep track of where we are (index)

Page 40: Python Functions - Stanford UniversityData structures Midterm Graphics Object-Oriented Programming Everyday Python Life aer CS106AP! Day 1! Data structures Everyday Python Object-Oriented

For loop with range

for i in range(3):do_something()

Number of iterations

Page 41: Python Functions - Stanford UniversityData structures Midterm Graphics Object-Oriented Programming Everyday Python Life aer CS106AP! Day 1! Data structures Everyday Python Object-Oriented

For loop with range

for i in range(3):do_something()

Can be a variable, as long as it’s an int!

Page 42: Python Functions - Stanford UniversityData structures Midterm Graphics Object-Oriented Programming Everyday Python Life aer CS106AP! Day 1! Data structures Everyday Python Object-Oriented

For loop with range

for i in range(3):do_something()

Built-in function

Page 43: Python Functions - Stanford UniversityData structures Midterm Graphics Object-Oriented Programming Everyday Python Life aer CS106AP! Day 1! Data structures Everyday Python Object-Oriented

Range

range(3) -> iterates through 0,1,2

Page 44: Python Functions - Stanford UniversityData structures Midterm Graphics Object-Oriented Programming Everyday Python Life aer CS106AP! Day 1! Data structures Everyday Python Object-Oriented

Range

range(3) -> iterates through 0,1,2range(0, 3) -> iterates through 0,1,2

Page 45: Python Functions - Stanford UniversityData structures Midterm Graphics Object-Oriented Programming Everyday Python Life aer CS106AP! Day 1! Data structures Everyday Python Object-Oriented

Range

range(3) -> iterates through 0,1,2range(0, 3) -> iterates through 0,1,2range(4, 7) -> iterates through 4,5,6

Page 46: Python Functions - Stanford UniversityData structures Midterm Graphics Object-Oriented Programming Everyday Python Life aer CS106AP! Day 1! Data structures Everyday Python Object-Oriented

Range

for i in range(end_index):# assumes 0 is the start index

Page 47: Python Functions - Stanford UniversityData structures Midterm Graphics Object-Oriented Programming Everyday Python Life aer CS106AP! Day 1! Data structures Everyday Python Object-Oriented

Range

for i in range(end_index):# assumes 0 is the start index

for i in range(start_index, end_index):# end_index is not inclusive!# recall: range(4,7) -> 4,5,6

Page 48: Python Functions - Stanford UniversityData structures Midterm Graphics Object-Oriented Programming Everyday Python Life aer CS106AP! Day 1! Data structures Everyday Python Object-Oriented

How can I make my code more flexible?

Page 49: Python Functions - Stanford UniversityData structures Midterm Graphics Object-Oriented Programming Everyday Python Life aer CS106AP! Day 1! Data structures Everyday Python Object-Oriented

Python Functions

Page 50: Python Functions - Stanford UniversityData structures Midterm Graphics Object-Oriented Programming Everyday Python Life aer CS106AP! Day 1! Data structures Everyday Python Object-Oriented

turn_right()math.sqrt(4)

print(x) front_is_clear()

average(x, y)

predict_temperature()

Page 51: Python Functions - Stanford UniversityData structures Midterm Graphics Object-Oriented Programming Everyday Python Life aer CS106AP! Day 1! Data structures Everyday Python Object-Oriented

def turn_right():turn_left()turn_left()turn_left()

Karel Functions

Page 52: Python Functions - Stanford UniversityData structures Midterm Graphics Object-Oriented Programming Everyday Python Life aer CS106AP! Day 1! Data structures Everyday Python Object-Oriented

def move_x_times():# ????

Karel Functions

Page 53: Python Functions - Stanford UniversityData structures Midterm Graphics Object-Oriented Programming Everyday Python Life aer CS106AP! Day 1! Data structures Everyday Python Object-Oriented

def move_x_times():# ????

Karel Functions

How can we make functions more flexible and reusable by producing different outputs?

Page 54: Python Functions - Stanford UniversityData structures Midterm Graphics Object-Oriented Programming Everyday Python Life aer CS106AP! Day 1! Data structures Everyday Python Object-Oriented

Function Analogy

toaster()

Slide adapted from Chris Piech

Page 55: Python Functions - Stanford UniversityData structures Midterm Graphics Object-Oriented Programming Everyday Python Life aer CS106AP! Day 1! Data structures Everyday Python Object-Oriented

toaster(bread)

Function Analogy

bread

Slide adapted from Chris Piech

Page 56: Python Functions - Stanford UniversityData structures Midterm Graphics Object-Oriented Programming Everyday Python Life aer CS106AP! Day 1! Data structures Everyday Python Object-Oriented

toaster(bread)

Function Analogy

toastbread

Slide adapted from Chris Piech

Page 57: Python Functions - Stanford UniversityData structures Midterm Graphics Object-Oriented Programming Everyday Python Life aer CS106AP! Day 1! Data structures Everyday Python Object-Oriented

toaster(bagel)

Function Analogy

bagel

Slide adapted from Chris Piech

Page 58: Python Functions - Stanford UniversityData structures Midterm Graphics Object-Oriented Programming Everyday Python Life aer CS106AP! Day 1! Data structures Everyday Python Object-Oriented

toaster(bagel)

Function Analogy

bagel

Slide adapted from Chris Piech

You don’t need a different toaster for toasting bagels! Use the same one.

Page 59: Python Functions - Stanford UniversityData structures Midterm Graphics Object-Oriented Programming Everyday Python Life aer CS106AP! Day 1! Data structures Everyday Python Object-Oriented

toaster(bagel)

Function Analogy

toasted bagel

bagel

Slide adapted from Chris Piech

Page 60: Python Functions - Stanford UniversityData structures Midterm Graphics Object-Oriented Programming Everyday Python Life aer CS106AP! Day 1! Data structures Everyday Python Object-Oriented

Anatomy of a Function

function(input)input output

parameter(s)/arguments

“return value”

Page 61: Python Functions - Stanford UniversityData structures Midterm Graphics Object-Oriented Programming Everyday Python Life aer CS106AP! Day 1! Data structures Everyday Python Object-Oriented

Anatomy of a Function

def function_name(param1, param2):result = # do somethingreturn result

Page 62: Python Functions - Stanford UniversityData structures Midterm Graphics Object-Oriented Programming Everyday Python Life aer CS106AP! Day 1! Data structures Everyday Python Object-Oriented

Anatomy of a Function

def function_name(param1, param2):result = # do somethingreturn result function

definition

Page 63: Python Functions - Stanford UniversityData structures Midterm Graphics Object-Oriented Programming Everyday Python Life aer CS106AP! Day 1! Data structures Everyday Python Object-Oriented

Anatomy of a Function

def function_name(param1, param2):result = # do somethingreturn result name

Page 64: Python Functions - Stanford UniversityData structures Midterm Graphics Object-Oriented Programming Everyday Python Life aer CS106AP! Day 1! Data structures Everyday Python Object-Oriented

Anatomy of a Function

def function_name(param1, param2):result = # do somethingreturn result input expected

Page 65: Python Functions - Stanford UniversityData structures Midterm Graphics Object-Oriented Programming Everyday Python Life aer CS106AP! Day 1! Data structures Everyday Python Object-Oriented

Anatomy of a Function

def function_name(param1, param2):result = # do somethingreturn result parameters

Page 66: Python Functions - Stanford UniversityData structures Midterm Graphics Object-Oriented Programming Everyday Python Life aer CS106AP! Day 1! Data structures Everyday Python Object-Oriented

def function_name(param1, param2):result = # do somethingreturn result parameter(s)

One or more variables that a

function expects as input

Anatomy of a Function

Definition

Page 67: Python Functions - Stanford UniversityData structures Midterm Graphics Object-Oriented Programming Everyday Python Life aer CS106AP! Day 1! Data structures Everyday Python Object-Oriented

Anatomy of a Function

def function_name(param1, param2):result = # do somethingreturn result

output expected

Page 68: Python Functions - Stanford UniversityData structures Midterm Graphics Object-Oriented Programming Everyday Python Life aer CS106AP! Day 1! Data structures Everyday Python Object-Oriented

Anatomy of a Function

def function_name(param1, param2):result = # do somethingreturn result

return value

Page 69: Python Functions - Stanford UniversityData structures Midterm Graphics Object-Oriented Programming Everyday Python Life aer CS106AP! Day 1! Data structures Everyday Python Object-Oriented

Think/Pair/Share:Find the function definition, function name, parameter(s), and return value.

Page 70: Python Functions - Stanford UniversityData structures Midterm Graphics Object-Oriented Programming Everyday Python Life aer CS106AP! Day 1! Data structures Everyday Python Object-Oriented

Anatomy of a Function

def main():mid = average(10.6, 7.2)print(mid)

def average(a, b):sum = a + breturn sum / 2

Think/Pair/Share:

Find the function definition, function name, parameter(s), and return

value in average.

Page 71: Python Functions - Stanford UniversityData structures Midterm Graphics Object-Oriented Programming Everyday Python Life aer CS106AP! Day 1! Data structures Everyday Python Object-Oriented

Anatomy of a Function

def main():mid = average(10.6, 7.2)print(mid)

def average(a, b):sum = a + breturn sum / 2

function definition

Page 72: Python Functions - Stanford UniversityData structures Midterm Graphics Object-Oriented Programming Everyday Python Life aer CS106AP! Day 1! Data structures Everyday Python Object-Oriented

Anatomy of a Function

def main():mid = average(10.6, 7.2)print(mid)

def average(a, b):sum = a + breturn sum / 2

name

Page 73: Python Functions - Stanford UniversityData structures Midterm Graphics Object-Oriented Programming Everyday Python Life aer CS106AP! Day 1! Data structures Everyday Python Object-Oriented

Anatomy of a Function

def main():mid = average(10.6, 7.2)print(mid)

def average(a, b):sum = a + breturn sum / 2 parameters

Page 74: Python Functions - Stanford UniversityData structures Midterm Graphics Object-Oriented Programming Everyday Python Life aer CS106AP! Day 1! Data structures Everyday Python Object-Oriented

Anatomy of a Function

def main():mid = average(10.6, 7.2)print(mid)

def average(a, b):sum = a + breturn sum / 2 parameters

return value

Page 75: Python Functions - Stanford UniversityData structures Midterm Graphics Object-Oriented Programming Everyday Python Life aer CS106AP! Day 1! Data structures Everyday Python Object-Oriented

Anatomy of a Function

def main():mid = average(10.6, 7.2)print(mid)

def average(a, b):sum = a + breturn sum / 2

return value

Return valueValue that a function

hands back to the “calling” function

Definition

Page 76: Python Functions - Stanford UniversityData structures Midterm Graphics Object-Oriented Programming Everyday Python Life aer CS106AP! Day 1! Data structures Everyday Python Object-Oriented

Anatomy of a Function

def main():mid = average(10.6, 7.2)print(mid)

def average(a, b):sum = a + breturn sum / 2

return value

Return valueValue that a function

hands back to the “calling” function

Definition

What is the “calling” function?

Page 77: Python Functions - Stanford UniversityData structures Midterm Graphics Object-Oriented Programming Everyday Python Life aer CS106AP! Day 1! Data structures Everyday Python Object-Oriented

Anatomy of a Function

def main():mid = average(10.6, 7.2)print(mid)

def average(a, b):sum = a + breturn sum / 2

caller(calling function)

Page 78: Python Functions - Stanford UniversityData structures Midterm Graphics Object-Oriented Programming Everyday Python Life aer CS106AP! Day 1! Data structures Everyday Python Object-Oriented

Anatomy of a Function

def main():mid = average(10.6, 7.2)print(mid)

def average(a, b):sum = a + breturn sum / 2

caller(calling function)

callee(called function)

Page 79: Python Functions - Stanford UniversityData structures Midterm Graphics Object-Oriented Programming Everyday Python Life aer CS106AP! Day 1! Data structures Everyday Python Object-Oriented

Anatomy of a Function

def main():mid = average(10.6, 7.2)print(mid)

def average(a, b):sum = a + breturn sum / 2

function “call”

Page 80: Python Functions - Stanford UniversityData structures Midterm Graphics Object-Oriented Programming Everyday Python Life aer CS106AP! Day 1! Data structures Everyday Python Object-Oriented

Anatomy of a Function

def main():mid = average(10.6, 7.2)print(mid)

def average(a, b):sum = a + breturn sum / 2

arguments

Page 81: Python Functions - Stanford UniversityData structures Midterm Graphics Object-Oriented Programming Everyday Python Life aer CS106AP! Day 1! Data structures Everyday Python Object-Oriented

Anatomy of a Function

def main():mid = average(10.6, 7.2)print(mid)

def average(a, b):sum = a + breturn sum / 2

arguments

What’s the difference between arguments and parameters?

Page 82: Python Functions - Stanford UniversityData structures Midterm Graphics Object-Oriented Programming Everyday Python Life aer CS106AP! Day 1! Data structures Everyday Python Object-Oriented

Anatomy of a Function

def main():mid = average(10.6, 7.2)print(mid)

def average(a, b):sum = a + breturn sum / 2 parameters are the name of input

values in the function definition

Page 83: Python Functions - Stanford UniversityData structures Midterm Graphics Object-Oriented Programming Everyday Python Life aer CS106AP! Day 1! Data structures Everyday Python Object-Oriented

Anatomy of a Function

def main():mid = average(10.6, 7.2)print(mid)

def average(a, b):sum = a + breturn sum / 2

arguments are the values passed in when function is called!

Page 84: Python Functions - Stanford UniversityData structures Midterm Graphics Object-Oriented Programming Everyday Python Life aer CS106AP! Day 1! Data structures Everyday Python Object-Oriented

Anatomy of a Function

def main():mid = average(10.6, 7.2)print(mid)

def average(a, b):sum = a + breturn sum / 2

Note that we’re storing the returned value in a variable!

Page 85: Python Functions - Stanford UniversityData structures Midterm Graphics Object-Oriented Programming Everyday Python Life aer CS106AP! Day 1! Data structures Everyday Python Object-Oriented

Recall from last lecture:

>>> math.sqrt(4)

2.0

Function

Page 86: Python Functions - Stanford UniversityData structures Midterm Graphics Object-Oriented Programming Everyday Python Life aer CS106AP! Day 1! Data structures Everyday Python Object-Oriented

Recall from last lecture:

>>> math.sqrt(4)

2.0

Argument

Page 87: Python Functions - Stanford UniversityData structures Midterm Graphics Object-Oriented Programming Everyday Python Life aer CS106AP! Day 1! Data structures Everyday Python Object-Oriented

Recall from last lecture:

>>> math.sqrt(4)

2.0

Return value

Page 88: Python Functions - Stanford UniversityData structures Midterm Graphics Object-Oriented Programming Everyday Python Life aer CS106AP! Day 1! Data structures Everyday Python Object-Oriented

Anatomy of a Function

math.sqrt(4)4 2.0

argument return value

Page 89: Python Functions - Stanford UniversityData structures Midterm Graphics Object-Oriented Programming Everyday Python Life aer CS106AP! Day 1! Data structures Everyday Python Object-Oriented

Think/Pair/Share:Write a function that takes in two values and outputs the sum of their squares.

Page 90: Python Functions - Stanford UniversityData structures Midterm Graphics Object-Oriented Programming Everyday Python Life aer CS106AP! Day 1! Data structures Everyday Python Object-Oriented

Think/Pair/Share:Write a function that takes in two values and outputs the sum of their squares. [demo]

Page 91: Python Functions - Stanford UniversityData structures Midterm Graphics Object-Oriented Programming Everyday Python Life aer CS106AP! Day 1! Data structures Everyday Python Object-Oriented

Functions as Python Objects

def add(x, y):return x + y add function

object

Page 92: Python Functions - Stanford UniversityData structures Midterm Graphics Object-Oriented Programming Everyday Python Life aer CS106AP! Day 1! Data structures Everyday Python Object-Oriented

def turn_right():turn_left()turn_left()turn_left()

Parameters and return values are optional

“I’m a function too!”

Page 93: Python Functions - Stanford UniversityData structures Midterm Graphics Object-Oriented Programming Everyday Python Life aer CS106AP! Day 1! Data structures Everyday Python Object-Oriented

def turn_right():turn_left()turn_left()turn_left()

Parameters and return values are optional

“I’m a function too!”

no parameters

Page 94: Python Functions - Stanford UniversityData structures Midterm Graphics Object-Oriented Programming Everyday Python Life aer CS106AP! Day 1! Data structures Everyday Python Object-Oriented

def turn_right():turn_left()turn_left()turn_left()

Parameters and return values are optional

“I’m a function too!”no return value

Page 95: Python Functions - Stanford UniversityData structures Midterm Graphics Object-Oriented Programming Everyday Python Life aer CS106AP! Day 1! Data structures Everyday Python Object-Oriented

When am I allowed to use a variable?

Page 96: Python Functions - Stanford UniversityData structures Midterm Graphics Object-Oriented Programming Everyday Python Life aer CS106AP! Day 1! Data structures Everyday Python Object-Oriented

Scope

Page 97: Python Functions - Stanford UniversityData structures Midterm Graphics Object-Oriented Programming Everyday Python Life aer CS106AP! Day 1! Data structures Everyday Python Object-Oriented

Scope Variable Life Expectancy

Page 98: Python Functions - Stanford UniversityData structures Midterm Graphics Object-Oriented Programming Everyday Python Life aer CS106AP! Day 1! Data structures Everyday Python Object-Oriented

scopeThe parts of a program where you can access

a variable

Definition

Page 99: Python Functions - Stanford UniversityData structures Midterm Graphics Object-Oriented Programming Everyday Python Life aer CS106AP! Day 1! Data structures Everyday Python Object-Oriented

def main():function_name()print(y)

def function_name():x = 2y = 3

Variable Scope

this is the scopewhere x and y “live”

Page 100: Python Functions - Stanford UniversityData structures Midterm Graphics Object-Oriented Programming Everyday Python Life aer CS106AP! Day 1! Data structures Everyday Python Object-Oriented

Variable Scope

def main():function_name()print(y)

def function_name():x = 2y = 3

Page 101: Python Functions - Stanford UniversityData structures Midterm Graphics Object-Oriented Programming Everyday Python Life aer CS106AP! Day 1! Data structures Everyday Python Object-Oriented

Variable Scope

def main():function_name()print(y)

def function_name():x = 2y = 3

Page 102: Python Functions - Stanford UniversityData structures Midterm Graphics Object-Oriented Programming Everyday Python Life aer CS106AP! Day 1! Data structures Everyday Python Object-Oriented

Variable Scope

def main():function_name()print(y)

def function_name():x = 2y = 3

x 2

Page 103: Python Functions - Stanford UniversityData structures Midterm Graphics Object-Oriented Programming Everyday Python Life aer CS106AP! Day 1! Data structures Everyday Python Object-Oriented

Variable Scope

def main():function_name()print(y)

def function_name():x = 2y = 3

x 2

3y

Page 104: Python Functions - Stanford UniversityData structures Midterm Graphics Object-Oriented Programming Everyday Python Life aer CS106AP! Day 1! Data structures Everyday Python Object-Oriented

def main():function_name()print(y)

def function_name():x = 2y = 3

Variable Scope

Page 105: Python Functions - Stanford UniversityData structures Midterm Graphics Object-Oriented Programming Everyday Python Life aer CS106AP! Day 1! Data structures Everyday Python Object-Oriented

def main():function_name()print(y)

def function_name():x = 2y = 3

Variable Scope

NameError

Page 106: Python Functions - Stanford UniversityData structures Midterm Graphics Object-Oriented Programming Everyday Python Life aer CS106AP! Day 1! Data structures Everyday Python Object-Oriented

def main():function_name()print(y)

def function_name():x = 2y = 3

Variable Scope

y is now out of scope!

Page 107: Python Functions - Stanford UniversityData structures Midterm Graphics Object-Oriented Programming Everyday Python Life aer CS106AP! Day 1! Data structures Everyday Python Object-Oriented

def main():function_name()print(y)

def function_name():x = 2y = 3

Variable Scope

y is now out of scope!

Once a function finishes executing, the variables declared inside of it are no longer accessible!

Page 108: Python Functions - Stanford UniversityData structures Midterm Graphics Object-Oriented Programming Everyday Python Life aer CS106AP! Day 1! Data structures Everyday Python Object-Oriented

def main():y = function_name()print(y)

def function_name():x = 2y = 3return y

Unless...

Page 109: Python Functions - Stanford UniversityData structures Midterm Graphics Object-Oriented Programming Everyday Python Life aer CS106AP! Day 1! Data structures Everyday Python Object-Oriented

def main():y = function_name()print(y)

def function_name():x = 2y = 3return y

Unless...

if we return y, we can use it in main()

Page 110: Python Functions - Stanford UniversityData structures Midterm Graphics Object-Oriented Programming Everyday Python Life aer CS106AP! Day 1! Data structures Everyday Python Object-Oriented

Let’s put it all together!

Page 111: Python Functions - Stanford UniversityData structures Midterm Graphics Object-Oriented Programming Everyday Python Life aer CS106AP! Day 1! Data structures Everyday Python Object-Oriented

Receipt program

● What subtasks can we break this program into?

Page 112: Python Functions - Stanford UniversityData structures Midterm Graphics Object-Oriented Programming Everyday Python Life aer CS106AP! Day 1! Data structures Everyday Python Object-Oriented

Receipt program

● What subtasks can we break this program into?○ calculating tax○ calculating the tip○ aggregating tax and tip

[demo]

Page 113: Python Functions - Stanford UniversityData structures Midterm Graphics Object-Oriented Programming Everyday Python Life aer CS106AP! Day 1! Data structures Everyday Python Object-Oriented

Today’s questions

How do we translate what we know from Karel into regular Python code?

How can we make our code more flexible by producing different outputs depending on the input?

Page 114: Python Functions - Stanford UniversityData structures Midterm Graphics Object-Oriented Programming Everyday Python Life aer CS106AP! Day 1! Data structures Everyday Python Object-Oriented

What’s next?

Page 115: Python Functions - Stanford UniversityData structures Midterm Graphics Object-Oriented Programming Everyday Python Life aer CS106AP! Day 1! Data structures Everyday Python Object-Oriented

Tomorrow: making programs interactive!

● Strings: representations of text

● Interactive programs

Page 116: Python Functions - Stanford UniversityData structures Midterm Graphics Object-Oriented Programming Everyday Python Life aer CS106AP! Day 1! Data structures Everyday Python Object-Oriented

Data structures

Everyday PythonObject-Oriented Programming

MidtermGraphics

Images

Programming Basics

RoadmapThe Console

Life after CS106AP!

Day 1!Python

FunctionsStrings and the Console


Recommended