SlideShare una empresa de Scribd logo
1 de 78
Descargar para leer sin conexión
ANALISTA DE
DATOS JUNIOR
By LeaySazory & Azmeruq
ÍNDICE
Introducción al lenguaje de programación …………………………………………………. 3
Números enteros y reales ……………………………………………………………………………………. 10
Operadores aritméticos ………………………………………………………………………………………… 15
Tipos de colección de datos ……………………………………………………………………………….. 22
Operadores relacionales ………………………………………………………………………………………. 30
Sentencias condicionales …………………………………………………………………………………….. 33
Programación orientada a objetos ………………………………………………………………….. 40
Métodos de los objetos …………………………………………………………………………………………. 53
Programación funcional ……………………………………………………………………………………….. 61
Comprensión de listas …………………………………………………………………………………………… 66
Generadores ………………………………………………………………………………………………………………. 69
Clases decoradoras …………………………………………………………………………………………………. 71
Excepciones ………………………………………………………………………………………………………………. 73
Entrada estándar rawInput ………………………………………………………………………………… 74
Módulos ……………………………………………………………………………………………………………………… 77
By LeaySazory & Azmeruq
1. Introducción al lenguaje de programación.
By LeaySazory & Azmeruq
1.1.¿Qué es Python?
Python es un lenguaje de programación creado por
Guido van Rossum a principios de los años 90, Es
un lenguaje similar a Perl, pero con una sintaxis
muy limpia y que favorece un código legible.
Lenguaje interpretado o de script Un lenguaje
interpretado o de script es aquel que se ejecuta
utilizando un programa intermedio llamado intérprete,
pueda comprender y ejecutar directamente una
computadora (lenguajes compilados)
By LeaySazory & Azmeruq
Fuertemente tipado
No se permite tratar a una variable como si
fuera de un tipo distinto al que tiene, es
necesario convertir de forma explícita dicha
variable al nuevo tipo previamente.
Por ejemplo, si tenemos una variable que contiene un texto
(variable de tipo cadena o string) no podremos tratarla
como un número (sumar la cadena “9” y el número 8). En
otros lenguajes el tipo de la variable cambiaría para
adaptarse al comportamiento
By LeaySazory & Azmeruq
Multiplataforma
El intérprete de Python está disponible en multitud
de plataformas (UNIX, Solaris, Linux, DOS,
Windows, OS/2, Mac OS, etc.) por lo que no
utilizamos librerías específicas de cada plataforma
Orientado a objetos
La orientación a objetos es un paradigma de
programación en el que los conceptos del mundo real
relevantes para nuestro problema se trasladan a clases y
objetos en nuestro programa
By LeaySazory & Azmeruq
1.2. Instalación de Python
By LeaySazory & Azmeruq
Primero comprueba si tu ordenador ejecuta la versión
32 bits de Windows o la de 64, en "Tipo de sistema"
en la página de "Acerca de". Para llegar a esta
página, intenta uno de estos métodos:
Puedes descargar Python para Windows desde la
siguiente web
https://www.python.org/downloads/windows/.
Da clic en el enlace "Latest Python 3 Release
-Python x.x.x"
Una cosa para tener en cuenta: Durante la
instalación, verás una ventana de "Setup".
Asegúrate de marcar las casillas "Add Python 3.6 to
PATH" o "Add Python to your environment variables"
y hacer click en "Install Now", como se muestra aquí
(puede que se vea un poco diferente si estás
instalando una versión diferente):
By LeaySazory & Azmeruq
Cuando la instalación se complete, verás un cuadro de diálogo con un enlace que puedes seguir para saber
más sobre Python o sobre la versión que has instalado. Cierra o cancela ese diálogo. Comprobar que se
instalo Python con el siguiente comando desde la cmd python - - versión
By LeaySazory & Azmeruq
2. Números enteros y reales
By LeaySazory & Azmeruq
Números enteros
Son aquellos números positivos o negativos que no
tienen decimales (además del cero). En Python se
pueden representar mediante el tipo int (de integer,
entero) o el tipo long (largo). La única diferencia es
que el tipo long permite almacenar números más
grandes
El tipo int de Python se implementa a bajo nivel
mediante un tipo long de C. Y dado que Python utiliza C
por debajo, como C, y a diferencia de Java, el rango de
los valores que puede representar depende de la
plataforma.
By LeaySazory & Azmeruq
almacenar números de -231 a 231 - 1, o lo que es lo
mismo, de -2,147,483,648 a 2,147,483,647. En
plataformas de 64 bits, el rango es de -
9,223,372,036,854,775,808 hasta
9,223,372,036,854,775,807.
El tipo long de Python permite almacenar números de
cualquier precisión, estando limitados solo por la
memoria disponible en la máquina
By LeaySazory & Azmeruq
Reales
Los números reales son los que tienen decimales. En
Python se expresan mediante el tipo float. En otros lenguajes de programación, como C,
tenemos también el tipo double, similar a float pero
de mayor precisión (double = doble precisión).
Python, sin embargo, implementa su tipo float a bajo
nivel mediante una variable de tipo double de C, es
decir, utilizando 64 bits, luego en Python siempre se
utiliza doble precisión, y en concreto se sigue el
estándar IEEE 754: 1 bit para el signo, 11 para el
exponente, y 52 para la mantisa. Esto significa que
los valores que podemos representar van desde
±2,2250738585072020 x 10-308 hasta
±1,7976931348623157×10308.
By LeaySazory & Azmeruq
https://www.freecodecamp.org/news/python-print-variable-how-to-print-a-string-and-variable/
https://www.w3schools.com/python/python_strings_format.asp
How to print a variable and a string in Python using string formatting
By LeaySazory & Azmeruq
3. Operadores aritméticos
By LeaySazory & Azmeruq
Operadores
5 Veamos ahora qué podemos hacer con nuestros
números usando los operadores por defecto. Para
operaciones más complejas podemos recurrir al
módulo math.
El operador de módulo no hace otra cosa que devolvernos
el resto de la división entre los dos operandos. En el
ejemplo, 7/2 sería 3, con 1 de resto, luego el módulo es 1.
La diferencia entre división y división entera no es otra que
la que indica su nombre.
By LeaySazory & Azmeruq
3.1. Boleanos
By LeaySazory & Azmeruq
True (cierto) y False (falso). Estos valores son
especialmente importantes para las expresiones
condicionales y los bucles, como veremos más
adelante.
En realidad el tipo bool (el tipo de los booleanos) es
una subclase del tipo int. Puede que esto no tenga
mucho sentido para tí si no conoces los términos de la
orientación a objetos, que veremos más adelante,
aunque tampoco es nada importante.
By LeaySazory & Azmeruq
Los valores booleanos son además el resultado de
expresiones que utilizan operadores relacionales
(comparaciones entre valores):
3.2. Operadores lógicos
Estos son operadores que actúan sobre las
representaciones en binario de los operadores. Por
ejemplo: Si veis una operación como 3 & 2, lo que estás
viendo es un and bit a bit entre los números binarios 11 y
10 (las representaciones en binario de 3 y 2). El operador
and (&), del inglés “y”, devuelve 1 si el primer bit operando
es 1 y el segundo bit operando es 1. Se devuelve 0 en
caso contrario. El resultado de aplicar and bit a bit a 11 y
10 sería entonces el número binario 10, o lo que es lo
mismo, 2 en decimal (el primer dígito es 1 para ambas
cifras, mientras que el segundo es 1 sólo para una de
ellas).
By LeaySazory & Azmeruq
3.3. Cadenas
Las cadenas no son más que texto encerrado entre
comillas simples(‘cadena’)o dobles (“cadena”).
Dentro de las comillas se pueden añadir caracteres
especiales escapándolos con , como n, el carácter
de nueva línea, o t, el de tabulación.
Esto es especialmente útil, por ejemplo, para las
expresiones regulares, como veremos en el capítulo
correspondiente.
unicode = u”äóè”
raw = r”n”
By LeaySazory & Azmeruq
De esta forma podremos escribir el texto en varias líneas, y
al imprimir la cadena, se respetarán los saltos de línea que
introdujimos sin tener que recurrir al carácter n, así como
las comillas sin tener que escaparlas.
triple = “““primera linea esto se vera en otra linea”””
admiten operadores como +, que funciona realizando
una concatenación de las cadenas utilizadas como
operandos y *, en la que se repite la cadena tantas
veces como lo indique el número utilizado como
segundo operando.
a = “uno”
b = “dos”
c = a + b # c es “unodos”
c = a * 3 # c es “unounouno”
By LeaySazory & Azmeruq
4. Tipos de colecciones de datos.
By LeaySazory & Azmeruq
4.1. Listas
La lista es un tipo de colección ordenada. Sería
equivalente a lo que en otros lenguajes se conoce por
arrays, o vectores. Las listas pueden contener
cualquier tipo de dato: números, cadenas, booleanos,
… y también listas.
Crear una lista es tan sencillo como indicar entre
corchetes, y separados por comas, los valores que
queremos incluir en la lista:
l = [22, True, “una lista”, [1, 2]]
By LeaySazory & Azmeruq
Podemos acceder a cada uno de los elementos de
la lista escribiendo el nombre de la lista e indicando
el índice del elemento entre corchetes.
l = [11, False]
mi_var = l[0] # mi_var vale 11
Si queremos acceder a un elemento de una lista
incluida dentro de otra lista tendremos que utilizar
dos veces este operador, primero para indicar a
qué posición de la lista exterior queremos acceder
l = [“una lista”, [1, 2]]
También podemos utilizar este operador para
modificar un elemento de la lista si lo colocamos en
la parte izquierda de una asignación:
l = [22, True]
l[0] = 99 # Con esto l valdrá [99, True]
https://www.w3schools.com/python/python_lists.asp
By LeaySazory & Azmeruq
print(thislist[2:5])
Dentro de la función rango
el el segungo valor -1
By LeaySazory & Azmeruq
4.2.Tuplas
Todo lo que hemos explicado sobre las listas se aplica
también a las tuplas, a excepción de la forma de definirla,
para lo que se utilizan paréntesis en lugar de corchetes.
t = (1, 2, True, “python”)
En realidad el constructor de la tupla es la coma, no el
paréntesis, pero el intérprete muestra los paréntesis, y
nosotros deberíamos utilizarlos, con claridad.
>>> t = 1, 2, 3
>>> type(t)
type “tuple”
Además hay que tener en cuenta que es necesario añadir
una coma para tuplas de un solo elemento, para
diferenciarlo de un elemento entre paréntesis.
>>> t = (1)
>>> type(t)
By LeaySazory & Azmeruq
By LeaySazory & Azmeruq
4.3.Diccionarios
Los diccionarios, también llamados matrices
asociativas, deben su nombre a que son colecciones
que relacionan una clave y un valor. Por ejemplo,
veamos un diccionario de películas y directores:
d = {“Love Actually “: “Richard Curtis”
“Kill Bill”: “Tarantino”
“Amélie”: “Jean-Pierre Jeunet”}
las listas o las tuplas es que a los valores
almacenados en un diccionario se les accede no por
su índice, porque de hecho no tienen orden, sino por
su clave, utilizando de nuevo el operador
[]. d[“Love Actually “] # devuelve “Richard Curtis”
Al igual que en listas y tuplas también se puede
utilizar este operador para reasignar valores.
d[“Kill Bill”] = “Quentin Tarantino”
By LeaySazory & Azmeruq
https://www.w3schools.com/python/
python_lists.asp
https://www.w3schools.com/python/
python_tuples.asp
https://www.w3schools.com/python/
python_dictionaries.asp
By LeaySazory & Azmeruq
5. Operaciones Relacionales.
By LeaySazory & Azmeruq
Los valores booleanos son además el resultado de
expresiones que utilizan operadores relacionales
(comparaciones entre valores):
Operador ==
El operador == evalúa que los valores sean iguales
para varios tipos de datos.
Operador !=
El operador != evalúa si los valores son distintos.
By LeaySazory & Azmeruq
Operador <
El operador < evalúa si el valor del lado izquierdo es
menor que el valor del lado derecho
Operador >
El operador > evalúa si el valor del lado izquierdo es
mayor que el valor del lado derecho.
Operador <=
El operador <= evalúa si el valor del lado izquierdo
es menor o igual que el valor del lado derecho.
Operador >=
El operador >= evalúa si el valor del lado izquierdo es
mayor o igual que el valor del lado derecho.
5<5
FALSE
5<=5
TRUE
By LeaySazory & Azmeruq
6. Sentencias condicionales.
https://www.w3schools.com/python/python_conditions.asp
By LeaySazory & Azmeruq
Si un programa no fuera más que una lista de órdenes a
ejecutar de forma secuencial, una por una, no tendría
mucha utilidad. Los condicionales nos permiten comprobar
condiciones y hacer que nuestro programa se comporte de
una forma u otra
If
La forma más simple de un estamento condicional es
un if (del inglés si) seguido de la condición a evaluar,
dos puntos (:) y en la siguiente línea e indentado, el
código a ejecutar en caso de que se cumpla dicha
condición.
fav = “mundogeek.net”
# si (if) fav es igual a “mundogeek.net”
if fav == “mundogeek.net”:
print “Tienes buen gusto!”
print “Gracias”
By LeaySazory & Azmeruq
la forma de Python de saber que nuestra intención
es la de que los dos print se ejecuten sólo en el
caso de que se cumpla la condición, y no la de que
se imprima la primera cadena si se cumple la
condición y la otra siempre
if fav == “mundogeek.net”:
print “Tienes buen gusto!”
print “Gracias”
if … else
Vamos a ver ahora un condicional algo más
complicado. ¿Qué haríamos si quisiéramos que se
ejecutaran unas ciertas órdenes en el caso de que
la condición no se cumpliera?
if fav == “mundogeek.net”:
print “Tienes buen gusto!”
print “Gracias” if fav != “mundogeek.net”:
print “Vaya, que lástima”
pero el condicional tiene una segunda construcción
mucho más útil:
if fav == “mundogeek.net”:
print “Tienes buen gusto!”
print “Gracias”
else: print “Vaya, que lástima”
By LeaySazory & Azmeruq
7.1. Bucles
Mientras que los condicionales nos permiten
ejecutar distintos fragmentos de código
dependiendo de ciertas condiciones, los bucles
nos permiten ejecutar un mismo fragmento de
código un cierto número de veces, mientras se
cumpla una determinada condición.
while
El bucle while (mientras) ejecuta un fragmento de código
mientras se cumpla una condición.
edad = 0
while edad < 18:
edad = edad + 1
print “Felicidades, tienes “ + str(edad)
La variable edad comienza valiendo 0. Como la condición de
que edad es menor que 18 es cierta (0 es menor que 18), se
entra en el bucle.
https://www.w3schools.com/python/python_while_loops.asp
By LeaySazory & Azmeruq
for … in
A los que tenga experiencia previa con según
que lenguajes este bucle nos va a sorprender
gratamente. En Python for se utiliza como una
forma genérica de iterar sobre una secuencia.
secuencia = [“uno”, “dos”, “tres”]
for elemento in secuencia:
print elemento
Como hemos dicho los for se utilizan en Python para
recorrer secuencias, por lo que vamos a utilizar un tipo
secuencia, como es la lista, para nuestro ejemplo. Leamos
la cabecera del bucle como si de lenguaje natural se
tratara: “para cada elemento en secuencia”
https://www.w3schools.com/python/
python_for_loops.asp
By LeaySazory & Azmeruq
7.2. Funciones
Una función es un fragmento de código con un
nombre asociado que realiza una serie de tareas y
devuelve un valor. A los fragmentos de código que
tienen un nombre asociado y no devuelven valores
se les suele llamar procedimientos.
def mi_funcion(param1, param2):
print(param1)
print(param2)
mi_funcion("hola", "adios")
También podemos encontrarnos con una cadena de
texto como primera línea del cuerpo de la función.
Estas cadenas se conocen con el nombre de
docstring (cadena de documentación) y sirven, como
su nombre indica, a modo de documentación de la
función.
def mi_funcion(param1
param2): “““Esta función imprime los dos valores
pasados como parámetros”””
print param1
print param2
https://www.w3schools.com/python/python_f
unctions.asp
By LeaySazory & Azmeruq
https://jamboard.google.com/d/1JwkAznWbw5cVIindQxN
A0USHum_TdYb9npcAUL_w8jA/edit?usp=sharing
https://es.wikipedia.org/wiki/Torres_
de_Han%C3%B3i
By LeaySazory & Azmeruq
8. Programación Orientada a objetos
La Programación Orientada a Objetos (POO u OOP
según sus siglas en inglés) es un paradigma de
programación en el que los conceptos del mundo real
relevantes para nuestro problema se modelan a través
de clases y objetos.
8.1.Clases y Objetos
En Python las clases se definen mediante la palabra
clave class seguida del nombre de la clase, dos puntos
(:) y a continuación, indentado, el cuerpo de la clase.
Como en el caso de las funciones, si la primera línea
del cuerpo se trata de una cadena de texto, esta será la
cadena de documentación de la clase o docstring.
https://jamboard.google.com/d/1Jf1
XGjWYS0MItGy91pBWLpETy9dUo
niypAaHRudGIS4/edit?usp=sharing
By LeaySazory & Azmeruq
PYTHON VALORES POR DEFECTO EN CLASES
Puedes tener valores por defecto definidos en tu clase a través del constructor.
Nota como el parámetro TEMPERATURE tiene un valor por
defecto 0:
TEMPERATURE = 0
Así si al momento de crear el objeto no asignas un valor a temperatura, este puede ser opcional pues ya
hay un valor por defecto.
By LeaySazory & Azmeruq
Esto es así porque Python pasa el primer argumento
(la referencia al objeto que se crea) automáticamente.
Ahora que ya hemos creado nuestro objeto, podemos
acceder a sus atributos y métodos mediante la sintaxis
objeto.atributo y objeto. método():
8.2. Herencias
Hay tres conceptos que son básicos para cualquier lenguaje
de programación orientado a objetos: el encapsulamiento, la
herencia y el polimorfismo. En un lenguaje orientado a
objetos cuando hacemos que una clase (subclase) hereda de
otra clase (superclase) estamos haciendo que la subclase
contenga todos los atributos y métodos que tenía la
superclase.
https://www.w3schools.com/pyth
on/python_classes.asp
By LeaySazory & Azmeruq
8.3. Herencias Múltiples
En Python, a diferencia de otros lenguajes como Java
o C#, se permite la herencia múltiple, es decir, una
clase puede heredar de varias clases a la vez.
Por ejemplo, podríamos tener una clase Cocodrilo que
heredara de la clase Terrestre, con métodos como
caminar() y atributos como velocidad_caminar y de la
clase Acuático, con métodos como nadar() y atributos
como velocidad_nadar. Basta con enumerar las clases de
las que se hereda separándolas por comas:
By LeaySazory & Azmeruq
En el siguiente ejemplo, como Terrestre se encuentra
más a la izquierda, sería la definición de desplazar de
esta clase la que prevalecerá, y por lo tanto si
llamamos al método desplazar de un objeto de tipo
Cocodrilo lo que se imprimiría sería “El animal anda”.
8.4. Polimorfismo
El polimorfismo es uno de los pilares básicos en la
programación orientada a objetos, por lo que para
entenderlo es importante tener las bases de la POO y la
herencia bien asentada. El término polimorfismo tiene
origen en las palabras poly (muchos) y morfo (formas), y
aplicado a la programación hace referencia a que los
objetos pueden tomar diferentes formas.
By LeaySazory & Azmeruq
Y dos clases Perro y Gato que heredan de la
anterior. El polimorfismo es precisamente lo que nos permite hacer lo
siguiente:
By LeaySazory & Azmeruq
Recuerda que Java es un lenguaje con tipado estático, lo
que significa que el tipo tiene que ser definido al crear la
variable. Sin embargo, estamos asignando a una
variable Animal un objeto de la clase Perro.
Sin embargo, no es posible realizar lo siguiente, ya que
OtraClase no comparte interfaz con Animal. Tendremos
un error error: incompatible types.
Polimorfismo en Python
El término polimorfismo visto desde el punto de vista de
Python es complicado de explicar sin hablar del duck
typing, por lo que te recomendamos la lectura.
By LeaySazory & Azmeruq
Podemos recrear el ejemplo de Java de la siguiente
manera. Supongamos que tenemos una clase Animal con
un método hablar().
Por otro lado tenemos otras dos clases, Perro, Gato
que heredan de la anterior. Además, implementan el
método hablar() de una forma distinta.
A continuación creamos un objeto de cada clase y
llamamos al método hablar(). Podemos observar que cada
animal se comporta de manera distinta al usar hablar().
By LeaySazory & Azmeruq
8.5. Encapsulación
La encapsulación se refiere a impedir el acceso a
determinados métodos y atributos de los objetos
estableciendo así qué puede utilizarse desde fuera de
la clase.
Esto se consigue en otros lenguajes de programación
como Java utilizando modificadores de acceso que
definen si cualquiera puede acceder a esa función o
variable (public) o si está restringido el acceso a la
propia clase (private).
By LeaySazory & Azmeruq
En el siguiente ejemplo sólo se imprimirá la cadena
correspondiente al método público(), mientras que al
intentar llamar al método__privado() Python lanzará una
excepción quejándose de que no existe (evidentemente
existe, pero no lo podemos ver porque es privado).
Este mecanismo se basa en que los nombres que
comienzan con un doble guión bajo se renombran para
incluir el nombre de la clase (característica que se
conoce con el nombre de name mangling).
En ocasiones también puede suceder que queramos
permitir el acceso a algún atributo de nuestro objeto, pero
que este se produzca de forma controlada.
By LeaySazory & Azmeruq
Esto se podría simplificar mediante propiedades, que
abstraen al usuario del hecho de que se está
utilizando métodos entre bambalinas para obtener y
modificar los valores del atributo:
https://www.programiz.com/python-pro
gramming/property
By LeaySazory & Azmeruq
PYTHON @property decorator
Una pythonica forma de usar GETTERS y SETTERS en POO.
PARTE 1/2
By LeaySazory & Azmeruq
PYTHON @property decorator
Una pythonica forma de usar GETTERS y SETTERS en POO.
PARTE 2/2
By LeaySazory & Azmeruq
9. Métodos de los Objetos.
By LeaySazory & Azmeruq
9. Métodos de los Objetos.
By LeaySazory & Azmeruq
9.1. Cadenas
S.count(sub[, start[, end]])
Devuelve el número de veces que se encuentra sub
en la cadena. Los parámetros opcionales start y end
definen una subcadena en la que buscar.
S.find(sub[, start[, end]])
Devuelve la posición en la que se encontró por primera
vez sub en la cadena o -1 si no se encontró.
S.join(sequence)
Devuelve una cadena resultante de concatenar las
cadenas de la secuencia se que separadas por la
cadena sobre la que se llama el método.
https://www.w3schools.com/python/ref_string_count.asp
https://www.w3schools.com/python/ref_string_find.asp
https://www.w3schools.com/python/python_ref_string.asp
https://www.w3schools.com/python/ref_string_join.asp
By LeaySazory & Azmeruq
S.partition(sep)
Busca el separador sep en la cadena y devuelve
una tupla con la subcadena hasta dicho separador,
el separador en sí, y la subcadena del separador
hasta el final de la cadena. Si no se encuentra en el
separador, la tupla contendrá la cadena en sí y dos
cadenas vacías.
S.replace(old, new[, count])
Devuelve una cadena en la que se han
reemplazado todas las ocurrencias de la cadena old
por la cadena new. Si se especifica el parámetro
count, este indica el número máximo de ocurrencias
a reemplazar.
S.split([sep [,maxsplit]])
Devuelve una lista conteniendo las subcadenas en
las que se divide nuestra cadena al dividirlas por el
delimitador sep.
https://www.w3schools.com/python/ref_string_partition.asp
https://www.w3schools.com/python/ref_string_replace.asp
https://www.w3schools.com/python/ref_string_split.asp
By LeaySazory & Azmeruq
9.2. Listas
L.append(object)
Añade un objeto al final de la lista.
L.count(value)
Devuelve el número de veces que se encontró value
en la lista.
L.extend(iterable)
Añade los elementos del iterable a la lista.
L.index(value[, start[, stop]])
Devuelve la posición en la que se encontró la primera
ocurrencia de value. Si se especifican, start y stop
definen las posiciones de inicio y fin de una sublista en
la que buscar.
https://www.w3schools.com/python/python_ref_list.asp
https://www.w3schools.com/python/ref_list_append.asp
https://www.w3schools.com/python/ref_list_count.asp
https://www.w3schools.com/python/ref_list_extend.asp
https://www.w3schools.com/python/ref_list_index.asp
By LeaySazory & Azmeruq
L.insert(index, object)
Inserta el objeto object en la posición index.
L.pop([index])
Devuelve el valor en la posición index y lo elimina de
la lista. Si no se especifica la posición, se utiliza el
último elemento de la lista.
L.remove(value)
Eliminar la primera ocurrencia de value en la lista.
L.reverse()
Invierte la lista. Esta función trabaja sobre la propia
lista desde la que se invoca el método, no sobre una
copia.
L.sort(cmp=None, key=None, reverse=False)
Ordena la lista.
https://www.w3schools.com/python/ref_list_insert.asp
https://www.w3schools.com/python/ref_list_pop.asp
https://www.w3schools.com/python/ref_list_remove.asp
https://www.w3schools.com/python/ref_list_reverse.asp
https://www.w3schools.com/python/ref_list_sort.asp
https://jamboard.google.com/d/1Jf1
XGjWYS0MItGy91pBWLpETy9dUo
niypAaHRudGIS4/edit?usp=sharing By LeaySazory & Azmeruq
# Entra cada valor de la lista
def myFunc(e):
print(e) #imprime el elemento de la lista que entra
print(len(e)) #imprime la longitud de ese elemento de la lista
return len(e)
cars = ['Ford', 'Mitsubishi', 'BMW', 'VW']
#Ordena por el número de caracteres del elemento de la lista
cars.sort(reverse=True, key=myFunc)
print(cars)
By LeaySazory & Azmeruq
9.3. Diccionarios
D.get(k[, d])
Busca el valor de la clave k en el diccionario.
D.has_key(k)
Comprueba si el diccionario tiene la clave k.
Es equivalente a la sintaxis k in D.
D.items()
Devuelve una lista de tuplas con pares
clave-valor.
D.keys()
Devuelve una lista de las claves del
diccionario.
D.pop(k[, d])
Borra la clave k del diccionario y devuelve su
valor.
https://www.w3schools.com/python/ref_dictionary_get.asp
https://www.w3schools.com/python/python_ref_dictionary.asp
https://www.w3schools.com/python/ref_dictionary_items.asp
https://www.w3schools.com/python/ref_dictionary_keys.asp
https://www.w3schools.com/python/ref_dictionary_pop.asp
https://www.geeksforgeeks.org/python-dictionary-has_key/
https://www.geeksforgeeks.org/python-membership-identity
-operators-not-not/
By LeaySazory & Azmeruq
10.
Programación Funcional
La programación funcional es un
paradigma en el que la
programación se basa casi en su
totalidad en funciones,
entendiendo el concepto de
función según su definición
matemática, y no como los simples
subprogramas de los lenguajes
imperativos que hemos visto hasta
ahora.
10.1. Función de orden superior
El concepto de funciones de orden superior se refiere al uso
de funciones como si de un valor cualquiera se tratara,
posibilitando el pasar funciones como parámetros de otras
funciones o devolver funciones como valor de retorno.
By LeaySazory & Azmeruq
Esto se podría acortar, ya que no es necesario almacenar
la función que nos pasan como valor de retorno en una
variable para poder llamarla:
10.2. MAP
Esta función trabaja de una forma muy similar a filter(), con
la diferencia que en lugar de aplicar una condición a un
elemento de una lista o secuencia, aplica una función
sobre todos los elementos y como resultado se devuelve
un iterable de tipo map:
10.3. Filter
Tal como su nombre indica filter significa filtrar, ya que a
partir de una lista o iterador y una función condicional,
es capaz de devolver una nueva colección con los
elementos filtrados que cumplan la condición.
https://www.w3schools.com/python/ref_func_map.asp
https://www.w3schools.com/python/ref_func_filter.asp
By LeaySazory & Azmeruq
Si ejecutamos el filtro obtenemos un objeto de tipo filtro,
pero podemos transformarlo en una lista fácilmente
haciendo un cast (conversión):
Por tanto cuando utilizamos la función filter() tenemos
que enviar una función condicional, pero como
recordaréis, no es necesario definirla, podemos utilizar
una función anónima lambda:
By LeaySazory & Azmeruq
10.4. Reduce
Toma como argumento un conjunto de valores (una lista,
una tupla, o cualquier objeto iterable) y lo "reduce" a un
único valor. Cómo se obtiene ese único valor a partir de
la colección pasada como argumento dependerá de la
función aplicada.
La función pasada como primer argumento debe tener
dos parámetros. reduce() se encargará de llamarla de
forma acumulativa
https://www.learnpython.org/en/Map%2C_Filter%2C_Reduce
By LeaySazory & Azmeruq
10.5. Funciones lambda
En Python, una función Lambda se refiere a una pequeña
función anónima. Las llamamos “funciones anónimas”
porque técnicamente carecen de nombre.
Sintaxis básica Todas las funciones Lambda en
Python tienen exactamente la misma sintaxis:
By LeaySazory & Azmeruq
Vamos a ver una función normal y un ejemplo de
Lambda:
11. Comprensión de listas
La comprensión de listas, del inglés list
comprehensions, es una funcionalidad que nos permite
crear listas avanzadas en una misma línea de código.
https://www.w3schools.com/python/gloss_pyt
hon_lambda.asp
https://docs.python.org/es/3/tutorial/index.html
By LeaySazory & Azmeruq
Como vemos, gracias a la comprensión de listas
podemos indicar directamente cada elemento que va a
formar la lista, en este caso la letra, a la vez que
definimos el for:
By LeaySazory & Azmeruq
Crear una lista con las potencias de 2 de los primeros 10 números:
By LeaySazory & Azmeruq
12. y 13. Generadores
Un generador es una función que produce una secuencia
de resultados en lugar de un único valor. Es decir, cada vez
que llamemos a la función nos darán un nuevo resultado.
La función generadora range(0,11), empieza cediendo el
0, luego se procesa el for comprobando si es par y lo
añade a la lista, en la siguiente iteración se cede el 1, se
procesa el for se comprueba si es par, en la siguiente se
cede el 2, etc.
Range es una especie de función generadora.
Por regla general las funciones devuelven un valor
con return, pero la peculiaridad de los
generadores es que van cediendo valores sobre
la marcha, en tiempo de ejecución.
By LeaySazory & Azmeruq
La función generadora range para acceder a una cadena
de manera inversa.
A través de su posición, tomando en cuenta la longitud de
la cadena.
https://www.geeksforgeeks.org/use-
yield-keyword-instead-return-keywo
rd-python/
By LeaySazory & Azmeruq
14. y 15. Clases Decoradoras
Los decoradores son un patrón de diseño de software
que alteran dinámicamente y agregan funcionalidades
adicionales a los métodos, funciones o clases de Python
sin tener que usar subclases o cambiar el código fuente
decorada.
La notación del decorador es mediante el símbolo @
seguido del nombre de la función que cumple el papel de
decorador, esto equivale a hacer esto:
By LeaySazory & Azmeruq
Es importante tener esto en cuenta para comprender cómo funcionan los decoradores. Esta
sintaxis deja bien en claro el porqué los decoradores toman una función como argumento y luego
retornan también una función.
By LeaySazory & Azmeruq
16. Excepciones
Los errores de ejecución son llamados comúnmente
excepciones y por eso de ahora en más utilizaremos ese
nombre. Durante la ejecución de un programa, si dentro de
una función surge una excepción y la función no la maneja, la
excepción se propaga hacia la función que la invocó,
En el caso de Python, el manejo de excepciones se
hace mediante los bloques que utilizan las
sentencias try, except y finally.
By LeaySazory & Azmeruq
En este caso, se levantó la excepción ZeroDivisionError
cuando se quiso hacer la división. Para evitar que se
levante la excepción y se detenga la ejecución del
programa, se utiliza el bloque try-except.
17.Entrada Estándar rawInput.
Entrada de datos por teclado en Python, proporciona dos
funciones integradas para leer una línea de texto de la
entrada estándar por teclado.
Estas funciones son:
raw_input()
input()
La función raw_input
El raw_input ([indicacion]) función lee una línea de la
entrada estándar y lo devuelve como una cadena
(quitando el salto de línea final).
Sintaxis :
str = raw_input(‘interacción ’)
By LeaySazory & Azmeruq
Cabe señalar que la función raw_input() recibe y procesa
de forma literal lo ingresado por teclado, por ejemplo si
ingresamos 1+2 +4 el intérprete lo maneja como texto y no
lo procesa:
La función input([indicacion]) es equivalente a raw_input,
excepto que devuelve el resultado evaluado en su caso.
Al recibir números, el intérprete los procesa
ejecutándose como una operación matemática. Otro
ejemplo tratando de mostrar la diferencia que existe
entre la función input y raw_input es ingresando por
ejemplo una dirección ip:
By LeaySazory & Azmeruq
eval(input())
https://es.stackoverflow.com/questions/38288/diferencia-entre-input-y-raw-input
raw_input ya no funciona el python 3.x, input() ahora recibe siempre como una cadena
By LeaySazory & Azmeruq
18. y 19.Módulos.
Para facilitar el mantenimiento y la lectura los programas
demasiado largos pueden dividirse en módulos, agrupando
elementos relacionados.
Si quisiéramos utilizar la funcionalidad definida en este
módulo en nuestro programa tendríamos que importarlo.
Para importar un módulo se utiliza la palabra clave
import seguida del nombre del módulo, que consiste en
el nombre del archivo menos la extensión.
https://replit.com/@RocioMarquez3/
ejemploModulo#main.py
By LeaySazory & Azmeruq
By LeaySazory & Azmeruq

