La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Curso de Python Clase 4 Dpto. Telemática CUJAE Curso

Presentaciones similares


Presentación del tema: "Curso de Python Clase 4 Dpto. Telemática CUJAE Curso"— Transcripción de la presentación:

1 Curso de Python Clase 4 Dpto. Telemática CUJAE Curso 2003-2004

2 Objetivos Dpto. Telemática CUJAE Curso 2003-2004 1.Conocer nuevos operadores. Aprender orden de precedencia de los operadores. 2.Ver las sentencias que en Python se encargan del control de flujo. 3.Funciones en Python.

3 Operadores Dpto. Telemática CUJAE Curso 2003-2004 Los siguientes operadores también son válidos en Python. OperaciónDescripción x += y x = x + y x -= y x = x – y x *= y x = x * y x /= y x = x / y x **= y x = x ** y x %= y x = x % y

4 Operadores Dpto. Telemática CUJAE Curso 2003-2004 OperaciónDescripción x &= y x = x & y x |= y x = x | y x ^= y x = x ^ y x >>= y x = x >> y x <<= y x = x << y En general, las asignaciones que se pueden escribir de la forma “A = A op B”, también se pueden expresar de la forma “A op= B”.

5 Operadores Dpto. Telemática CUJAE Curso 2003-2004 La siguiente tabla se presenta los operadores ordenados según su orden de evaluación. El orden es descendente, es decir que los que aparecen primeros se evalúan primero. OperadorNombre (…), […], {…} Creación de tuplas, listas y diccionarios. ‘…’ Formación de cadenas de caracteres. s[i], s[i:j], s.attr Indexación, “slicing” y atributos

6 Operadores Dpto. Telemática CUJAE Curso 2003-2004 f(…) Llamadas a funciones. +x, -x, ~x Operadores unitarios. x ** y Potencia. x/y, x*y, x%y Mult., div. y módulo. X + y, x – y Suma y resta. x & y “and” a nivel de bit. x ^ y “xor” a nivel de bit. x | y “or” a nivel de bit.

7 Operadores Dpto. Telemática CUJAE Curso 2003-2004 x y; x >= y; x==y; x!=y; x<>y; x is y; x is not y; x in s, x not in s Comparación, identidad y prueba de pertenencia a una secuencia. not x Negación lógica. y and y “and” lógico. x or y “or” lógico. Lambda args : expr Función anónima.

8 Control de Flujo Dpto. Telemática CUJAE Curso 2003-2004 Cuando se usa una expresión para determinar si es “True” o “False”, cualquier número distinto de cero o una secuencia o diccionario que no esté vacío, es evaluado como “True”. El número cero, el objeto “None” y secuencias o diccionarios vacíos son evaluados como “False”. Las expresiones booleanas son evaluadas de izquierda a derecha y se evalúa el operador derecho solo si es necesario. a = [1,2,3,4]; True == (1 and a.reverse())

9 Control de Flujo Dpto. Telemática CUJAE Curso 2003-2004 Las sentencias “if”, “else” y “elif” controlan la ejecución de código condicionada. De manera general el formato de las sentencias condicionales es como se muestra en la siguiente diapositiva. Se pueden omitir las partes “else” y “elif”. Usar la sentencia pass si no existen sentencias para una de las cláusulas.

10 Control de Flujo Dpto. Telemática CUJAE Curso 2003-2004 if expresion: sentencias elif expresion: sentencias elif expresion: sentencias … else: sentencias

11 Control de Flujo Dpto. Telemática CUJAE Curso 2003-2004 Programa ejemplo: a = 12; if a != 0: print “En exp. booleanas a = True” if a == 1: print “Puede ser el resultado de\ una exp. booleana.” else: print “En expresiones booleanas a =\ False, además puede ser resultado\ de una expresión booleana.”

12 Control de Flujo Dpto. Telemática CUJAE Curso 2003-2004 La sentencia “while” ejecuta las sentencias hasta que la expresión sea evaluada en “False”. while expresion: sentencias Programa de ejemplo: a=10; while a: print a; a -= 1

13 Control de Flujo Dpto. Telemática CUJAE Curso 2003-2004 La sentencia “for” itera sobre todos los elementos en una secuencia hasta que no haya más elementos disponibles. for i in s: sentencias Programa ejemplo: a = [1, ‘Segundo, 3’] for i in a: print i

14 Control de Flujo Dpto. Telemática CUJAE Curso 2003-2004 Si los elementos de la secuencia son tuplas del mismo tamaño, se puede usar la siguiente variación de la sentencia “for”. for x,y,z in s: sentencias En este caso “s” debe ser una secuencia de tuplas cada una de las cuales tiene tres elementos.

15 Control de Flujo Dpto. Telemática CUJAE Curso 2003-2004 Programa de ejemplo: pasientes = [(‘Pedro’, 35), (‘Susana’, 55)] pasientes.append((‘José’, 1)) for nombre, edad in pasientes: print nombre.ljust(10), edad.rjust(5) Para salir de una iteración (“while” o “for”) usar la sentencia “break” y para ir a la próxima iteración utilizar “continue”.

