Python/C4/Gettingstartedwithfunctions/English
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,

Show Slide 3
Prerequisite 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,

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
 
Show Slide 18
Solution of self assessment questions on slide 
And the answers,
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! 