Python/C4/Getting-started-with-functions /English

From Script | Spoken-Tutorial
Jump to: navigation, search
Visual Cue Narration
Show Slide 1

Containing title, name of the production team along with the logo of MHRD

Hello friends and welcome to the tutorial 'Getting started with functions'.
Show Slide 2

Learning objectives

At the end of this tutorial, you will be able to,
  1. Define a function.
  2. Define functions with arguments.
  3. Learn about docstrings.
  4. Learn about function return value.
  5. Read code.


Show Slide 3

Pre-requisite slide

Before beginning this tutorial,we would suggest you to complete the tutorial on "Conditionals" and "Loops".
Show Slide 4

Function

While writing code, we always want to reduce the number of lines of code, and functions is a way of reusing the code. Thus the same lines of code can be used as many times as needed. A function is a portion of code within a larger program that performs a specific task and is relatively independent of the remaining code. Now let us get more familiar with functions,
Show Slide 5

f(x) a mathematical function

Consider a mathematical function f(x) = x square. Here x is a variable and with different values of x the value of function will change. When x is one, f(1) will return the value 1 and f(2) will return us the value 4. Let us now see how to define the function f(x) in python.
Open the terminal
ipython
Start your ipython interpreter by typing,
def f(x):
 return x*x
Let us define our function f(x)
f(1)
f(2)
Well that defined the function, so before learning what we did let us see if it returns the expected values, try,
Yes, it returned 1 and 4 respectively. And now let us see what we did. We wrote two lines: The first line def f(x) is used to define the name and the parameters to the function, and the second line is used to fix what the function is supposed to return. def is a keyword and f is the name of the function and x the parameter of the function.

Pause the video here, try out the following exercise and resume the video.

Show Slide 6

Assignment 1

Write a python function named cube which computes the cube of

a given number n.

Continue from paused state Switch to the terminal
def cube(n):
  return n**3
Switch to your terminal for solution. The problem can be solved as,
cube(2) Let us check whether our function returns the cube of a number or not
def greet():
   print "Hello World!"
It returned 8,which means we have defined our function,the right way. And now let us see how to write functions without arguments.

let us define a new function called greet which will print Hello World.

greet() now we call the function as,
Well that is a function which takes no arguments. Also note that it is not mandatory for a function to return values. The function greet neither takes any argument nor returns any value.

Now let us see how to write functions with more than one argument.

Pause the video here, try out the following exercise and resume the video.

Show Slide 7

Assignment 2

Write a python function named avg which computes the average of a and b.
Continue from paused state Switch to the terminal
def avg(a,b):
    return (a + b)/2
Switch to your terminal for solution.
avg(20, 30) Let us test our function,
def avg(a,b):
  """ avg takes two numbers as input (a & b), and
returns the average of a and b"""
return (a+b)/2
We get the correct average, 25. Thus if we want a function to accept more arguments, we just list them separated with a comma between the parenthesis after the function's name in the def line.

It is always a good practice to document the code that we write, and for a function we define, we should write an abstract of what the function does, and that is called a docstring. Let us modify the function avg and add docstring to it. Do the following,

Show Slide 8

docstring

Note that docstrings are entered in the immediate line after the function definition and put as a triple quoted string. And here as far as the code functionality is concerned, we didn't do anything. We just added an abstract of what the function does.
Switch to the terminal
avg?
Now try this in the ipython interpreter.
f? It displays the docstring as we gave it. Thus docstring is a good way of documenting the function we write.

Now type,

It doesn't have a docstring associated with it. Also we cannot infer anything from the function name, and thus we are forced to read the code to understand about the function.

Pause the video here, try out the following exercise and resume the video.

Show Slide 9

Assignment 3

Add docstring to the function f.
Show Slide 10

Solution 3

We need to define the function again to add docstring to the function f and we do it as,
def f(x):
"""Accepts a number x as argument and,
returns the square of the number x."""
return x*x

Let us solve one more exercise Pause the video here, try out the following exercise and resume the video.

Show Slide 11

Self assessment questions slide

Show Slide 12

Assignment 4

Write a python function named circle which returns the

area and perimeter of a circle given radius r.

Switch to the terminal
def circle(r):
 """returns area and perimeter of a circle given radius r"""
 pi = 3.14
 area = pi * r * r
 perimeter = 2 * pi * r
 return area, perimeter
Switch to the terminal for solution.

The problem requires us to return two values instead of one which we were doing till now. We can solve the problem as,

a, p = circle(6)
print a
print p
A python function can return any number of values. There is no restriction for it.

Let us call the function circle as,

Show Slide 13

what

Now we have done enough coding, let us do some code reading exercise,
Pause here and try to figure out what the function what does.

def what( n ):

if n < 0: n = -n while n > 0:

Unexpected indentation.

if n % 2 == 1:

return False

Definition list ends without a blank line; unexpected unindent.

n /= 10

Block quote ends without a blank line; unexpected unindent.

return True

continue from paused state It will return true if n % 2 is not equal to 1 and will return false,

Unexpected indentation.

otherwise.

Show Slide 14

even_digits

def even_digits( n ):

"""returns True if all the digits in the number n are even, returns False if all the digits in the number n are not even""" if n < 0: n = -n while n > 0:

Unexpected indentation.

if n % 2 == 1:

return False

Definition list ends without a blank line; unexpected unindent.

n /= 10

Block quote ends without a blank line; unexpected unindent.

return True

The function here returns True if all the digits of the number n are even, otherwise it returns False.

Now one more code reading exercise,

Show Slide 15

what

Pause here and try to figure out what the function what does.

def what( n ):

i = 1 while i * i < n:

Unexpected indentation.

i += 1

Block quote ends without a blank line; unexpected unindent.

return i * i == n, i

continue from paused state The function returns two values. One it returns the result of the while statement whether true of false, and second it prints the value that ii` currently holds.

Show Slide 16

is_perfect_square

def is_perfect_square( n ):

"""returns True and square root of n, if n is a perfect square, otherwise returns False and the square root of the next perfect square""" i = 1 while i * i < n:

Unexpected indentation.

i += 1

Block quote ends without a blank line; unexpected unindent.

return i * i == n, i

Here, the function returns True and the square root of n if n is a perfect square, otherwise it returns False and the square root of the next perfect square.
Show Slide 17

Summary slide

This brings us to the end of this tutorial. In this tutorial, we have learnt to,
  1. Define functions in Python by using the keyword def.
  2. Call the function by specifying the function name.
  3. Assign a docstring to a function by putting it as a triple quoted string.
  4. Pass parameters to a function.
  5. Return values from a function.


Here are some self assessment questions for you to solve

1. What will the function do?

 def what(x)
     return x*x

- Returns the square of x
- Returns x
- Function doesn't have docstring
- Error
  1. How many arguments can be passed to a python function?
    • None
    • One
    • Two
    • Any
  1. Write a function which calculates the area of a rectangle.


Show Slide 18

Solution of self assessment questions on slide

And the answers,
  1. The function will result into an error due to the use of wrong syntax in defining the function. The function line should always end with a colon
  2. Any number of arguments can be passed to a python function.
  3. As we know, area of a rectangle is product of it's length and breadth. Hence, we define our function as,

Enumerated list ends without a blank line; unexpected unindent.

def area(l,b):
    return l * b
Show Slide 19

Acknowledgment slide

Hope you have enjoyed this tutorial and found it useful. Thank you!

Contributors and Content Editors

Chandrika