Más contenido relacionado

Similar a Python Analista de Datos Junior

Ambientedeprogramacinenpascal 111015091809-phpapp02
Ambientedeprogramacinenpascal 111015091809-phpapp02Ambientedeprogramacinenpascal 111015091809-phpapp02
Ambientedeprogramacinenpascal 111015091809-phpapp02kevinwm17
 
Compiladores informe final
Compiladores informe finalCompiladores informe final
Compiladores informe finalPriscila Morocho
 
Act. Individual.- Pseudocódigos y diagramas de flujo
 Act. Individual.- Pseudocódigos y diagramas de flujo Act. Individual.- Pseudocódigos y diagramas de flujo
Act. Individual.- Pseudocódigos y diagramas de flujoElizabeth Reyna
 
Unidad6 funciones
Unidad6 funcionesUnidad6 funciones
Unidad6 funcionesmoii Hp
 
Compilador Usando Jflex y Cup
Compilador Usando Jflex y CupCompilador Usando Jflex y Cup
Compilador Usando Jflex y Cupditopo
 
Fundamentos de java I
Fundamentos de java IFundamentos de java I
Fundamentos de java IJitle Noriega
 
Guia examen diagnostico_pseint
Guia examen diagnostico_pseintGuia examen diagnostico_pseint
Guia examen diagnostico_pseintLeidyEspinoza6
 
