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