Está en la página 1de 11

U N I V E R S I D A D D E E L S A L V A D O R A N A L I S I S N U M É R I C O – A N N 1 1 5

FA C U LTA D D E I N G E N I E R Í A Y A R Q U I T E C T U R A B r . A l l a n M o n t e n e g r o / B r . J a v i e r G a r c í a
E S C U E L A D E I N G E N I E R Í A E L É C T R I C A M s c . e I n g . W i l b e r C a l d e r ó n

Guía de laboratorio # 03:

Introducción a Python y creación de


funciones en Python.

En matemáticas uno no entiende las cosas, se acostumbra a ellas.


John Von Neumann

Msc. e Ing. Wilber Calderón Escuela de Ingeniería Eléctrica 1/11

Fina Avenida “Mártires Estudiantes del 30 de julio” Ciudad Universitaria, San Salvador, El Salvador, C.A. Apto. Postal 740
U N I V E R S I D A D D E E L S A L V A D O R A N A L I S I S N U M É R I C O – A N N 1 1 5
FA C U LTA D D E I N G E N I E R Í A Y A R Q U I T E C T U R A B r . A l l a n M o n t e n e g r o / B r . J a v i e r G a r c í a
E S C U E L A D E I N G E N I E R Í A E L É C T R I C A M s c . e I n g . W i l b e r C a l d e r ó n

Objetivo general:

 Hacer una primera inducción al lenguaje de programación Python.

 Asimilar la sintaxis de funciones escritas en Python.

Objetivos específicos:

 Aprender sobre los tipos de datos, operadores y bucles de Python.

 Escribir funciones en Python.

Msc. e Ing. Wilber Calderón Escuela de Ingeniería Eléctrica 2/11

Fina Avenida “Mártires Estudiantes del 30 de julio” Ciudad Universitaria, San Salvador, El Salvador, C.A. Apto. Postal 740
U N I V E R S I D A D D E E L S A L V A D O R A N A L I S I S N U M É R I C O – A N N 1 1 5
FA C U LTA D D E I N G E N I E R Í A Y A R Q U I T E C T U R A B r . A l l a n M o n t e n e g r o / B r . J a v i e r G a r c í a
E S C U E L A D E I N G E N I E R Í A E L É C T R I C A M s c . e I n g . W i l b e r C a l d e r ó n

Introducción

Python is an interpreted, object-oriented, high-level programming language with dynamic semantics. Its
high-level built in data structures, combined with dynamic typing and dynamic binding, make it very
attractive for Rapid Application Development, as well as for use as a scripting or glue language to connect
existing components together. Python's simple, easy to learn syntax emphasizes readability and therefore
reduces the cost of program maintenance. Python supports modules and packages, which encourages
program modularity and code reuse. The Python interpreter and the extensive standard library are
available in source or binary form without charge for all major platforms, and can be freely distributed.

Tipos de datos en Python

Msc. e Ing. Wilber Calderón Escuela de Ingeniería Eléctrica 3/11

Fina Avenida “Mártires Estudiantes del 30 de julio” Ciudad Universitaria, San Salvador, El Salvador, C.A. Apto. Postal 740
U N I V E R S I D A D D E E L S A L V A D O R A N A L I S I S N U M É R I C O – A N N 1 1 5
FA C U LTA D D E I N G E N I E R Í A Y A R Q U I T E C T U R A B r . A l l a n M o n t e n e g r o / B r . J a v i e r G a r c í a
E S C U E L A D E I N G E N I E R Í A E L É C T R I C A M s c . e I n g . W i l b e r C a l d e r ó n

Tipo Clase Notas Ejemplo


str Cadena Inmutable 'Cadena'
unicode Cadena Versión Unicode de str u'Cadena'

list Mutable, puede contener [4.0, 'Cadena', True]


Secuencia
objetos de diversos tipos

tuple Inmutable, puede contener (4.0, 'Cadena', True)


Secuencia
objetos de diversos tipos
Mutable, sin orden, no set([4.0, 'Cadena',
set Conjunto
contiene duplicados True])
Inmutable, sin orden, no frozenset([4.0, 'Cadena',
frozenset Conjunto
contiene duplicados True])
{'key1': 1.0, 'key2':
dict Mapping Grupo de pares clave:valor False}

int Número Precisión fija, convertido en 42


entero long en caso de overflow.

long Número 42L ó 456966786151987643L


Precisión arbitraria
entero