Algoritmos y lenjuage de programacion
Algoritmos y  lenjuage de programacionAlgoritmos y  lenjuage de programacion
Algoritmos y lenjuage de programacionYsaac Ruiz
 
conceptos basicos lenguajes de programacion.pdf
conceptos basicos lenguajes de programacion.pdfconceptos basicos lenguajes de programacion.pdf
conceptos basicos lenguajes de programacion.pdfcarlosquiza2
 
9. listas y for-in
9.  listas y for-in9.  listas y for-in
9. listas y for-inFaby Ignacio
 
principales datos simples
principales datos simplesprincipales datos simples
principales datos simplesedgarcr717
 

Similar a Python Analista de Datos Junior (20)

Ambiente de programación en pascal
Ambiente de programación en pascalAmbiente de programación en pascal
Ambiente de programación en pascal
 
Ambientedeprogramacinenpascal 111015091809-phpapp02
Ambientedeprogramacinenpascal 111015091809-phpapp02Ambientedeprogramacinenpascal 111015091809-phpapp02
Ambientedeprogramacinenpascal 111015091809-phpapp02
 
Diapo04
Diapo04Diapo04
Diapo04
 
Programacion C#
Programacion C#Programacion C#
Programacion C#
 
Compiladores informe final
Compiladores informe finalCompiladores informe final
Compiladores informe final
 
