clase 5 python

Upload: paul-astoquillca-aguilar

Post on 07-Jul-2018

223 views

Category:

Documents


0 download

TRANSCRIPT

  • 8/18/2019 Clase 5 Python

    1/26

    CLASE 5

    Funciones y procedimientos

  • 8/18/2019 Clase 5 Python

    2/26

    Funciones 

    En programación, una función es una sección de un programa que calcula unvalor de manera independiente al resto del programa.

    Una función tiene tres componentes importantes:

    1. los parámetros, que son los valores que recibe la función como entrada;2. el código de la función, que son las operaciones que hace la función;3. el resultado (o valor de retorno), que es el valor final que entrega la

    función.

    En esencia, una función es un mini programa

  • 8/18/2019 Clase 5 Python

    3/26

    Importación de nombres

    Funciones de python (Módulos)

    La sentencia import importa objetos desde un módulo para poder ser usados en elprograma actual.

    Una manera de usar import es importar sólo los nombres específicos que uno deseautilizar en el programa:

    from math import sin, cos

    print sin(10)print cos(20)

    En este caso, las funciones sin y cos no fueron creadas por nosotros, sino

    importadas del módulo de matemáticas, donde están definidas.

    La otra manera de usar import es importando el módulo completo, y accediendo asus objetos mediante un punto:

    import math

    print math.sin(10)

    print math.cos(10)

    Las dos formas son equivalentes. Como siempre, hay que optar por la que hace

    que el programa sea más fácil de entender

  • 8/18/2019 Clase 5 Python

    4/26

    Funciones de python (Módulos)

    EL MÓDULO MATHPython dispone de un modulo matemático que proporciona la mayoría

    de las funciones matemáticas habituales. Un módulo es un archivo que

    contiene una colección de funciones agrupadas juntas.

    Antes de poder usar las funciones de un módulo, tenemos que importarlo:

    >>>import math

    Para llamar a una de las funciones, tenemos que especificar el nombre

    del módulo y el nombre de la función, separados por un punto. A esto se

    le llama notación de punto:

    decibelio = math.log10 (17.0)

    angulo = 1.5

    altura = math.sin(angulo)

  • 8/18/2019 Clase 5 Python

    5/26

    También existen varias funciones que siempre están disponibles sin

    necesidad de importar ningún módulo, por ejemplo:

    >>>abs(-7)

    7>>>max(5,7,6)

    7

    La lista de las funciones que siempre están disponibles puede verse

    en:http://docs.python.org/library/functions.html 

    >>> from math import exp, cos

    >>> from math import pi, e

    >>> print cos(pi / 3)

    0.5

    Python viene «de fábrica» con muchos módulos listos para ser usados.

    Además, es posible descargar de internet e instalar módulos prácticamente

    para hacer cualquier cosa. Por último, aprenderemos a crear nuestros

    propios módulos.

    http://docs.python.org/library/functions.htmlhttp://docs.python.org/library/functions.html

  • 8/18/2019 Clase 5 Python

    6/26

    EL MÓDULO RANDOMEste módulo contiene funciones para producir números aleatorios (al azar):

    1.- random.randrange([start,] stop [,step]) 

    El método randrange devuelve un elemento seleccionado al azar y comosu nombre lo dice, el numero aleatorio que nos va a devolver tiene que

    estar dentro de un rango ingresado por nosotros.

    start - punto de inicio del rango (el inicio se incluye en el rango)stop - punto final del rango (no se incluye dentro del rango)

    step - agrega un salto en el rango>>> random.randrange(10)

    7

    >>> random.randrange(10)

    2

    >>> random.randrange(10)

    5

    >>>print random.randrange(1, 12, 2) #Las opciones son (1, 3, 5, 7, 9, 11)

    3

    >>>print random.randrange(0, 11, 2) #Las opciones son (0, 2, 4, 6, 8, 10)

    2

  • 8/18/2019 Clase 5 Python

    7/26

    >>> from random import choice, randrange,

    >>> choice(['cara', 'sello'])

    'cara'>>> choice(['cara', 'sello'])

    'sello'

    >>> r = range(5)

    >>> r

    [0, 1, 2, 3, 4]

    >>> shuffle(r)>>> r

    [4, 2, 0, 3, 1]

    2.- random.choice(secuencia)Devuelve un elemento aleatorio de una secuencia no vacía

    3.- random.shuffle(a)La función shuffle mezcla aleatoriamente el orden de los

    elementos.

  • 8/18/2019 Clase 5 Python

    8/26

    AÑADIR FUNCIONES NUEVAS

    Hasta ahora solo hemos usado las funciones que vienen incluidas conPython, pero también es posible añadir nuevas funciones. La creación

    de nuevas funciones para resolver sus problemas particulares es una de

    las cosas más útiles de los lenguajes de programación de propósito

    general.

    La sintaxis de la definición de una función es:

    def NOMBRE ( LISTA DE PARAMETROS ):SENTENCIAS

    def  es la instrucción para definir una función nueva

  • 8/18/2019 Clase 5 Python

    9/26

    FUNCIONES CON UN PARÁMETRO

    Empezaremos definiendo una función muy sencilla, una que recibe unnúmero y devuelve el cuadrado de dicho número. El nombre que daremos

    a la función es cuadrado. Observa este fragmento de programa: (el archivo

    se llama cuadrado.py)

    def cuadrado(n):

    return n** 2

    Para dar nombre a las funciones y a sus parámetros sólo se pueden usar letras

    (alfabeto inglés).

    La primera línea de la función es su encabezado y las instrucciones (segunda

    línea) son el cuerpo. El cuerpo debe estar corrido hacia la derecha.

    La función contiene código igual al de cualquier programa. La diferencia es

    que, al terminar, debe entregar su resultado usando la sentencia return.

  • 8/18/2019 Clase 5 Python

    10/26

    def es_mayor_de_edad(edad):

    if edad < 18:

    return Falseelse:

    return True

    A continuación mostramos una función que nos indica si una persona es o

    no mayor de edad, notemos que devuelve un booleano.

    Las variables que son creadas dentro de la función (incluyendo los

    parámetros y el resultado) se llaman variables locales, y sólo son visibles

    dentro de la función, no desde el resto del programa.

  • 8/18/2019 Clase 5 Python

    11/26

    IMPORTAR FUNCIONES PROPIASSentencia que permite que las funciones y variables definidas en un guión de

    Python estén disponibles en el ámbito de otro guión o en una sesióninteractiva con la terminal de Python.

    Por ejemplo, suponga que las siguientes instrucciones están en un guión

    llamado clase1.py:

    def muestra_tres_veces(algo):

    print algo, algo, algo

    g = 10

    fc = «Facultad de Ciencias»

  • 8/18/2019 Clase 5 Python

    12/26

    si importamos todo el contenido de clase1.py, podemos usar todo lo

    que ahí está definido:

    >>> from clase1 import *

    >>> g

    10

    >>> fc

    ‘Facultad de Ciencias' 

    >>> muestra_tres_veces("¡Hurra!")

    ¡Hurra! ¡Hurra! ¡Hurra!

    >>>

    Nota.-Cuando se importa un módulo llamado por ejemplo spam, el intérprete busca unarchivo llamado spam.py en el directorio actual, y luego en la lista de directoriosespecificada por la variable de entorno PYTHONPATH.

  • 8/18/2019 Clase 5 Python

    13/26

    El camino de búsqueda de los

    módulos Cuando se importa un módulo llamado spam, el intérprete busca un archivollamado spam.py en el directorio actual, y luego en la lista de directorios

    especificada por la variable de entorno PYTHONPATH.Esta tiene la misma sintáxis que la variable de shell PATH, o sea, una lista denombres de directorios.

    Cuando PYTHONPATH no está configurada, o cuando el archivo no se encuentraallí, la búsqueda continua en un camino por omisión que depende de la

    instalación; en Unix, este es normalmente

    .:/usr/lib/python.

  • 8/18/2019 Clase 5 Python

    14/26

    Ejercicio

    1. Cree un programa que calcule el factorial de un número.2. Cree una función donde ingrese una lista y nos devuelva el menor

    elemento de esa lista.

    def min(l):

    l.sort()

    return l[0]

    def factorial(n):

    f = 1for i in range(1, n + 1):

    f *= i

    return f

  • 8/18/2019 Clase 5 Python

    15/26

    FUNCIONES CON VARIOS PARÁMETROSVamos a definir ahora una función con dos parámetros: una función

    que devuelve el valor del área de un rectángulo dadas su altura y suanchura:

    def area(b,h):

    return b*h/2

    def mini(a,b):

    m=0

    if a

  • 8/18/2019 Clase 5 Python

    16/26

    EjercicioUsando la función factorial, cree la función comb(m,n) que nos permita hallar el

    combinatorio de m en n.

    def comb(m, n):

    fact_m = factorial(m)

    fact_n = factorial(n)

    fact_m_n = factorial(m - n)c = fact_m / (fact_n * fact_m_n)

    return c

  • 8/18/2019 Clase 5 Python

    17/26

    FUNCIONES SIN PARÁMETROSlo único que debes tener presente es que es obligatorio poner paréntesis

    a continuación del identificador, tanto al definir la función como alinvocarla.

    def lee_ent():

    n=input('ingresa un entero: ')

    return n

    >>>n = lee_entero()

    A continuación mostramos un programa que no recibe valores pero

    devuelve uno

  • 8/18/2019 Clase 5 Python

    18/26

    PROCEDIMIENTOS: FUNCIONES SINDEVOLUCIÓN DE VALORNo todas las funciones devuelven un valor. Una función que no devuelve un

    valor se denomina procedimiento. ¿Y para qué sirve una función que no

    devuelve nada? Bueno, puede, por ejemplo, mostrar mensajes o resultados

    por pantalla.

    def misaludo():

    print 'hola a todos'

    print 'Esto es python

    def imprimir_datos(nombre, apellido, rol, dia, mes, anyo):

    print 'Nombre completo:', nombre, apellidoprint 'Rol:', rol

    print 'Fecha de nacimiento:', dia, '/', mes, '/', anyo

    imprimir_datos('Perico', 'Los Palotes', '201101001-1', 3, 1, 1993)

    imprimir_datos('Fulano', 'De Tal', '201101003-3', 14, 5, 1990)

  • 8/18/2019 Clase 5 Python

    19/26

    FUNCIONES QUE DEVUELVEN VARIOSVALORES

    En principio una función puede devolver un solo valor con la sentencia

    return. Pero sabemos que una lista es un objeto que contiene una

    secuencia de valores. Si devolvemos una lista podemos, pues, devolver

    varios valores.

    Por ejemplo, una función puede devolver al mismo tiempo el mínimoy el máximo de dos números:

    def minmax(a,b):

    if a

  • 8/18/2019 Clase 5 Python

    20/26

    ¿Cómo podríamos llamar a esa función?

    a = minmax (10, 5)

    print ’El mínimo es’, a[0]print ’El máximo es’, a[1]

    [minimo, máximo] = minmax(10, 5)

    print ’El mínimo es’, mínimo print ’El máximo es’, máximo 

  • 8/18/2019 Clase 5 Python

    21/26

    VARIABLES LOCALES Y GLOBALES

    Observa que en el cuerpo de las funciones es posible definir y usar

    variables. Vamos a estudiar con detenimiento algunas propiedades de las

    variables definidas en el cuerpo de una función y en que se diferencian de

    las variables que definimos fuera de cualquier función, es decir, en el

    denominado programa principal.

    a=3

    def f():

    b=4

    print a # 3

    print b # 4

    return

    f()

    print a # 3

    print b # Error!

    a=3

    def f():

    a=0

    print a # 0

    returnf()

    print a # 3 . No se modifica

  • 8/18/2019 Clase 5 Python

    22/26

    c=3

    def f():

    global c

    c=0 # Esto modifica el objeto globalprint c # 0

    return

    f()

    print c #0

    La sentencia global evita que al

    declarar un objeto en una función,

    se cree un nuevo objeto con el

    mismo nombre pero de ámbito

    local. Por tanto permite modicar el

    objeto global.

    global c #ERROR, esto no sirve de nada

    c=3

    def f():

    c=0 # Esto es un objeto localprint c # 0

    return

    f()

    print c #3 el global no ha cambiado

    En muchos lenguajes, para hacer

    que una variable sea global, la

    declaramos global en la zona global

    del código, haremos un códigosimilar a este, pero que en python

    es incorrecto

  • 8/18/2019 Clase 5 Python

    23/26

    l= ["uno","dos"]

    def f():

    print l # ["uno","dos"]

    l.pop()

    >>>f()

    >>>print l # ["uno"] .

    Un objeto puede ser modificado

    en una función local, a pesar de

    no estar declarado global

    l= ["uno","dos"]

    def f():

    l=["uno"]

    print l # ["uno"]

    >>>f()

    >>>print l # ["uno","dos"]

    En el caso de que la modificación se

    haga redefiniendo el objeto (no

    mediante métodos), como ya

    sabemos, implica la declaración

    implícita de un objeto nuevo, local,

    que oculta al objeto global. Por

    tanto, el objeto global no es

    modificado.

  • 8/18/2019 Clase 5 Python

    24/26

    Resumen:1. Los objetos declarados fuera de una función son globales

    2. Los objetos declarados dentro de una función son locales

    3. Los objetos globales siempre se pueden leer dentro de unafunción

    4. Para modificar un objeto global dentro de una función hay que

    usar global dentro de la función o sino (listas) modificarlo

    mediante sus métodos.

  • 8/18/2019 Clase 5 Python

    25/26

    LLAMADAS RECURSIVAS

    Se denomina llamada recursiva (o recursividad), a aquellas funciones que

    en su algoritmo, hacen referencia sí misma.

    A continuación mostramos un programa recursivo que halla el factorial de

    un número.

    def fact(num):if num

  • 8/18/2019 Clase 5 Python

    26/26

    Ejercicios

    1.- Cree un programa que nos muestre los n primeros números de Fibonacci.2.-Cree una función que nos permita hallar el valor de

    = 1 +1

    2 +

    1

    3 + ⋯ +

    1

     

    Para cualquier valor de n.

    def fib(n):

    if n > 1:return fib(n - 1) + fib(n - 2)

    else:

    return 1