Download Python 2
Document related concepts
no text concepts found
Transcript
Que puedo hacer
PYTHON
QUE VAMOS A VER
Un poco de Python, ¿que es?
Los falsos mitos de Python
Diferencias entre Python 2.x y 3.x
Lo básico
Tipos de datos
Estructuras de control
Funciones y procedimientos
Estructuras avanzadas
Listas
Diccionarios
Alejandro Anuncibay - Grupo Universitario
de Informatica - Valladolid 2015
UN POCO DE PYTHON, ¿QUE ES?
Es un lenguaje de programación de (muy) alto
nivel
Es un lenguaje interpretado
Es un lenguaje multiparadigama
Es fuertemente tipado pero dinámico
Favorece la lectura de código
Obliga a la estructuración visual del código
Alejandro Anuncibay - Grupo Universitario
de Informatica - Valladolid 2015
UN POCO DE PYTHON, ¿QUE ES? (II)
Es multiplataforma
Open Source(PSFL)
http://es.wikipedia.org/wiki/Python_Software_Foundation_License
Alejandro Anuncibay - Grupo Universitario
de Informatica - Valladolid 2015
FALSOS MITOS DE PYTHON
Python es Lento
Permite
llamadas nativas a funciones en C
Python 3 tiene una implementación mucho mas
eficiente que Python 2
PyPy -> python implementado en python
Poca capacidad de desarrollar aplicaciones
completas
openERP,
parte del Kernel de linux…..
Alejandro Anuncibay - Grupo Universitario
de Informatica - Valladolid 2015
DIFERENCIAS ENTRE PYTHON 2 Y ·
La principal razón de que la portabilidad de los desarrolladores de Python 2 a 3 es que Python 2 es muy
estable y que se debían de portar muchas bibliotecas de Python 2 a 3 pero en la actualidad ese problema
ya no existe ya que la mayoría de ellas están en ambas versiones
Algunas diferencias son:
Print es una función en python 3
División de números enteros
Las “cadenas” (“strings”) son Unicode de forma predeterminada en Python 3
Input es una cadena de texto en Python 3
La función next() y el método .next()
En python 2 se puede usar next tanto como una función next(algo) o como un método
algo.next(), sin embargo en Python 3 solo se puede usar como función:
Comparando tipos:
Python 3 lanza excepción si se tratan de comparar tipos diferentes
Manejo de Excepciones
Python 3 estandariza el tratamiento de excepciones
Mas info
Alejandro Anuncibay - Grupo Universitario
de Informatica - Valladolid 2015
DEMO INTRO
Iniciar interprete en Python
Hola
Mundo
Calcular 33 elevado a 5
Alejandro Anuncibay - Grupo Universitario
de Informatica - Valladolid 2015
TIPOS DE DATOS
Tipo
Clase
Notas
Ejemplo
str
Cadena
Inmutable
'Cadena'
unicode
Cadena
Versión Unicode de str
u'Cadena'
list
Secuencia
Mutable, puede contener objetos de
diversos tipos
[4.0, 'Cadena', True]
tuple
Secuencia
Inmutable, puede contener objetos de
diversos tipos
(4.0, 'Cadena', True)
set
Conjunto
Mutable, sin orden, no contiene duplicados
set([4.0, 'Cadena', True])
frozenset
Conjunto
Inmutable, sin orden, no contiene
duplicados
frozenset([4.0, 'Cadena', True])
dict
Mapping
Grupo de pares clave:valor
{'key1': 1.0, 'key2': False}
int
Número entero
Precisión fija, convertido en long en caso de
overflow.
42
long
Número entero
Precisión arbitraria
42L ó 456966786151987643L
float
Número decimal
Coma flotante de doble precisión
3.1415927
complex
Número complejo
Parte real y parte imaginaria j.
(4.5 + 3j)
bool
Booleano
Valor booleano verdadero o falso
True
o False - Grupo Universitario
Alejandro
Anuncibay
de Informatica - Valladolid 2015
PYTHON - ESTRUCTURAS DE CONTROL DE FLUJO
Estructuras de control de flujo condicionales
Las estructuras de control de flujo condicionales, se definen mediante el uso de
tres palabras claves reservadas, del lenguaje: if (si), elif (sino, si) y else (sino).
Alejandro Anuncibay - Grupo Universitario
de Informatica - Valladolid 2015
PYTHON - ESTRUCTURAS DE CONTROL DE FLUJO
Estructuras de control iterativas
Bucle
while
Bucle
for
Alejandro Anuncibay - Grupo Universitario
de Informatica - Valladolid 2015
FUNCIONES Y PROCEDIMIENTOS
Definición de funciones
Sintaxis:
Definición de procedimientos
Sintaxis:
Alejandro Anuncibay - Grupo Universitario
de Informatica - Valladolid 2015
LISTAS - MÉTODOS DE AGREGADO
Agregar un elemento al final de la lista
Método:
Agregar varios elementos al final de la lista
Método:
append(“nuevo elemento”)
extend(otra_lista)
Agregar un elemento en una posición
determinada
Método:
insert(posición, “nuevo elemento”)
Alejandro Anuncibay - Grupo Universitario
de Informatica - Valladolid 2015
LISTAS - MÉTODOS DE ELIMINACIÓN
Eliminar el último elemento de la lista
Método:
pop()
Retorna: el elemento eliminado
Eliminar un elemento por su índice
Método:
pop(índice)
Retorna: el elemento eliminado
Eliminar un elemento por su valor
Método:
remove(“valor”)
Alejandro Anuncibay - Grupo Universitario
de Informatica - Valladolid 2015
LISTAS - MÉTODOS DE ORDEN
Ordenar una lista en reversa (invertir orden)
Método:
Ordenar una lista en forma ascendente
Método:
reverse()
sort()
Ordenar una lista en forma descendente
Método:
sort(reverse=True)
Alejandro Anuncibay - Grupo Universitario
de Informatica - Valladolid 2015
LISTAS - MÉTODOS DE BÚSQUEDA
>>> nombres_masculinos = ["Alvaro", "Miguel", "Edgardo", "David", "Miguel"]
Contar cantidad de apariciones elementos
Método: count(elemento)
>>> nombres_masculinos.count("Miguel")
2
Obtener número de índice
Método: index(elemento[, indice_inicio, indice_fin])
>>> nombres_masculinos.index("Miguel")
1
>>> nombres_masculinos.index("Miguel", 2, 5)
4
Alejandro Anuncibay - Grupo Universitario
de Informatica - Valladolid 2015
LISTAS – VALOR MÁXIMO Y MÍNIMO
Podemos obtener además, el valor máximo y
mínimo tanto de listas como de tuplas:
Valor máximo
Método:
max()
Retorna: el valor máximo
Valor mínimo
Método:
min()
Retorna: el valor mínimo
Alejandro Anuncibay - Grupo Universitario
de Informatica - Valladolid 2015
DEMO LISTAS
Alejandro Anuncibay - Grupo Universitario
de Informatica - Valladolid 2015
DICCIONARIOS
Un diccionario en Python es, en esencia, lo
mismo: una colección de pares formados por
claves y definiciones.
Las claves no tienen que ser, necesariamente,
palabras: puede servir cualquier tipo que sea
inmutable, como los números o los strings.
Las claves han de ser únicas. Si tratamos de
agregar otra ya existente, simplemente el valor
nuevo sustituirá al antiguo
Alejandro Anuncibay - Grupo Universitario
de Informatica - Valladolid 2015
DICCIONARIOS - MÉTODOS DE ELIMINACIÓN
Eliminar un par (clave:valor)
Método:
del diccionario[clave]
Vaciar un diccionario
Método:
clear()
Alejandro Anuncibay - Grupo Universitario
de Informatica - Valladolid 2015
DICCIONARIOS - MÉTODOS DE AGREGADO Y
CREACIÓN
Copiar un diccionario
Método: copy()
>>dicc2
Crear un nuevo diccionario desde las claves de
una secuencia
= dicc1.copy()
Método: dict.fromkeys(secuencia[, valor por defecto])
Concatenar diccionarios
Método: update(diccionario)
>>dicc1
= dicc1.update(dicc2)
Alejandro Anuncibay - Grupo Universitario
de Informatica - Valladolid 2015
DICCIONARIOS - MÉTODOS DE RETORNO
Obtener el valor de una clave
Saber si una clave existe en el diccionario
Método: get(clave)
Retorna: valor
Método: has_key(clave)
Retorna: True o False
Obtener las claves y valores de un diccionario
Método: iteritems() Alias: items()
Ejemplo:
for clave, valor in diccionario.iteritems():
print "El valor de la clave %s es %s" % (clave, valor)
Obtener los valores de un diccionario
Método: values()
Retorna: lista []
Obtener la cantidad de elementos de un diccionario
Metodo: len(dicc)
Retorna: número Elementos
Alejandro Anuncibay - Grupo Universitario
de Informatica - Valladolid 2015
DEMO DICCIONARIOS
Alejandro Anuncibay - Grupo Universitario
de Informatica - Valladolid 2015
STRINGS - MÉTODOS DE FORMATO
Convertir a mayúscula la primera letra
Convertir una cadena a minúsculas
Método: lower()
Retorna: una copia de la cadena en minúsculas
Convertir una cadena a mayúsculas
Método: capitalize()
Retorna: una copia de la cadena con la primera letra en mayúsculas
Método: upper()
Retorna: una copia de la cadena en mayúsculas
Convertir mayúsculas a minúsculas y viceversa
Método: swapcase()
Retorna: una copia de la cadena convertidas las mayúsculas en
minúsculas y viceversa
Alejandro Anuncibay - Grupo Universitario
de Informatica - Valladolid 2015
STRINGS - MÉTODOS DE BÚSQUEDA
Contar cantidad de apariciones de una subcadena
Método: count(“subcadena”[, posicion_inicio,
posicion_fin])
Retorna: un entero representando la cantidad de
apariciones de subcadena dentro de cadena
Buscar una subcadena dentro de una cadena
Método: find(“subcadena”[, posicion_inicio,
posicion_fin])
Retorna: un entero representando la posición donde
inicia la subcadena dentro de cadena. Si no la
encuentra, retorna -1
Alejandro Anuncibay - Grupo Universitario
de Informatica - Valladolid 2015
STRINGS - MÉTODOS DE VALIDACIÓN
Saber si una cadena comienza con una
subcadena determinada
Método: startswith(“subcadena”[, posicion_inicio,
posicion_fin])
Retorna: True o False
Saber si una cadena finaliza con una subcadena
determinada
Método: endswith(“subcadena”[, posicion_inicio,
posicion_fin])
Retorna: True o False
Alejandro Anuncibay - Grupo Universitario
de Informatica - Valladolid 2015
STRINGS - MÉTODOS DE VALIDACIÓN II
Saber si una cadena es alfanumérica
Saber si una cadena es alfabética
Método: islower()
Saber si una cadena contiene solo mayúsculas
Método: isdigit()
Saber si una cadena contiene solo minúsculas
Método: isalpha()
Saber si una cadena es numérica
Método: isalnum()
Método: isupper()
Saber si una cadena contiene solo espacios en blanco
Método: isspace()
Alejandro Anuncibay - Grupo Universitario
de Informatica - Valladolid 2015
STRINGS - MÉTODOS DE SUSTITUCIÓN
Dar formato a una cadena, sustituyendo texto dinámicamente
Reemplazar texto en una cadena
Método: strip([“caracter”])
Retorna: la cadena sustituida
Eliminar caracteres a la izquierda de una cadena
Método: replace(“subcadena a buscar”, “subcadena por la cual reemplazar”)
Retorna: la cadena reemplazada
Eliminar caracteres a la izquierda y derecha de una cadena
Método: format(*args, **kwargs)
Retorna: la cadena formateada
Método: lstrip([“caracter”])
Retorna: la cadena sustituida
Eliminar caracteres a la derecha de una cadena
Método: rstrip([“caracter”])
Retorna: la cadena sustituida
Alejandro Anuncibay - Grupo Universitario
de Informatica - Valladolid 2015
STRINGS - MÉTODOS DE UNIÓN Y DIVISIÓN
Unir una cadena de forma iterativa
Partir una cadena en tres partes, utilizando un separador
Método: partition(“separador”)
Retorna: una tupla de tres elementos donde el primero es el contenido de la cadena previo al
separador, el segundo, el separador mismo y el tercero, el contenido de la cadena posterior al
separador
Partir una cadena en varias partes, utilizando un separador
Método: join(iterable)
Retorna: la cadena unida con el iterable (la cadena es separada por cada uno de los elementos
del iterable)
Método: split(“separador”)
Retorna: una lista con todos elementos encontrados al dividir la cadena por un separador
Partir una cadena en en líneas
Método: splitlines()
Retorna: una lista donde cada elemento es una fracción de la cadena divida en líneas
Alejandro Anuncibay - Grupo Universitario
de Informatica - Valladolid 2015
DEMO STRINGS
Alejandro Anuncibay - Grupo Universitario
de Informatica - Valladolid 2015
FACILITÁNDONOS EL TRABAJO - SETUPTOOLS
Setuptools, es una colección de mejoras para
el módulo distutils de Python
Por
defecto, utiliza PyPI para buscar los paquetes
Permite crear paquetes Egg Python, que son
Paquetes Python empaquetados en un sólo archivo
para su distribución.
Incluye archivos de configuración y todos los
archivos que forman parte del directorio de trabajo,
sin necesidad de listarlos individualmente o crear
archivos de manifiesto.
Alejandro Anuncibay - Grupo Universitario
de Informatica - Valladolid 2015
FACILITÁNDONOS EL TRABAJO - EASYINSTALL
easy_install, es una herramienta que se basa en Setuptools para automáticamente
encontrar y descargar desde Internet las dependencias, para instalarlas o
actualizarlas, ya sea bajo demanda o cuando son requeridas como dependencias al
instalar otra aplicación
Instalación en sistemas Debian
Ejemplos de uso
sudo apt-get install build-essential python-dev python-setuptools
easy_install SQLObject
easy_install -f http://pythonpaste.org/package_index.html SQLObject
easy_install -i http://pypi.ejemplo.com/simple SQLObject (replica repositorio)
easy_install http://ejemplo.com/ruta/a/MiPaquete-1.2.3.tgz
easy_install ./Descargas/OtroPaquete-3.2.1-py2.7.egg
easy_install "ZopeSkel==2.21.2“ (versión especifica)
easy_install --upgrade PyProtocols
Instalar pip
easy_install python-pip
Es otro instalador de paquetes
Alejandro Anuncibay - Grupo Universitario
de Informatica - Valladolid 2015
FACILITÁNDONOS EL TRABAJO - PIP
Muchos paquetes pueden ser encontrados en
el Índice de Paquete de la Python
(PyPI).Instalación en sistemas Debian
sudo
apt-get install build-essential python-pip
Ejemplos de uso
pip install sqlite
pip install sqlalchemy
Alejandro Anuncibay - Grupo Universitario
de Informatica - Valladolid 2015
DEMO
Creación de una aplicación permita la introducción
de datos y tenga la opción de indicar si una
palabra ya ha sido introducida, en este caso
indicarlo y contabilizar el numero de veces que se
ha introducido ya, en caso contrario,introducirla
(Utilizar diccionarios)
APRENDER A ABRIR FICHEROS
Abrir un fichero
Contar las veces que aparece cada palabra
Guardar un fichero de texto las veces que aparece cada
palabra
PREGUNTAS
Alejandro Anuncibay - Grupo Universitario
de Informatica - Valladolid 2015