Unidad V Tutorial de Python
Unidad V Tutorial de PythonUnidad V Tutorial de Python
Unidad V Tutorial de Python
 
Act. Individual.- Pseudocódigos y diagramas de flujo
 Act. Individual.- Pseudocódigos y diagramas de flujo Act. Individual.- Pseudocódigos y diagramas de flujo
Act. Individual.- Pseudocódigos y diagramas de flujo
 
Unidad6 funciones
Unidad6 funcionesUnidad6 funciones
Unidad6 funciones
 
Unidad 2
Unidad 2Unidad 2
Unidad 2
 
Unidad 2
Unidad 2Unidad 2
Unidad 2
 
Compilador Usando Jflex y Cup
Compilador Usando Jflex y CupCompilador Usando Jflex y Cup
Compilador Usando Jflex y Cup
 
Fundamentos de java I
Fundamentos de java IFundamentos de java I
Fundamentos de java I
 
Guia examen diagnostico_pseint
Guia examen diagnostico_pseintGuia examen diagnostico_pseint
Guia examen diagnostico_pseint
 
Cap 12 teoria de la computacion
Cap  12 teoria de la computacionCap  12 teoria de la computacion
Cap 12 teoria de la computacion
 
Algoritmos y lenjuage de programacion
Algoritmos y  lenjuage de programacionAlgoritmos y  lenjuage de programacion
Algoritmos y lenjuage de programacion
 
conceptos basicos lenguajes de programacion.pdf
conceptos basicos lenguajes de programacion.pdfconceptos basicos lenguajes de programacion.pdf
conceptos basicos lenguajes de programacion.pdf
 
Clase 1 - Python
Clase 1 - PythonClase 1 - Python
Clase 1 - Python
 
Int. programacion
Int. programacionInt. programacion
Int. programacion
 
9. listas y for-in
9.  listas y for-in9.  listas y for-in
9. listas y for-in
 
principales datos simples
principales datos simplesprincipales datos simples
principales datos simples
 

Más de Az

Base de datos
Base de datosBase de datos
Base de datosAz
 
Desarrollo de páginas WEB
Desarrollo de páginas WEBDesarrollo de páginas WEB
Desarrollo de páginas WEBAz
 
Pensamiento Computacional.pdf
Pensamiento Computacional.pdfPensamiento Computacional.pdf
Pensamiento Computacional.pdfAz
 
Libreto literatura (carta de traición) Epo 74
Libreto literatura (carta de traición) Epo 74Libreto literatura (carta de traición) Epo 74
Libreto literatura (carta de traición) Epo 74Az
 
