18
1 CSC 221: Introduction to Programming Fall 2012 Functions & Modules standard modules: math, random Python documentation, help user-defined functions, computational abstraction parameters, local variables return statements

1 CSC 221: Introduction to Programming Fall 2012 Functions & Modules standard modules: math, random Python documentation, help user-defined functions,

Embed Size (px)

Citation preview

Page 1: 1 CSC 221: Introduction to Programming Fall 2012 Functions & Modules  standard modules: math, random  Python documentation, help  user-defined functions,

1

CSC 221: Introduction to Programming

Fall 2012

Functions & Modules standard modules: math, random Python documentation, help user-defined functions, computational abstraction parameters, local variables return statements

Page 2: 1 CSC 221: Introduction to Programming Fall 2012 Functions & Modules  standard modules: math, random  Python documentation, help  user-defined functions,

Built-in functions

Python provides many built-in functions mathematically, a function is a mapping from some number of inputs to an output

e.g., the abs function maps a single number to its absolute value

e.g., the max/min functions map two or more numbers to the maximum/minimum number

2

note that these functions do not just print the output, they return it that is, a function call can appear in an expression, its value is the output value

Page 3: 1 CSC 221: Introduction to Programming Fall 2012 Functions & Modules  standard modules: math, random  Python documentation, help  user-defined functions,

Modules & functions

in addition to these basic, built-in functions, the math module contains other useful functions

3

as with turtle, you load a module using import

can then call functions from the math module as math.FUNC(…)

also have constants for π and e

Page 4: 1 CSC 221: Introduction to Programming Fall 2012 Functions & Modules  standard modules: math, random  Python documentation, help  user-defined functions,

Why the prefix?

the round function does not have a prefix: round(3.2)

but the ceiling function does: math.ceil(3.2)

4

when a module is loaded using import, the module prefix must be used to clearly identify functions (since different modules might have functions with the same name)

no ambiguity for built-in functions or modules run directly in IDLE, so no prefix required

Page 5: 1 CSC 221: Introduction to Programming Fall 2012 Functions & Modules  standard modules: math, random  Python documentation, help  user-defined functions,

random module

the random module contains functions for generating random values

5

random() returns a float from range [0, 1)

randint(X, Y) returns an int from range [X, Y]

choice() returns a random character from a str

Page 6: 1 CSC 221: Introduction to Programming Fall 2012 Functions & Modules  standard modules: math, random  Python documentation, help  user-defined functions,

Python documentation

you can get the latest Python details online

Language Reference gives an overview of the language

Library Reference documents the common library modules (e.g., math, random, turtle)

Global Module Index allows you to search for modules by name

6

Page 7: 1 CSC 221: Introduction to Programming Fall 2012 Functions & Modules  standard modules: math, random  Python documentation, help  user-defined functions,

Python help

modules are also self-documenting

call the help function to see info on a function

can also call help on the entire module

7

Page 8: 1 CSC 221: Introduction to Programming Fall 2012 Functions & Modules  standard modules: math, random  Python documentation, help  user-defined functions,

User-defined functions

in addition to built-in and standard module functions, you can organize your code into functions recall the population growth code

8

as is, you have to rerun the module each time you want to calculate a new growth estimate

better solution – package the code into a function, then can call that function repeatedly

Page 9: 1 CSC 221: Introduction to Programming Fall 2012 Functions & Modules  standard modules: math, random  Python documentation, help  user-defined functions,

Simple functionsin its simplest form, a Python function is a sequence of statements grouped

together into a block general form: def FUNC_NAME():

SEQUENCE_OF_STATEMENTS

9

the statements that make up the function block must be indented (consistently)

you can have blank lines inside the function for readability

consecutive blank lines will end the function

Page 10: 1 CSC 221: Introduction to Programming Fall 2012 Functions & Modules  standard modules: math, random  Python documentation, help  user-defined functions,

Advantages of functions

functions encapsulate a series of statements under a name once defined, a function can be called over and over without rerunning the module

a python function is analogous to a Scratch script, which combines a sequence of blocks that can be executed as a unit

10

Page 11: 1 CSC 221: Introduction to Programming Fall 2012 Functions & Modules  standard modules: math, random  Python documentation, help  user-defined functions,

Exercise: FORCAST function

convert your FORCAST reading level code into a function encapsulate the code under a function name, e.g., readingLevel

test your function by running the module and then doing multiple reading level calculations

11

simple functions like these are units of computational abstraction the function encapsulates a sequence of computations into a single unit once you know the name you no longer need to remember how it works (i.e., you

abstract away the details and focus on the overall effect)

but they don't resemble math functions very closely no inputs & no explicit output

Page 12: 1 CSC 221: Introduction to Programming Fall 2012 Functions & Modules  standard modules: math, random  Python documentation, help  user-defined functions,

Functions with inputs

to generalize a function so that it can take inputs, must add parameters a parameter is a variable that appears in the heading of a function definition (inside

the parentheses) when the function is called, you must provide an input value for each parameter these input values are automatically assigned to the parameter variables

12

Page 13: 1 CSC 221: Introduction to Programming Fall 2012 Functions & Modules  standard modules: math, random  Python documentation, help  user-defined functions,

Exercise: parameterizing FORCAST

modify your readingLevel function to have two parameters

def readingLevel(singleWords, totalWords)

note that the input values match up with parameters in the order provided

>>> readingLevel(104, 380)

13

prompts vs. inputs? if your code requires many different input values, then having a function that

prompts for each value is often simpler (prompts remind the user of what to enter)

if there are few inputs, then often simpler & quicker to provide them as inputs avoids the prompts and allows the user to enter the values directly allows you to determine the inputs some other way (e.g., another function to

calculate the input values)

Page 14: 1 CSC 221: Introduction to Programming Fall 2012 Functions & Modules  standard modules: math, random  Python documentation, help  user-defined functions,

Functions that return values

consider functions that convert distances in Metric & Imperial a return statement specifies the output value for a function

14

the reverse conversion could be similarly defined using the 0.3048 factor or, could make use of the existing feetToMeters function

Page 15: 1 CSC 221: Introduction to Programming Fall 2012 Functions & Modules  standard modules: math, random  Python documentation, help  user-defined functions,

Print vs. return

when the results are complex, printing is more readable the population results involve two numbers and description text

much easier to understand than

15

however, a function that prints its results is limited the user can view the displayed results, but it cannot be used by other code if returned, the result can be used in other computations

if the result of a computation is potentially useful for some other computation, then return that result

Page 16: 1 CSC 221: Introduction to Programming Fall 2012 Functions & Modules  standard modules: math, random  Python documentation, help  user-defined functions,

Exercise: years vs. seconds

define a function that converts a number of years into the corresponding number of seconds

similarly, define a function that does the opposite conversion

16

Page 17: 1 CSC 221: Introduction to Programming Fall 2012 Functions & Modules  standard modules: math, random  Python documentation, help  user-defined functions,

Function doc strings

it is considered good programming practice to put a multiline comment at the beginning of every function definition it should briefly document the purpose of the function

in addition to making it easier to read the code in the editor, the doc string can be viewed in the interpreter shell using the built-in help function

17

Page 18: 1 CSC 221: Introduction to Programming Fall 2012 Functions & Modules  standard modules: math, random  Python documentation, help  user-defined functions,

Simulating dice rolls

Consider the following function for simulating the roll of a die

what is good about this code? what is bad?

18

suppose we wanted to generalize the function so that it works for an N-sided die

suppose we wanted to get the sum of two die rolls