16 Control de Flujo Dpto. Telemática CUJAE Curso 2003-2004 Programa de ejemplo: a = [0,1,2,3,4,5,6,7,8,9,10,11,12] for i in a: if i % 2 == 0: continue print i if i == 9: break print ‘Fuera del for’ while a: print a.pop()

17 Control de Flujo Dpto. Telemática CUJAE Curso 2003-2004 Cuando se itera a través de diccionarios la llave y su correspondiente valor pueden ser obtenidos a la misma vez utilizando el método “items()”. Ejemplo: knights = {‘gallahad’: ‘the pure’, ‘robin’: ‘the brave’} for k, v in knights.items(): print k, v

18 Control de Flujo Dpto. Telemática CUJAE Curso 2003-2004 Cuando se itera a través de una secuencia el índice y su correspondiente valor pueden ser obtenidos a la misma vez utilizando la función “enumerate()”. Ejemplo: for i, v in enumerate([‘tic’, ‘tac’, ‘toe’]): print i, v

19 Control de Flujo Dpto. Telemática CUJAE Curso 2003-2004 Se le puede agregar a los ciclos una sentencia “else”. Ejemplo: a = [‘Foo’, (1,2), 5] while i < 2: print a i = i + 1 else: print ‘Recorrio el ciclo completo’ for a in s: if a == ‘Foo’: break else: print ‘Not found!’

20 Control de Flujo Dpto. Telemática CUJAE Curso 2003-2004 La función “range([inicio,] parada[, salto])” se le pueden pasar tres parámetros, los cuales tienen que ser enteros cortos. Si el último parámetro es omitido, se toma como ”1”. Si el primer parámetro es omitido se toma como ”0”.

21 Control de Flujo Dpto. Telemática CUJAE Curso 2003-2004 Esta función retorna una lista de enteros que tiene la forma ”[inicio, inicio + 1*salto, inicio + 2 * salto,...]”. Si “salto” es positivo, el último elemento es el mayor ”inicio + i*salto“ que a su vez sea menor que ”parada”; si es negativo el último elemento es el mayor ”inicio + i*salto“ que sea mayor que “parada”.

22 Control de Flujo Dpto. Telemática CUJAE Curso 2003-2004 Programa de ejemplo: range(5) range(1, 5) rangue(5, 50, 5) range(0) range(5, 2) range(0, -10, -1)

23 Control de Flujo Dpto. Telemática CUJAE Curso 2003-2004 La función “zip()” se le pasa un cantidad arbitraria de secuencias y la misma retorna una lista de tuplas donde la tupla i-esima con contiene el elemento i-esimo de cada secuencia pasada como parámetro. El orden de los elementos en cada tupla depende del orden en que fueron pasadas las secuencias. La lista retornada tiene el tamaño de la secuencia más pequeña pasada como parámetro.

24 Control de Flujo Dpto. Telemática CUJAE Curso 2003-2004 Programa ejemplo: a = [0, ‘Segundo’, 3, ‘Cuarto’] zip(a, [1, 2, 3, 4, 5]) b = ‘Esto es una cadena de \ caracteres.’ zip(range(100), b)

25 Control de Flujo Dpto. Telemática CUJAE Curso 2003-2004 Programa ejemplo: def example(): a = [0, 'Segundo', 3, 'Cuarto'] print zip(a, [1, 2, 3, 4, 5]), "\n\n“ b = 'Esto es una.‘; print zip(range(100), b) a.insert(3, ' '); a.insert(0, 'E'); print “\n\n”, a, "\n", b, "\n“ for index, item_a_b in enumerate(zip(a, b)): if item_a_b[0] == item_a_b[1]: print "El elemento %d de las secuencias \"a\" y \"b\" son iguales" % index

26 Funciones Dpto. Telemática CUJAE Curso 2003-2004 Las funciones son definidas con la sentencia “def’, seguida del nombre de la función y entre paréntesis una lista de parámetros seguida por dos puntos. Las sentencias que forman el cuerpo de la función comienzan en la próxima línea y deben de estar indexadas. Ejemplo: def show(a,b): print a, b

27 Funciones Dpto. Telemática CUJAE Curso 2003-2004 Para invocar una función se debe escribir su nombre seguido de una tupla con los parámetros de la función. El orden y el número de los argumentos deben coincidir con los especificados en la definición de la función. Ejemplo: show(2, 68) show(68, 2) show(‘ASASAS’, 5) show([3, 5, 6, 0], ‘variedad’)

28 Funciones Dpto. Telemática CUJAE Curso 2003-2004 Al definir una función se le pueden asignar valores a los parámetros. Cuando se le asigna un valor por defecto a un parámetro, este al igual que los parámetros que le siguen pasan a ser opcional. El valor de los parámetros por defecto se toman como el valor que fue tomado en el momento de la definición de la función. Sin embargo el uso de objetos mutables en la definición de parámetros por defecto puede traer efectos no deseados.