Situación socioeconómica y política según Enrique Krauze (Adolfo Ruiz, Adolfo...
Situación socioeconómica y política según Enrique Krauze (Adolfo Ruiz, Adolfo...Situación socioeconómica y política según Enrique Krauze (Adolfo Ruiz, Adolfo...
Situación socioeconómica y política según Enrique Krauze (Adolfo Ruiz, Adolfo...Az
 
Situación socio-económica y política de México por presidente
Situación socio-económica y política de México por presidenteSituación socio-económica y política de México por presidente
Situación socio-económica y política de México por presidenteAz
 
Modelos económicos de México
Modelos económicos de MéxicoModelos económicos de México
Modelos económicos de MéxicoAz
 
Manual de computación
Manual de computaciónManual de computación
Manual de computaciónAz
 
Ensamble de una computadora
Ensamble de una computadoraEnsamble de una computadora
Ensamble de una computadoraAz
 
Partes de una computadora
Partes de una computadoraPartes de una computadora
Partes de una computadoraAz
 
La basura que comemos
La basura que comemosLa basura que comemos
La basura que comemosAz
 
Clase muestra español
Clase muestra españolClase muestra español
Clase muestra españolAz
 
Valores no compartidos, compartidos, económicos, estéticos, morales y el pape...
Valores no compartidos, compartidos, económicos, estéticos, morales y el pape...Valores no compartidos, compartidos, económicos, estéticos, morales y el pape...
Valores no compartidos, compartidos, económicos, estéticos, morales y el pape...Az
 
Cuidado del entorno 2/2
Cuidado del entorno 2/2Cuidado del entorno 2/2
Cuidado del entorno 2/2Az
 
Cuidado del entorno 1/2
Cuidado del entorno 1/2Cuidado del entorno 1/2
Cuidado del entorno 1/2Az
 
Macromedia Flash (conceptos básicos)
Macromedia Flash (conceptos básicos)Macromedia Flash (conceptos básicos)
Macromedia Flash (conceptos básicos)Az
 
Biología general
Biología generalBiología general
Biología generalAz
 
Album biologia
Album biologiaAlbum biologia
Album biologiaAz
 
Rúbrica 01
Rúbrica 01Rúbrica 01
Rúbrica 01Az
 

Más de Az (19)

Base de datos
Base de datosBase de datos
Base de datos
 
Desarrollo de páginas WEB
Desarrollo de páginas WEBDesarrollo de páginas WEB
Desarrollo de páginas WEB
 
Pensamiento Computacional.pdf
Pensamiento Computacional.pdfPensamiento Computacional.pdf
Pensamiento Computacional.pdf
 
Libreto literatura (carta de traición) Epo 74
Libreto literatura (carta de traición) Epo 74Libreto literatura (carta de traición) Epo 74
Libreto literatura (carta de traición) Epo 74
 
Situación socioeconómica y política según Enrique Krauze (Adolfo Ruiz, Adolfo...
Situación socioeconómica y política según Enrique Krauze (Adolfo Ruiz, Adolfo...Situación socioeconómica y política según Enrique Krauze (Adolfo Ruiz, Adolfo...
Situación socioeconómica y política según Enrique Krauze (Adolfo Ruiz, Adolfo...
 
Situación socio-económica y política de México por presidente
Situación socio-económica y política de México por presidenteSituación socio-económica y política de México por presidente
Situación socio-económica y política de México por presidente
 
Modelos económicos de México
Modelos económicos de MéxicoModelos económicos de México
Modelos económicos de México
 
Manual de computación
Manual de computaciónManual de computación
Manual de computación
 
Ensamble de una computadora
Ensamble de una computadoraEnsamble de una computadora
Ensamble de una computadora
 
Partes de una computadora
Partes de una computadoraPartes de una computadora
Partes de una computadora
 
La basura que comemos
La basura que comemosLa basura que comemos
La basura que comemos
 
Clase muestra español
Clase muestra españolClase muestra español
Clase muestra español
 
Valores no compartidos, compartidos, económicos, estéticos, morales y el pape...
Valores no compartidos, compartidos, económicos, estéticos, morales y el pape...Valores no compartidos, compartidos, económicos, estéticos, morales y el pape...
Valores no compartidos, compartidos, económicos, estéticos, morales y el pape...
 
Cuidado del entorno 2/2
Cuidado del entorno 2/2Cuidado del entorno 2/2
Cuidado del entorno 2/2
 
Cuidado del entorno 1/2
Cuidado del entorno 1/2Cuidado del entorno 1/2
Cuidado del entorno 1/2
 
Macromedia Flash (conceptos básicos)
Macromedia Flash (conceptos básicos)Macromedia Flash (conceptos básicos)
Macromedia Flash (conceptos básicos)
 
Biología general
Biología generalBiología general
Biología general
 
Album biologia
Album biologiaAlbum biologia
Album biologia
 
Rúbrica 01
Rúbrica 01Rúbrica 01
Rúbrica 01
 

Último

Caso de éxito de Hervian con el ERP Sage 200
Caso de éxito de Hervian con el ERP Sage 200Caso de éxito de Hervian con el ERP Sage 200
Caso de éxito de Hervian con el ERP Sage 200Opentix
 
Introducción a Funciones LENGUAJE DART FLUTTER
Introducción a Funciones LENGUAJE DART FLUTTERIntroducción a Funciones LENGUAJE DART FLUTTER
Introducción a Funciones LENGUAJE DART FLUTTEREMMAFLORESCARMONA
 
Segmentacion Segmantica_Modelos UNET and DEEPLABV3
Segmentacion Segmantica_Modelos UNET and DEEPLABV3Segmentacion Segmantica_Modelos UNET and DEEPLABV3
Segmentacion Segmantica_Modelos UNET and DEEPLABV3AlexysCaytanoMelndez1
 
PARTES DEL TECLADO Y SUS FUNCIONES - EJEMPLO
PARTES DEL TECLADO Y SUS FUNCIONES - EJEMPLOPARTES DEL TECLADO Y SUS FUNCIONES - EJEMPLO
PARTES DEL TECLADO Y SUS FUNCIONES - EJEMPLOSelenaCoronadoHuaman
 
BREEAM ES Urbanismo como herramienta para un planeamiento sostenible - Miguel...
BREEAM ES Urbanismo como herramienta para un planeamiento sostenible - Miguel...BREEAM ES Urbanismo como herramienta para un planeamiento sostenible - Miguel...
BREEAM ES Urbanismo como herramienta para un planeamiento sostenible - Miguel...ITeC Instituto Tecnología Construcción
 
Manual de Usuario APPs_AppInventor-2023.pdf
Manual de Usuario APPs_AppInventor-2023.pdfManual de Usuario APPs_AppInventor-2023.pdf
Manual de Usuario APPs_AppInventor-2023.pdfmasogeis
 
Unidad_3_T1_AutomatasFinitos presentacion
Unidad_3_T1_AutomatasFinitos presentacionUnidad_3_T1_AutomatasFinitos presentacion
Unidad_3_T1_AutomatasFinitos presentacionarmando_cardenas
 

Último (7)

Caso de éxito de Hervian con el ERP Sage 200
Caso de éxito de Hervian con el ERP Sage 200Caso de éxito de Hervian con el ERP Sage 200
Caso de éxito de Hervian con el ERP Sage 200
 
Introducción a Funciones LENGUAJE DART FLUTTER
Introducción a Funciones LENGUAJE DART FLUTTERIntroducción a Funciones LENGUAJE DART FLUTTER
Introducción a Funciones LENGUAJE DART FLUTTER
 
Segmentacion Segmantica_Modelos UNET and DEEPLABV3
Segmentacion Segmantica_Modelos UNET and DEEPLABV3Segmentacion Segmantica_Modelos UNET and DEEPLABV3
Segmentacion Segmantica_Modelos UNET and DEEPLABV3
 
PARTES DEL TECLADO Y SUS FUNCIONES - EJEMPLO
PARTES DEL TECLADO Y SUS FUNCIONES - EJEMPLOPARTES DEL TECLADO Y SUS FUNCIONES - EJEMPLO
PARTES DEL TECLADO Y SUS FUNCIONES - EJEMPLO
 
BREEAM ES Urbanismo como herramienta para un planeamiento sostenible - Miguel...
BREEAM ES Urbanismo como herramienta para un planeamiento sostenible - Miguel...BREEAM ES Urbanismo como herramienta para un planeamiento sostenible - Miguel...
BREEAM ES Urbanismo como herramienta para un planeamiento sostenible - Miguel...
 
Manual de Usuario APPs_AppInventor-2023.pdf
Manual de Usuario APPs_AppInventor-2023.pdfManual de Usuario APPs_AppInventor-2023.pdf
Manual de Usuario APPs_AppInventor-2023.pdf
 
Unidad_3_T1_AutomatasFinitos presentacion
Unidad_3_T1_AutomatasFinitos presentacionUnidad_3_T1_AutomatasFinitos presentacion
Unidad_3_T1_AutomatasFinitos presentacion
 

Python Analista de Datos Junior

  • 1. ANALISTA DE DATOS JUNIOR By LeaySazory & Azmeruq
  • 2. ÍNDICE Introducción al lenguaje de programación …………………………………………………. 3 Números enteros y reales ……………………………………………………………………………………. 10 Operadores aritméticos ………………………………………………………………………………………… 15 Tipos de colección de datos ……………………………………………………………………………….. 22 Operadores relacionales ………………………………………………………………………………………. 30 Sentencias condicionales …………………………………………………………………………………….. 33 Programación orientada a objetos ………………………………………………………………….. 40 Métodos de los objetos …………………………………………………………………………………………. 53 Programación funcional ……………………………………………………………………………………….. 61 Comprensión de listas …………………………………………………………………………………………… 66 Generadores ………………………………………………………………………………………………………………. 69 Clases decoradoras …………………………………………………………………………………………………. 71 Excepciones ………………………………………………………………………………………………………………. 73 Entrada estándar rawInput ………………………………………………………………………………… 74 Módulos ……………………………………………………………………………………………………………………… 77 By LeaySazory & Azmeruq
  • 3. 1. Introducción al lenguaje de programación. By LeaySazory & Azmeruq
  • 4. 1.1.¿Qué es Python? Python es un lenguaje de programación creado por Guido van Rossum a principios de los años 90, Es un lenguaje similar a Perl, pero con una sintaxis muy limpia y que favorece un código legible. Lenguaje interpretado o de script Un lenguaje interpretado o de script es aquel que se ejecuta utilizando un programa intermedio llamado intérprete, pueda comprender y ejecutar directamente una computadora (lenguajes compilados) By LeaySazory & Azmeruq
  • 5. Fuertemente tipado No se permite tratar a una variable como si fuera de un tipo distinto al que tiene, es necesario convertir de forma explícita dicha variable al nuevo tipo previamente. Por ejemplo, si tenemos una variable que contiene un texto (variable de tipo cadena o string) no podremos tratarla como un número (sumar la cadena “9” y el número 8). En otros lenguajes el tipo de la variable cambiaría para adaptarse al comportamiento By LeaySazory & Azmeruq
  • 6. Multiplataforma El intérprete de Python está disponible en multitud de plataformas (UNIX, Solaris, Linux, DOS, Windows, OS/2, Mac OS, etc.) por lo que no utilizamos librerías específicas de cada plataforma Orientado a objetos La orientación a objetos es un paradigma de programación en el que los conceptos del mundo real relevantes para nuestro problema se trasladan a clases y objetos en nuestro programa By LeaySazory & Azmeruq
  • 7. 1.2. Instalación de Python By LeaySazory & Azmeruq
  • 8. Primero comprueba si tu ordenador ejecuta la versión 32 bits de Windows o la de 64, en "Tipo de sistema" en la página de "Acerca de". Para llegar a esta página, intenta uno de estos métodos: Puedes descargar Python para Windows desde la siguiente web https://www.python.org/downloads/windows/. Da clic en el enlace "Latest Python 3 Release -Python x.x.x" Una cosa para tener en cuenta: Durante la instalación, verás una ventana de "Setup". Asegúrate de marcar las casillas "Add Python 3.6 to PATH" o "Add Python to your environment variables" y hacer click en "Install Now", como se muestra aquí (puede que se vea un poco diferente si estás instalando una versión diferente): By LeaySazory & Azmeruq
  • 9. Cuando la instalación se complete, verás un cuadro de diálogo con un enlace que puedes seguir para saber más sobre Python o sobre la versión que has instalado. Cierra o cancela ese diálogo. Comprobar que se instalo Python con el siguiente comando desde la cmd python - - versión By LeaySazory & Azmeruq
  • 10. 2. Números enteros y reales By LeaySazory & Azmeruq
  • 11. Números enteros Son aquellos números positivos o negativos que no tienen decimales (además del cero). En Python se pueden representar mediante el tipo int (de integer, entero) o el tipo long (largo). La única diferencia es que el tipo long permite almacenar números más grandes El tipo int de Python se implementa a bajo nivel mediante un tipo long de C. Y dado que Python utiliza C por debajo, como C, y a diferencia de Java, el rango de los valores que puede representar depende de la plataforma. By LeaySazory & Azmeruq
  • 12. almacenar números de -231 a 231 - 1, o lo que es lo mismo, de -2,147,483,648 a 2,147,483,647. En plataformas de 64 bits, el rango es de - 9,223,372,036,854,775,808 hasta 9,223,372,036,854,775,807. El tipo long de Python permite almacenar números de cualquier precisión, estando limitados solo por la memoria disponible en la máquina By LeaySazory & Azmeruq
  • 13. Reales Los números reales son los que tienen decimales. En Python se expresan mediante el tipo float. En otros lenguajes de programación, como C, tenemos también el tipo double, similar a float pero de mayor precisión (double = doble precisión). Python, sin embargo, implementa su tipo float a bajo nivel mediante una variable de tipo double de C, es decir, utilizando 64 bits, luego en Python siempre se utiliza doble precisión, y en concreto se sigue el estándar IEEE 754: 1 bit para el signo, 11 para el exponente, y 52 para la mantisa. Esto significa que los valores que podemos representar van desde ±2,2250738585072020 x 10-308 hasta ±1,7976931348623157×10308. By LeaySazory & Azmeruq
  • 15. 3. Operadores aritméticos By LeaySazory & Azmeruq
  • 16. Operadores 5 Veamos ahora qué podemos hacer con nuestros números usando los operadores por defecto. Para operaciones más complejas podemos recurrir al módulo math. El operador de módulo no hace otra cosa que devolvernos el resto de la división entre los dos operandos. En el ejemplo, 7/2 sería 3, con 1 de resto, luego el módulo es 1. La diferencia entre división y división entera no es otra que la que indica su nombre. By LeaySazory & Azmeruq
  • 18. True (cierto) y False (falso). Estos valores son especialmente importantes para las expresiones condicionales y los bucles, como veremos más adelante. En realidad el tipo bool (el tipo de los booleanos) es una subclase del tipo int. Puede que esto no tenga mucho sentido para tí si no conoces los términos de la orientación a objetos, que veremos más adelante, aunque tampoco es nada importante. By LeaySazory & Azmeruq
  • 19. Los valores booleanos son además el resultado de expresiones que utilizan operadores relacionales (comparaciones entre valores): 3.2. Operadores lógicos Estos son operadores que actúan sobre las representaciones en binario de los operadores. Por ejemplo: Si veis una operación como 3 & 2, lo que estás viendo es un and bit a bit entre los números binarios 11 y 10 (las representaciones en binario de 3 y 2). El operador and (&), del inglés “y”, devuelve 1 si el primer bit operando es 1 y el segundo bit operando es 1. Se devuelve 0 en caso contrario. El resultado de aplicar and bit a bit a 11 y 10 sería entonces el número binario 10, o lo que es lo mismo, 2 en decimal (el primer dígito es 1 para ambas cifras, mientras que el segundo es 1 sólo para una de ellas). By LeaySazory & Azmeruq
  • 20. 3.3. Cadenas Las cadenas no son más que texto encerrado entre comillas simples(‘cadena’)o dobles (“cadena”). Dentro de las comillas se pueden añadir caracteres especiales escapándolos con , como n, el carácter de nueva línea, o t, el de tabulación. Esto es especialmente útil, por ejemplo, para las expresiones regulares, como veremos en el capítulo correspondiente. unicode = u”äóè” raw = r”n” By LeaySazory & Azmeruq
  • 21. De esta forma podremos escribir el texto en varias líneas, y al imprimir la cadena, se respetarán los saltos de línea que introdujimos sin tener que recurrir al carácter n, así como las comillas sin tener que escaparlas. triple = “““primera linea esto se vera en otra linea””” admiten operadores como +, que funciona realizando una concatenación de las cadenas utilizadas como operandos y *, en la que se repite la cadena tantas veces como lo indique el número utilizado como segundo operando. a = “uno” b = “dos” c = a + b # c es “unodos” c = a * 3 # c es “unounouno” By LeaySazory & Azmeruq
  • 22. 4. Tipos de colecciones de datos. By LeaySazory & Azmeruq
  • 23. 4.1. Listas La lista es un tipo de colección ordenada. Sería equivalente a lo que en otros lenguajes se conoce por arrays, o vectores. Las listas pueden contener cualquier tipo de dato: números, cadenas, booleanos, … y también listas. Crear una lista es tan sencillo como indicar entre corchetes, y separados por comas, los valores que queremos incluir en la lista: l = [22, True, “una lista”, [1, 2]] By LeaySazory & Azmeruq
  • 24. Podemos acceder a cada uno de los elementos de la lista escribiendo el nombre de la lista e indicando el índice del elemento entre corchetes. l = [11, False] mi_var = l[0] # mi_var vale 11 Si queremos acceder a un elemento de una lista incluida dentro de otra lista tendremos que utilizar dos veces este operador, primero para indicar a qué posición de la lista exterior queremos acceder l = [“una lista”, [1, 2]] También podemos utilizar este operador para modificar un elemento de la lista si lo colocamos en la parte izquierda de una asignación: l = [22, True] l[0] = 99 # Con esto l valdrá [99, True] https://www.w3schools.com/python/python_lists.asp By LeaySazory & Azmeruq
  • 25. print(thislist[2:5]) Dentro de la función rango el el segungo valor -1 By LeaySazory & Azmeruq
  • 26. 4.2.Tuplas Todo lo que hemos explicado sobre las listas se aplica también a las tuplas, a excepción de la forma de definirla, para lo que se utilizan paréntesis en lugar de corchetes. t = (1, 2, True, “python”) En realidad el constructor de la tupla es la coma, no el paréntesis, pero el intérprete muestra los paréntesis, y nosotros deberíamos utilizarlos, con claridad. >>> t = 1, 2, 3 >>> type(t) type “tuple” Además hay que tener en cuenta que es necesario añadir una coma para tuplas de un solo elemento, para diferenciarlo de un elemento entre paréntesis. >>> t = (1) >>> type(t) By LeaySazory & Azmeruq
  • 27. By LeaySazory & Azmeruq
  • 28. 4.3.Diccionarios Los diccionarios, también llamados matrices asociativas, deben su nombre a que son colecciones que relacionan una clave y un valor. Por ejemplo, veamos un diccionario de películas y directores: d = {“Love Actually “: “Richard Curtis” “Kill Bill”: “Tarantino” “Amélie”: “Jean-Pierre Jeunet”} las listas o las tuplas es que a los valores almacenados en un diccionario se les accede no por su índice, porque de hecho no tienen orden, sino por su clave, utilizando de nuevo el operador []. d[“Love Actually “] # devuelve “Richard Curtis” Al igual que en listas y tuplas también se puede utilizar este operador para reasignar valores. d[“Kill Bill”] = “Quentin Tarantino” By LeaySazory & Azmeruq
  • 30. 5. Operaciones Relacionales. By LeaySazory & Azmeruq
  • 31. Los valores booleanos son además el resultado de expresiones que utilizan operadores relacionales (comparaciones entre valores): Operador == El operador == evalúa que los valores sean iguales para varios tipos de datos. Operador != El operador != evalúa si los valores son distintos. By LeaySazory & Azmeruq
  • 32. Operador < El operador < evalúa si el valor del lado izquierdo es menor que el valor del lado derecho Operador > El operador > evalúa si el valor del lado izquierdo es mayor que el valor del lado derecho. Operador <= El operador <= evalúa si el valor del lado izquierdo es menor o igual que el valor del lado derecho. Operador >= El operador >= evalúa si el valor del lado izquierdo es mayor o igual que el valor del lado derecho. 5<5 FALSE 5<=5 TRUE By LeaySazory & Azmeruq
  • 34. Si un programa no fuera más que una lista de órdenes a ejecutar de forma secuencial, una por una, no tendría mucha utilidad. Los condicionales nos permiten comprobar condiciones y hacer que nuestro programa se comporte de una forma u otra If La forma más simple de un estamento condicional es un if (del inglés si) seguido de la condición a evaluar, dos puntos (:) y en la siguiente línea e indentado, el código a ejecutar en caso de que se cumpla dicha condición. fav = “mundogeek.net” # si (if) fav es igual a “mundogeek.net” if fav == “mundogeek.net”: print “Tienes buen gusto!” print “Gracias” By LeaySazory & Azmeruq
  • 35. la forma de Python de saber que nuestra intención es la de que los dos print se ejecuten sólo en el caso de que se cumpla la condición, y no la de que se imprima la primera cadena si se cumple la condición y la otra siempre if fav == “mundogeek.net”: print “Tienes buen gusto!” print “Gracias” if … else Vamos a ver ahora un condicional algo más complicado. ¿Qué haríamos si quisiéramos que se ejecutaran unas ciertas órdenes en el caso de que la condición no se cumpliera? if fav == “mundogeek.net”: print “Tienes buen gusto!” print “Gracias” if fav != “mundogeek.net”: print “Vaya, que lástima” pero el condicional tiene una segunda construcción mucho más útil: if fav == “mundogeek.net”: print “Tienes buen gusto!” print “Gracias” else: print “Vaya, que lástima” By LeaySazory & Azmeruq
  • 36. 7.1. Bucles Mientras que los condicionales nos permiten ejecutar distintos fragmentos de código dependiendo de ciertas condiciones, los bucles nos permiten ejecutar un mismo fragmento de código un cierto número de veces, mientras se cumpla una determinada condición. while El bucle while (mientras) ejecuta un fragmento de código mientras se cumpla una condición. edad = 0 while edad < 18: edad = edad + 1 print “Felicidades, tienes “ + str(edad) La variable edad comienza valiendo 0. Como la condición de que edad es menor que 18 es cierta (0 es menor que 18), se entra en el bucle. https://www.w3schools.com/python/python_while_loops.asp By LeaySazory & Azmeruq
  • 37. for … in A los que tenga experiencia previa con según que lenguajes este bucle nos va a sorprender gratamente. En Python for se utiliza como una forma genérica de iterar sobre una secuencia. secuencia = [“uno”, “dos”, “tres”] for elemento in secuencia: print elemento Como hemos dicho los for se utilizan en Python para recorrer secuencias, por lo que vamos a utilizar un tipo secuencia, como es la lista, para nuestro ejemplo. Leamos la cabecera del bucle como si de lenguaje natural se tratara: “para cada elemento en secuencia” https://www.w3schools.com/python/ python_for_loops.asp By LeaySazory & Azmeruq
  • 38. 7.2. Funciones Una función es un fragmento de código con un nombre asociado que realiza una serie de tareas y devuelve un valor. A los fragmentos de código que tienen un nombre asociado y no devuelven valores se les suele llamar procedimientos. def mi_funcion(param1, param2): print(param1) print(param2) mi_funcion("hola", "adios") También podemos encontrarnos con una cadena de texto como primera línea del cuerpo de la función. Estas cadenas se conocen con el nombre de docstring (cadena de documentación) y sirven, como su nombre indica, a modo de documentación de la función. def mi_funcion(param1 param2): “““Esta función imprime los dos valores pasados como parámetros””” print param1 print param2 https://www.w3schools.com/python/python_f unctions.asp By LeaySazory & Azmeruq
  • 40. 8. Programación Orientada a objetos La Programación Orientada a Objetos (POO u OOP según sus siglas en inglés) es un paradigma de programación en el que los conceptos del mundo real relevantes para nuestro problema se modelan a través de clases y objetos. 8.1.Clases y Objetos En Python las clases se definen mediante la palabra clave class seguida del nombre de la clase, dos puntos (:) y a continuación, indentado, el cuerpo de la clase. Como en el caso de las funciones, si la primera línea del cuerpo se trata de una cadena de texto, esta será la cadena de documentación de la clase o docstring. https://jamboard.google.com/d/1Jf1 XGjWYS0MItGy91pBWLpETy9dUo niypAaHRudGIS4/edit?usp=sharing By LeaySazory & Azmeruq
  • 41. PYTHON VALORES POR DEFECTO EN CLASES Puedes tener valores por defecto definidos en tu clase a través del constructor. Nota como el parámetro TEMPERATURE tiene un valor por defecto 0: TEMPERATURE = 0 Así si al momento de crear el objeto no asignas un valor a temperatura, este puede ser opcional pues ya hay un valor por defecto. By LeaySazory & Azmeruq
  • 42. Esto es así porque Python pasa el primer argumento (la referencia al objeto que se crea) automáticamente. Ahora que ya hemos creado nuestro objeto, podemos acceder a sus atributos y métodos mediante la sintaxis objeto.atributo y objeto. método(): 8.2. Herencias Hay tres conceptos que son básicos para cualquier lenguaje de programación orientado a objetos: el encapsulamiento, la herencia y el polimorfismo. En un lenguaje orientado a objetos cuando hacemos que una clase (subclase) hereda de otra clase (superclase) estamos haciendo que la subclase contenga todos los atributos y métodos que tenía la superclase. https://www.w3schools.com/pyth on/python_classes.asp By LeaySazory & Azmeruq
  • 43. 8.3. Herencias Múltiples En Python, a diferencia de otros lenguajes como Java o C#, se permite la herencia múltiple, es decir, una clase puede heredar de varias clases a la vez. Por ejemplo, podríamos tener una clase Cocodrilo que heredara de la clase Terrestre, con métodos como caminar() y atributos como velocidad_caminar y de la clase Acuático, con métodos como nadar() y atributos como velocidad_nadar. Basta con enumerar las clases de las que se hereda separándolas por comas: By LeaySazory & Azmeruq
  • 44. En el siguiente ejemplo, como Terrestre se encuentra más a la izquierda, sería la definición de desplazar de esta clase la que prevalecerá, y por lo tanto si llamamos al método desplazar de un objeto de tipo Cocodrilo lo que se imprimiría sería “El animal anda”. 8.4. Polimorfismo El polimorfismo es uno de los pilares básicos en la programación orientada a objetos, por lo que para entenderlo es importante tener las bases de la POO y la herencia bien asentada. El término polimorfismo tiene origen en las palabras poly (muchos) y morfo (formas), y aplicado a la programación hace referencia a que los objetos pueden tomar diferentes formas. By LeaySazory & Azmeruq
  • 45. Y dos clases Perro y Gato que heredan de la anterior. El polimorfismo es precisamente lo que nos permite hacer lo siguiente: By LeaySazory & Azmeruq
  • 46. Recuerda que Java es un lenguaje con tipado estático, lo que significa que el tipo tiene que ser definido al crear la variable. Sin embargo, estamos asignando a una variable Animal un objeto de la clase Perro. Sin embargo, no es posible realizar lo siguiente, ya que OtraClase no comparte interfaz con Animal. Tendremos un error error: incompatible types. Polimorfismo en Python El término polimorfismo visto desde el punto de vista de Python es complicado de explicar sin hablar del duck typing, por lo que te recomendamos la lectura. By LeaySazory & Azmeruq
  • 47. Podemos recrear el ejemplo de Java de la siguiente manera. Supongamos que tenemos una clase Animal con un método hablar(). Por otro lado tenemos otras dos clases, Perro, Gato que heredan de la anterior. Además, implementan el método hablar() de una forma distinta. A continuación creamos un objeto de cada clase y llamamos al método hablar(). Podemos observar que cada animal se comporta de manera distinta al usar hablar(). By LeaySazory & Azmeruq
  • 48. 8.5. Encapsulación La encapsulación se refiere a impedir el acceso a determinados métodos y atributos de los objetos estableciendo así qué puede utilizarse desde fuera de la clase. Esto se consigue en otros lenguajes de programación como Java utilizando modificadores de acceso que definen si cualquiera puede acceder a esa función o variable (public) o si está restringido el acceso a la propia clase (private). By LeaySazory & Azmeruq
  • 49. En el siguiente ejemplo sólo se imprimirá la cadena correspondiente al método público(), mientras que al intentar llamar al método__privado() Python lanzará una excepción quejándose de que no existe (evidentemente existe, pero no lo podemos ver porque es privado). Este mecanismo se basa en que los nombres que comienzan con un doble guión bajo se renombran para incluir el nombre de la clase (característica que se conoce con el nombre de name mangling). En ocasiones también puede suceder que queramos permitir el acceso a algún atributo de nuestro objeto, pero que este se produzca de forma controlada. By LeaySazory & Azmeruq
  • 50. Esto se podría simplificar mediante propiedades, que abstraen al usuario del hecho de que se está utilizando métodos entre bambalinas para obtener y modificar los valores del atributo: https://www.programiz.com/python-pro gramming/property By LeaySazory & Azmeruq
  • 51. PYTHON @property decorator Una pythonica forma de usar GETTERS y SETTERS en POO. PARTE 1/2 By LeaySazory & Azmeruq
  • 52. PYTHON @property decorator Una pythonica forma de usar GETTERS y SETTERS en POO. PARTE 2/2 By LeaySazory & Azmeruq
  • 53. 9. Métodos de los Objetos. By LeaySazory & Azmeruq
  • 54. 9. Métodos de los Objetos. By LeaySazory & Azmeruq
  • 55. 9.1. Cadenas S.count(sub[, start[, end]]) Devuelve el número de veces que se encuentra sub en la cadena. Los parámetros opcionales start y end definen una subcadena en la que buscar. S.find(sub[, start[, end]]) Devuelve la posición en la que se encontró por primera vez sub en la cadena o -1 si no se encontró. S.join(sequence) Devuelve una cadena resultante de concatenar las cadenas de la secuencia se que separadas por la cadena sobre la que se llama el método. https://www.w3schools.com/python/ref_string_count.asp https://www.w3schools.com/python/ref_string_find.asp https://www.w3schools.com/python/python_ref_string.asp https://www.w3schools.com/python/ref_string_join.asp By LeaySazory & Azmeruq
  • 56. S.partition(sep) Busca el separador sep en la cadena y devuelve una tupla con la subcadena hasta dicho separador, el separador en sí, y la subcadena del separador hasta el final de la cadena. Si no se encuentra en el separador, la tupla contendrá la cadena en sí y dos cadenas vacías. S.replace(old, new[, count]) Devuelve una cadena en la que se han reemplazado todas las ocurrencias de la cadena old por la cadena new. Si se especifica el parámetro count, este indica el número máximo de ocurrencias a reemplazar. S.split([sep [,maxsplit]]) Devuelve una lista conteniendo las subcadenas en las que se divide nuestra cadena al dividirlas por el delimitador sep. https://www.w3schools.com/python/ref_string_partition.asp https://www.w3schools.com/python/ref_string_replace.asp https://www.w3schools.com/python/ref_string_split.asp By LeaySazory & Azmeruq
  • 57. 9.2. Listas L.append(object) Añade un objeto al final de la lista. L.count(value) Devuelve el número de veces que se encontró value en la lista. L.extend(iterable) Añade los elementos del iterable a la lista. L.index(value[, start[, stop]]) Devuelve la posición en la que se encontró la primera ocurrencia de value. Si se especifican, start y stop definen las posiciones de inicio y fin de una sublista en la que buscar. https://www.w3schools.com/python/python_ref_list.asp https://www.w3schools.com/python/ref_list_append.asp https://www.w3schools.com/python/ref_list_count.asp https://www.w3schools.com/python/ref_list_extend.asp https://www.w3schools.com/python/ref_list_index.asp By LeaySazory & Azmeruq
  • 58. L.insert(index, object) Inserta el objeto object en la posición index. L.pop([index]) Devuelve el valor en la posición index y lo elimina de la lista. Si no se especifica la posición, se utiliza el último elemento de la lista. L.remove(value) Eliminar la primera ocurrencia de value en la lista. L.reverse() Invierte la lista. Esta función trabaja sobre la propia lista desde la que se invoca el método, no sobre una copia. L.sort(cmp=None, key=None, reverse=False) Ordena la lista. https://www.w3schools.com/python/ref_list_insert.asp https://www.w3schools.com/python/ref_list_pop.asp https://www.w3schools.com/python/ref_list_remove.asp https://www.w3schools.com/python/ref_list_reverse.asp https://www.w3schools.com/python/ref_list_sort.asp https://jamboard.google.com/d/1Jf1 XGjWYS0MItGy91pBWLpETy9dUo niypAaHRudGIS4/edit?usp=sharing By LeaySazory & Azmeruq
  • 59. # Entra cada valor de la lista def myFunc(e): print(e) #imprime el elemento de la lista que entra print(len(e)) #imprime la longitud de ese elemento de la lista return len(e) cars = ['Ford', 'Mitsubishi', 'BMW', 'VW'] #Ordena por el número de caracteres del elemento de la lista cars.sort(reverse=True, key=myFunc) print(cars) By LeaySazory & Azmeruq
  • 60. 9.3. Diccionarios D.get(k[, d]) Busca el valor de la clave k en el diccionario. D.has_key(k) Comprueba si el diccionario tiene la clave k. Es equivalente a la sintaxis k in D. D.items() Devuelve una lista de tuplas con pares clave-valor. D.keys() Devuelve una lista de las claves del diccionario. D.pop(k[, d]) Borra la clave k del diccionario y devuelve su valor. https://www.w3schools.com/python/ref_dictionary_get.asp https://www.w3schools.com/python/python_ref_dictionary.asp https://www.w3schools.com/python/ref_dictionary_items.asp https://www.w3schools.com/python/ref_dictionary_keys.asp https://www.w3schools.com/python/ref_dictionary_pop.asp https://www.geeksforgeeks.org/python-dictionary-has_key/ https://www.geeksforgeeks.org/python-membership-identity -operators-not-not/ By LeaySazory & Azmeruq
  • 61. 10. Programación Funcional La programación funcional es un paradigma en el que la programación se basa casi en su totalidad en funciones, entendiendo el concepto de función según su definición matemática, y no como los simples subprogramas de los lenguajes imperativos que hemos visto hasta ahora. 10.1. Función de orden superior El concepto de funciones de orden superior se refiere al uso de funciones como si de un valor cualquiera se tratara, posibilitando el pasar funciones como parámetros de otras funciones o devolver funciones como valor de retorno. By LeaySazory & Azmeruq
  • 62. Esto se podría acortar, ya que no es necesario almacenar la función que nos pasan como valor de retorno en una variable para poder llamarla: 10.2. MAP Esta función trabaja de una forma muy similar a filter(), con la diferencia que en lugar de aplicar una condición a un elemento de una lista o secuencia, aplica una función sobre todos los elementos y como resultado se devuelve un iterable de tipo map: 10.3. Filter Tal como su nombre indica filter significa filtrar, ya que a partir de una lista o iterador y una función condicional, es capaz de devolver una nueva colección con los elementos filtrados que cumplan la condición. https://www.w3schools.com/python/ref_func_map.asp https://www.w3schools.com/python/ref_func_filter.asp By LeaySazory & Azmeruq
  • 63. Si ejecutamos el filtro obtenemos un objeto de tipo filtro, pero podemos transformarlo en una lista fácilmente haciendo un cast (conversión): Por tanto cuando utilizamos la función filter() tenemos que enviar una función condicional, pero como recordaréis, no es necesario definirla, podemos utilizar una función anónima lambda: By LeaySazory & Azmeruq
  • 64. 10.4. Reduce Toma como argumento un conjunto de valores (una lista, una tupla, o cualquier objeto iterable) y lo "reduce" a un único valor. Cómo se obtiene ese único valor a partir de la colección pasada como argumento dependerá de la función aplicada. La función pasada como primer argumento debe tener dos parámetros. reduce() se encargará de llamarla de forma acumulativa https://www.learnpython.org/en/Map%2C_Filter%2C_Reduce By LeaySazory & Azmeruq
  • 65. 10.5. Funciones lambda En Python, una función Lambda se refiere a una pequeña función anónima. Las llamamos “funciones anónimas” porque técnicamente carecen de nombre. Sintaxis básica Todas las funciones Lambda en Python tienen exactamente la misma sintaxis: By LeaySazory & Azmeruq
  • 66. Vamos a ver una función normal y un ejemplo de Lambda: 11. Comprensión de listas La comprensión de listas, del inglés list comprehensions, es una funcionalidad que nos permite crear listas avanzadas en una misma línea de código. https://www.w3schools.com/python/gloss_pyt hon_lambda.asp https://docs.python.org/es/3/tutorial/index.html By LeaySazory & Azmeruq
  • 67. Como vemos, gracias a la comprensión de listas podemos indicar directamente cada elemento que va a formar la lista, en este caso la letra, a la vez que definimos el for: By LeaySazory & Azmeruq
  • 68. Crear una lista con las potencias de 2 de los primeros 10 números: By LeaySazory & Azmeruq
  • 69. 12. y 13. Generadores Un generador es una función que produce una secuencia de resultados en lugar de un único valor. Es decir, cada vez que llamemos a la función nos darán un nuevo resultado. La función generadora range(0,11), empieza cediendo el 0, luego se procesa el for comprobando si es par y lo añade a la lista, en la siguiente iteración se cede el 1, se procesa el for se comprueba si es par, en la siguiente se cede el 2, etc. Range es una especie de función generadora. Por regla general las funciones devuelven un valor con return, pero la peculiaridad de los generadores es que van cediendo valores sobre la marcha, en tiempo de ejecución. By LeaySazory & Azmeruq
  • 70. La función generadora range para acceder a una cadena de manera inversa. A través de su posición, tomando en cuenta la longitud de la cadena. https://www.geeksforgeeks.org/use- yield-keyword-instead-return-keywo rd-python/ By LeaySazory & Azmeruq
  • 71. 14. y 15. Clases Decoradoras Los decoradores son un patrón de diseño de software que alteran dinámicamente y agregan funcionalidades adicionales a los métodos, funciones o clases de Python sin tener que usar subclases o cambiar el código fuente decorada. La notación del decorador es mediante el símbolo @ seguido del nombre de la función que cumple el papel de decorador, esto equivale a hacer esto: By LeaySazory & Azmeruq
  • 72. Es importante tener esto en cuenta para comprender cómo funcionan los decoradores. Esta sintaxis deja bien en claro el porqué los decoradores toman una función como argumento y luego retornan también una función. By LeaySazory & Azmeruq
  • 73. 16. Excepciones Los errores de ejecución son llamados comúnmente excepciones y por eso de ahora en más utilizaremos ese nombre. Durante la ejecución de un programa, si dentro de una función surge una excepción y la función no la maneja, la excepción se propaga hacia la función que la invocó, En el caso de Python, el manejo de excepciones se hace mediante los bloques que utilizan las sentencias try, except y finally. By LeaySazory & Azmeruq
  • 74. En este caso, se levantó la excepción ZeroDivisionError cuando se quiso hacer la división. Para evitar que se levante la excepción y se detenga la ejecución del programa, se utiliza el bloque try-except. 17.Entrada Estándar rawInput. Entrada de datos por teclado en Python, proporciona dos funciones integradas para leer una línea de texto de la entrada estándar por teclado. Estas funciones son: raw_input() input() La función raw_input El raw_input ([indicacion]) función lee una línea de la entrada estándar y lo devuelve como una cadena (quitando el salto de línea final). Sintaxis : str = raw_input(‘interacción ’) By LeaySazory & Azmeruq
  • 75. Cabe señalar que la función raw_input() recibe y procesa de forma literal lo ingresado por teclado, por ejemplo si ingresamos 1+2 +4 el intérprete lo maneja como texto y no lo procesa: La función input([indicacion]) es equivalente a raw_input, excepto que devuelve el resultado evaluado en su caso. Al recibir números, el intérprete los procesa ejecutándose como una operación matemática. Otro ejemplo tratando de mostrar la diferencia que existe entre la función input y raw_input es ingresando por ejemplo una dirección ip: By LeaySazory & Azmeruq
  • 76. eval(input()) https://es.stackoverflow.com/questions/38288/diferencia-entre-input-y-raw-input raw_input ya no funciona el python 3.x, input() ahora recibe siempre como una cadena By LeaySazory & Azmeruq
  • 77. 18. y 19.Módulos. Para facilitar el mantenimiento y la lectura los programas demasiado largos pueden dividirse en módulos, agrupando elementos relacionados. Si quisiéramos utilizar la funcionalidad definida en este módulo en nuestro programa tendríamos que importarlo. Para importar un módulo se utiliza la palabra clave import seguida del nombre del módulo, que consiste en el nombre del archivo menos la extensión. https://replit.com/@RocioMarquez3/ ejemploModulo#main.py By LeaySazory & Azmeruq
  • 78. By LeaySazory & Azmeruq