float Número Coma flotante de doble 3.1415927


decimal precisión

complex Número (4.5 + 3j)


Parte real y parte imaginaria j.
complejo

bool Valor booleano verdadero o True o False


Booleano
falso

Entre las cosas mas importantes que debemos de recordar están:

→ Para escribir números octales se antepone un 0. Para números hexadecimales, se antepone un 0x y para
binarios un 0b:

In [2]: 0xf
Out[2]: 15

In [5]: 010
Out[5]: 8

In [68]: 0b1111
Out[68]: 15
→ La indexacion en Python inicia desde el numero 0, de izquierda a derecha, y con el -1 de derecha a
izquierda:

In [9]: lista = ["Primero", "Segundo", "Tercero", "Cuarto", "Quinto", "Sexto"]

Msc. e Ing. Wilber Calderón Escuela de Ingeniería Eléctrica 4/11

Fina Avenida “Mártires Estudiantes del 30 de julio” Ciudad Universitaria, San Salvador, El Salvador, C.A. Apto. Postal 740
U N I V E R S I D A D D E E L S A L V A D O R A N A L I S I S N U M É R I C O – A N N 1 1 5
FA C U LTA D D E I N G E N I E R Í A Y A R Q U I T E C T U R A B r . A l l a n M o n t e n e g r o / B r . J a v i e r G a r c í a
E S C U E L A D E I N G E N I E R Í A E L É C T R I C A M s c . e I n g . W i l b e r C a l d e r ó n

In [10]: lista[0]
Out[10]: 'Primero'

In [11]: lista[5]
Out[11]: 'Sexto'

In [12]: lista[-1]
Out[12]: 'Sexto'

In [13]: lista[-2]
Out[13]: 'Quinto'

In [14]: lista[-5]
Out[14]: 'Segundo'

In [15]: lista[-6]
Out[15]: 'Primero'

→ También podemos llamar sublistas:

In [22]: texto = "Analisis Numerico"

In [23]: texto[3:]
Out[23]: 'lisis Numerico'

In [24]: texto[4:6]
Out[24]: 'is'

In [25]: texto[:-1]
Out[25]: 'Analisis Numeric'

In [26]: texto[:0]
Out[26]: ''

In [27]: texto[0:]
Out[27]: 'Analisis Numerico'

La siguiente imagen sirve de ayuda para entender los indices en Python.

→ Podemos usar la función type() para averiguar el tipo de dato de algún objeto:

In [41]: complejo = 3 + 5j

Msc. e Ing. Wilber Calderón Escuela de Ingeniería Eléctrica 5/11

Fina Avenida “Mártires Estudiantes del 30 de julio” Ciudad Universitaria, San Salvador, El Salvador, C.A. Apto. Postal 740
U N I V E R S I D A D D E E L S A L V A D O R A N A L I S I S N U M É R I C O – A N N 1 1 5
FA C U LTA D D E I N G E N I E R Í A Y A R Q U I T E C T U R A B r . A l l a n M o n t e n e g r o / B r . J a v i e r G a r c í a
E S C U E L A D E I N G E N I E R Í A E L É C T R I C A M s c . e I n g . W i l b e r C a l d e r ó n

In [42]: type(complejo)
Out[42]: complex

→ Para los comentarios de una linea, usar # (semejante al // de C++). Para los comentarios de varias
lineas, usar '''…''' (semejante al /*...*/ de C):

In [45]: ''' Esto es un comentario


....: de varias lineas '''
Out[45]: ' Esto es un comentario\nde varias lineas '''
In [46]: # Esto es un comentario de una linea

Operadores en Python

A continuación se presenta una lista de los diferentes operadores que tiene Python:

→ Operadores lógicos:

In [48]: True and False


Out[48]: False

In [49]: True or False


Out[49]: True

In [50]: not False


Out[50]: True

→ Operadores de comparación:

In [51]: 5 == 4
Out[51]: False

In [52]: 5 != 4
Out[52]: True

In [53]: 5 < 4
Out[53]: False

In [54]: 5 <= 4
Out[54]: False

In [56]: 5 > 4
Out[56]: True

In [57]: 5 >= 4
Out[57]: True

→ Operadores aritméticos:

In [58]: 5 + 6.7 # Suma


Out[58]: 11.7

Msc. e Ing. Wilber Calderón Escuela de Ingeniería Eléctrica 6/11