29 Funciones Dpto. Telemática CUJAE Curso 2003-2004 Programa de ejemplo: a = 10 b = [1,2,3] def foo(x = a, y = b): print x print y foo() a = 5 foo() b.append(4) foo()

30 Funciones Dpto. Telemática CUJAE Curso 2003-2004 Una función acepta un número variable de argumentos si un asterisco es adicionado al nombre del último parámetro. Ejemplo: def sum(module = False, *nums): result = 0 for num in nums: if module: num = abs(num) result += num print result sum(False, 1,3,-24); sum(True, 1,2,-24)

31 Funciones Dpto. Telemática CUJAE Curso 2003-2004 La variable “nums” es una tupla que contiene todos los parámetros adicionales. Para pasar a otra función los valores contenidos en “nums” como si fueran parámetros la sintaxis “*nums” de ser mantenida. def one(a,*b): print a print b two(*b) two(b)

32 Funciones Dpto. Telemática CUJAE Curso 2003-2004 Los parámetros de una función también pueden ser pasados especificando el nombre y el valor de cada parámetro. Con esta manera de pasar parámetros no importa el orden en que los mismos son especificados en la llamada a la función; pero sí es muy importante especificar el nombre de todos los parámetros a menos que se esté utilizando valores por defecto. Es decir no se debe omitir o escribir mal ningún nombre de parámetro a menos que haya parámetros con valores por defecto.

33 Funciones Dpto. Telemática CUJAE Curso 2003-2004 Programa de ejemplo: def foo1(x,y,z,w): print x,y,z,w foo1(y = 3, z =30, x =‘Test’, w = [1,2]) def foo2(a, x = 3, c = 1): print a,x,c foo2(a = 33) foo(x=15, c = 51)

34 Funciones Dpto. Telemática CUJAE Curso 2003-2004 Los parámetros posiciónalesy los parámetros con nombre pueden aparecer en la misma llamada a función, pero siempre deben de aparecer todos los parámetros posiciónales primero. Ejemeplo: foo2(3, c = 13) foo1(1,2, w = 33, z = 44) foo1(w = 33, 1, 2, z = 44)

35 Funciones Dpto. Telemática CUJAE Curso 2003-2004 Si el último parámetro de una función comienza con “**” todos los parámetros con nombre cuyo nombre no corresponda con ninguno de los parámetros definidos son puestos en un diccionario y pasados a la función como su último parámetro. Ejemplo: def foo3(a, **Otros): print a print Otros foo3(1, b = 12, Para = ‘Prueba’) foo(a = (1,’bbb’), A = [‘Test’, 5])

36 Funciones Dpto. Telemática CUJAE Curso 2003-2004 Se puede combinar la manera de pasar parámetros mostrada en la diapositiva anterior (usando **) con la manera de pasar un número de parámetros variable (usando *) siempre y cuando los parámetros pasados de esta última manera se encuentren antes. Ejemplo: def foo4(x, *y, **z): print x; print y; print z foo4(1, 5, 7, 8, qq = ‘7uy’, cc = 33) foo4(1, qq = 2, 4, 7, 8, 9)

37 Funciones Dpto. Telemática CUJAE Curso 2003-2004 A partir de la versión de Python 2.1 las funciones y los métodos pueden tener cualquier atributo adjunto. Ejemplo: def foo5(a): ‘’’Esta es la cadena de doc’’’ pass foo5.first_attr = 1 foo5.secure = 1 foo5.private = 1

38 Funciones Dpto. Telemática CUJAE Curso 2003-2004 Cuando una función es invocada los parámetros son pasados por referencia. Si un objeto mutable es pasado a una función y es modificado dentro de la misma, esos cambios serán mostrados en la parte del código donde se hizo la llamada. Ejemplo: a = [1,2,3,4,5] def foo(x): x[3] = -55 foo(a) print a

39 Funciones Dpto. Telemática CUJAE Curso 2003-2004 La sentencia “return” sirve para especificar el valor retornado por la función, además lleva el hilo de ejecución para la próxima sentencia donde fue llamada la misma. Si ningún valor es especificado o se omite la sentencia “return”, el objeto “None” es retornado. Para retornar múltiples valores, poner los mismos en una tupla. Varios valores retornados en una tupla, pueden ser asignados a variables individuales.

40 Funciones Dpto. Telemática CUJAE Curso 2003-2004 Programa de ejemplo: def factor(a): d = 2 while (d <= (a/2)): if ((a/d)*d == a): return ((a/d),d) d = d + 1 return (a,1) x,y = factor(1234) (x,y) = factor(1234)

41 FIN Dpto. Telemática CUJAE Curso 2003-2004 Por favor, nos sería muy útil que cualquier sugerencia o error que encontrase en el presente documento nos lo hicieran llegar a: frankabel@tesla.cujae.edu.cu


Descargar ppt "Curso de Python Clase 4 Dpto. Telemática CUJAE Curso"

Presentaciones similares


Anuncios Google