Fina Avenida “Mártires Estudiantes del 30 de julio” Ciudad Universitaria, San Salvador, El Salvador, C.A. Apto. Postal 740
U N I V E R S I D A D D E E L S A L V A D O R A N A L I S I S N U M É R I C O – A N N 1 1 5
FA C U LTA D D E I N G E N I E R Í A Y A R Q U I T E C T U R A B r . A l l a n M o n t e n e g r o / B r . J a v i e r G a r c í a
E S C U E L A D E I N G E N I E R Í A E L É C T R I C A M s c . e I n g . W i l b e r C a l d e r ó n

In [59]: 5 - 6.7 # Resta


Out[59]: -1.7000000000000002

In [60]: 5*6.7 # Multiplicacion


Out[60]: 33.5

In [61]: 5/6.7 # Division


Out[61]: 0.7462686567164178

In [62]: 10/3 # Division entera


Out[62]: 3

In [63]: 10%3 # Modulo


Out[63]: 1

In [64]: 2**4 # Potenciacion


Out[64]: 16

→ Operadores bit a bit:

In [71]: 8 & 7 # 1000b & 0100b


Out[71]: 0

In [72]: 8 | 7 # 1000b | 0100b


Out[72]: 15

In [73]: 8 ^ 15 # 1000b ^ 1111b


Out[73]: 7

In [75]: ~0 # ~1111b
Out[75]: -1

In [76]: 1 << 2 # 0001b << 2


Out[76]: 4

In [77]: 4 >> 2 # 0100b >> 2


Out[77]: 1

Lazos y condicionales en Python

→ Lazo while:

In [97]: i = 0

Msc. e Ing. Wilber Calderón Escuela de Ingeniería Eléctrica 7/11

Fina Avenida “Mártires Estudiantes del 30 de julio” Ciudad Universitaria, San Salvador, El Salvador, C.A. Apto. Postal 740
U N I V E R S I D A D D E E L S A L V A D O R A N A L I S I S N U M É R I C O – A N N 1 1 5
FA C U LTA D D E I N G E N I E R Í A Y A R Q U I T E C T U R A B r . A l l a n M o n t e n e g r o / B r . J a v i e r G a r c í a
E S C U E L A D E I N G E N I E R Í A E L É C T R I C A M s c . e I n g . W i l b e r C a l d e r ó n

In [98]: while i < 10:


....: print i
....: i += 1
....:
0
1
2
3
4
5
6
7
8
9

→ Lazo for:

In [80]: for i in range(-5, 5, 2):


....: print(i)
....:
-5
-3
-1
1
3

In [84]: for n in cadena[2:13]:


....: print(n)
....:
l
o

d
o
b
l
e

c
o

→ Sentencia if:

In [103]: numero = 3

In [104]: if numero == 1:
.....: print "El numero es 1"

Msc. e Ing. Wilber Calderón Escuela de Ingeniería Eléctrica 8/11

Fina Avenida “Mártires Estudiantes del 30 de julio” Ciudad Universitaria, San Salvador, El Salvador, C.A. Apto. Postal 740
U N I V E R S I D A D D E E L S A L V A D O R A N A L I S I S N U M É R I C O – A N N 1 1 5
FA C U LTA D D E I N G E N I E R Í A Y A R Q U I T E C T U R A B r . A l l a n M o n t e n e g r o / B r . J a v i e r G a r c í a
E S C U E L A D E I N G E N I E R Í A E L É C T R I C A M s c . e I n g . W i l b e r C a l d e r ó n

.....: elif numero == 2:


.....: print "El numero es 2"
.....: else:
.....: print "El numero es 3"
.....:
El numero es 3

Creación de funciones en Python

Para crear nuestras funciones en Python usaremos la siguiente sintaxis:

def <nombre de la función>(<argumento 1>, <argumento 2>, …):


<Cuerpo de la función>
return <variable a retornar (en caso se retorne algún dato)>

Las funciones las debemos escribir en un archivo de texto con la terminación .py para indicar que es un
archivo de Python. No es necesario que el archivo tenga el mismo nombre de la función (como en
Octave), por lo que en un mismo archivo podemos tener definidas varias funciones (como en C), de esta
manera estaríamos creando un modulo (semejante a las librerías en C). La forma para llamar al modulo
sera:

from <nombre del archivo donde esta nuestra función> import*

La linea anterior importara todos los métodos y variables que se encuentren en el modulo invocado.

Ejemplos de la guía 1:

# Promedio de una lista de numeros


def promedio(x):
return sum(x)/len(x)

# Rango de una lista de numeros


def rango(x):
return max(x) - min(x)

Ejemplos de la guía 2:

# Serie de Fibonacci de manera recursiva


def fibonacci(indice):
if indice < 3:
return indice - 1
else:
return fibonacci(indice - 1) + fibonacci(indice - 2)

# Metodo de la biseccion en forma recursiva


def biseccion_recursiva(lim_inf, lim_sup, f):
if evalxy(f, lim_inf)*evalxy(f, lim_sup) < 0:
raiz = (lim_inf + lim_sup)/2
if 0.000000001 < abs(evalxy(f, raiz)):
if evalxy(f, lim_inf)*evalxy(f, raiz) < 0:

Msc. e Ing. Wilber Calderón Escuela de Ingeniería Eléctrica 9/11

Fina Avenida “Mártires Estudiantes del 30 de julio” Ciudad Universitaria, San Salvador, El Salvador, C.A. Apto. Postal 740
U N I V E R S I D A D D E E L S A L V A D O R A N A L I S I S N U M É R I C O – A N N 1 1 5
FA C U LTA D D E I N G E N I E R Í A Y A R Q U I T E C T U R A B r . A l l a n M o n t e n e g r o / B r . J a v i e r G a r c í a
E S C U E L A D E I N G E N I E R Í A E L É C T R I C A M s c . e I n g . W i l b e r C a l d e r ó n

return biseccion_recursiva(lim_inf, raiz, f)


else:
return biseccion_recursiva(raiz, lim_sup,f)
else:
return raiz
else:
return "ERROR FATAL"

def evalxy(f, x, y = 0) :
"""
Funcion utilizada para evaluar una expresion matematica
escrita en sintaxis de python. La expresion matematica
puede estar en funcion de la variable x o y (por defecto
y = 0, por lo que se puede omitir si la expresion solo
depende de x).

Ejemplo:

>>> evalxy("3+x*2-x**2", 2.1)


>>> 2.79
>>> evalxy("2*cos(x)-sin(y)", 0, 1.570796)
>>> 1.0000000000000533
"""
return eval(f);
# Maximo comun divisor de manera recursiva
def MCD_recursivo(int_1, int_2, divisor = 0):
if divisor == 0:
divisor = min(int_1, int_2)
if 0 < int_1 and 0 < int_2:
if int_1%divisor != 0 or int_2%divisor != 0:
return MCD_recursivo(int_1, int_2, divisor - 1)
else:
return divisor;
else:
return "ERROR FATAL"

Asignación para hacer en el laboratorio

 Con ayuda del instructor, escriba una función recursiva que resuelva la siguiente serie:

 Realice una función recursiva que calcule el mínimo común múltiplo de dos números enteros.

Msc. e Ing. Wilber Calderón Escuela de Ingeniería Eléctrica 10/11

Fina Avenida “Mártires Estudiantes del 30 de julio” Ciudad Universitaria, San Salvador, El Salvador, C.A. Apto. Postal 740
U N I V E R S I D A D D E E L S A L V A D O R A N A L I S I S N U M É R I C O – A N N 1 1 5
FA C U LTA D D E I N G E N I E R Í A Y A R Q U I T E C T U R A B r . A l l a n M o n t e n e g r o / B r . J a v i e r G a r c í a
E S C U E L A D E I N G E N I E R Í A E L É C T R I C A M s c . e I n g . W i l b e r C a l d e r ó n

 Realice una función (no recursiva) que calcule el factorial de un numero

 Con ayuda del instructor, escriba una función con las sentencias necesarias para encontrar la moda
y la desviación media de los siguientes datos: 4, 6, 8, 15, 3, 8, 9, 23, 5, 7, 18, 12, 13, 20, 25, 12, 6,
18, 5, 21, 6, 13, 19. La desviación media se define como:

Referencias

 https://www.python.org/doc/essays/blurb/

 http://www.pythondiario.com/2014/12/tipos-de-datos-en-python.html

 https://es.wikipedia.org/wiki/Python

Msc. e Ing. Wilber Calderón Escuela de Ingeniería Eléctrica 11/11

Fina Avenida “Mártires Estudiantes del 30 de julio” Ciudad Universitaria, San Salvador, El Salvador, C.A. Apto. Postal 740

También podría gustarte