Tutorial PYTHON Desde Cero

El intérprete de python o shell En la primera entrada del Tutorial python desde cero vamos aprender conceptos básicos de

Views 143 Downloads 52 File size 2MB

Report DMCA / Copyright

DOWNLOAD FILE

Recommend stories

Citation preview

El intérprete de python o shell En la primera entrada del Tutorial python desde cero vamos aprender conceptos básicos de programación: valores, variables, operadores y expresiones. Lo primero que vamos hacer es aprender a usar el Shell interactivo. Para abrir el IDLE en Windows vamos a Inicio-Programas-Python2.7-IDLE (Python GUI) En linux: abrimos la consola del sistema, escribimos python y damos enter. Una vez abierto el idle vamos a realizar unos simples ejercicios de matemáticas para familiarizarnos un poco con el lenguaje. El Shell interactivo de python puede funcionar como una calculadora, para probarlo podemos escribir 3 + 3 y pulsamos la tecla enter para efectuar el cálculo.

Para sumar usamos el signo de +, para restar el signo de -, para multiplicar usamos el asterisco * y para dividir usamos la barra diagonal /. Cuando se utilizan de esta manera: +, -, *, / son llamados operadores, ya que le indican a la computadora la operación especifica con los números que las rodean.

Numero enteros y Números de punto flotante En programación y también en matemática, los números 3, 0 ,55 son llamados números enteros y los números 2.0, 43.5, 5.5 son llamados números decimales. Los números con punto decimal se denominan números de punto flotante. En matemática 5.0 es 5, pero para el ordenador en programación el 5 es entero y el 5.0 es decimal. Probar escribir en el intérprete de python >>> algunas operaciones numéricas: 5+5+5 3*2+5 50-4*2 Estos problemas de matemáticas se llaman expresiones, compuestas por valores (los números), conectadas por los operadores (los signos matemáticos). Cuando la computadora resuelve la expresión 10 + 5 y se obtiene 15 se dice que se ha evaluado la expresión. La evaluación de una expresión se reduce a la expresión de un único valor, igual que una solución de un problema matemático reduce el problema a un número: la respuesta.

Si escribimos en el Shell interactivo 8 + recibiremos un mensaje de error.

Este error ocurrió porque 8 + no es una expresión. Las expresiones tienen valores que se ligan por los operadores y el símbolo de + por ejemplo, espera conectar por lo menos dos cosas en python. Un error de sintaxis significa que el ordenador no entiende las instrucciones que se dieron por haberlas escrito incorrectamente. Python siempre dará un mensaje de error al tratar de hacer algo que no entiende. Por este motivo, programar no es solo decirle a la computadora que hacer, si no también saber decirle cómo hacerlo.

Almacenar valores en variables Es muy útil en programación poder guardar los resultados de las expresiones en algún lugar. Estos lugares se llaman variables. Pensemos en las variables como una caja donde podemos almacenar valores. Para asignar valores a las variables utilizamos el signo = (llamado operador de asignación). Por ejemplo, para almacenar el valor 15 en una variable llamada “correo”, introducimos correo = 15 en el shell de python.

Correo = 15

Al pulsar la tecla enter no va a ocurrir nada, a no ser que nos muestre un mensaje de error. Lo que acabamos de decirle al ordenador es que solo guarde el valor 15 en la variable “correo”, el Shell quedará nuevamente con los guiones >>> para seguir ingresando código. Esta instrucción que acabamos de hacer es llamada sentencia de asignación, crea una variable con el nombre “correo” y almacena el valor 15 en la misma. A diferencia de las expresiones, las declaraciones son instrucciones que no se evalúan como cualquier valor, por lo que no hay ningún valor para mostrar en la línea siguiente.

Tenemos que recordar que las variables almacenan valores y no expresiones. Por ejemplo, si tuviéramos la declaración correo = 10 + 5, entonces la expresión 10 + 5 tendría primero que ser evaluada a 15 y luego el valor 15 se almacenará en la variable “correo”. Ahora vamos a probar si hemos creado bien nuestra variable. Si escribimos en el Shell de python correo = 15 y pulsamos enter, podremos fijarnos escribiendo nuevamente en el Shell de python >>> correo y pulsamos enter.

Como podemos ver, al escribir la variable, el intérprete nos devuelve su contenido.

Ahora que tenemos nuestra primera variable asignada, podremos jugar un poco con ella. Podemos escribir en el intérprete: correo + 5 y vamos a obtener el número 20.

Si intentamos utilizar una variable antes de asignarle algún valor, python nos dará un mensaje de error porque tal variable no existe todavía. También pude dar mensajes de error si escribimos mal la variable a utilizar.

Podemos cambiar el valor almacenado en una variable mediante la introducción de otra sentencia de asignación. Por ejemplo, intentemos lo siguiente:

La primera vez que hacemos la suma de correo + 5 nos va a dar 20 porque guardamos el valor 15 en la variable “correo”. Luego le dijimos a python que la variable correo = 3 y por lo tanto sumándole 5 nos iba a devolver 8. Para saber cuál es el valor de la variable en cualquier momento podemos escribir el nombre de la variable en el Shell de python y apretar enter para que nos devuelva el valor almacenado en ella. También podemos hacer cosas como:

Usando más de una variable Vamos a tener que utilizar muchas variables para realizar nuestros programas. Ejemplo: >>> leche = 10 >>> huevos = 15 Ahora la variable “leche” tiene 10 en su interior y la variable “huevos” tiene 15. Vamos a crear una variable llamada "canasta" con la suma de las variable anteriores: >>> leche = 10 >>> huevos = 15 >>> canasta = leche + huevos 25 >>> El valor de “canastas” es 25 porque cuando sumamos leche que valía 10 + huevos que valía 15, la variable “canasta” guardó el valor 25. ¿Bien fácil no?

Nuestro primer programa - Hola Mundo!!!

El clásico Hola Mundo!!! En este segundo artículo del Tutorial python desde cero, crearemos nuestro primer programa en python. ¿Qué vamos hacer? Haremos el clásico programa "Hola Mundo" porque es una tradición en el mundo de la programación y en Python Diario lo respetamos :). El sistema que se va a utilizar a lo largo de todo el tutorial será Linux (ubuntu), pero cualquier duda que tengan por más que estén trabajando en otro sistema operativo, agradezco que la escriban al final de la entrada, en los comentarios del blog. El IDE (entorno de desarrollo integrado) que utilizaremos a lo largo del tutorial será Geany (que es muy ligero, versátil y fácil de utilizar para los que recién comienzan). Si utilizas Windows puedes descargarlo de la página oficial: http://www.geany.org/download/releases Es hora de echarle mano a nuestro primer programa en python. Para eso abriremos Geany y nos encontraremos con algo como esto:

Entorno de desarrollo Geany Nosotros por el momento, nos centraremos en el código (si quieres más información acerca del uso de Geany puedes fijarte en la documentación oficial). Geany no es utilizado solo para programar en python, en este entorno de desarrollo se pueden utilizar muchos lenguajes de programación (C, C++, Perl, PHP, etc), por eso lo primero que debemos hacer al crear un nuevo archivo en Geany, es especificar en que lenguaje trabajaremos. Para eso, en la barra de herramientas:

Documento Python Elegimos: Documento - Establecer tipo de Archivo - Lenguaje de Script - Archivos de fuentes Python. Ahora nos queda escribir el código y luego guardar (Control + S) nuestro archivo con extensión .py .

Código de nuestro primero programa en python Una vez guardado nuestro programa, podremos ejecutarlo presionando la tecla F5 o en el botón:

Hola mundo en python

Ya tenemos nuestro programa funcionando, ahora explicaré brevemente el código, pero no se asusten, en futuros tutoriales explicare en detalle bien su funcionamiento. La idea era ver los pasos para dejar operativo un código escrito en python. Código: ? 1

#!/usr/bin/python

2

# -*- coding: utf-8 -*-

3 4

print "Hola mundo"

La primera línea arranca con #, y todo lo que arranca con hashtag para python es un comentario (utilizado para dejar anotaciones entre nuestros códigos para una mejor comprensión). Toda esta primera línea es utilizada en sistemas Unix para definir la ruta del interprete. La segunda línea también arranca como un comentario, y es utilizada en python para definir la codificación que tendrá nuestro programa que por lo general es utf-8. Por lo general estas dos primeras líneas siempre van en nuestros códigos python. Y por útlimo, la tercera línea print "Hola mundo", es la que hace que nuestro programa imprima en pantalla el mensaje "Hola Mundo". Bueno, con este pequeño aporte, ya aprendimos a crear y ejecutar nuestro primer programa en python.

Tipos de datos en Python Vamos conocer los distintos tipos de datos en python. Recordemos que una variable era como una caja donde podíamos almacenar valores.

Ejemplo en el interprete de python: >>>x = 5 >>>a = 5.2 >>>b = "Hola mundo!!!"

Estos valores que almacenan nuestras variables, tienen distintos tipos de datos. En el ejemplo anterior vimos que la variable x = 5 (5 es de tipo entero), la variable a = 5.2(5.2 es de tipo Float, cualquier número que tenga dígitos después de un punto decimal) y la variable b = "Hola mundo!!!" ("Hola mundo!!!" es una cadena, de tipo string).

Antes de comenzar a ver los distintos tipos de datos en python, quería comentarles que existe una función en python llamada type (tipo) que nos devuelve el tipo de dato del objeto indicado. Veamos un ejemplo:

Como se ve en el ejemplo, x contiene un int (integer - entero), a contiene un Float(número decimal) y b contiene un str (String - Cadena).

Distintos tipos de datos en python Tipo de dato numérico En python tenemos: números enteros, números decimales (de punto flotante) y números complejos. Los números enteros representan todos los números "Enteros" (positivos y negativos), ejemplo: 1, 0, -5 (Tipo de dato int) Los números decimales son todos los números que contiene dígitos después de un punto decimal, ejemplo: 1.0 , -6.5, etc (tipo de dato Float) También existe los números complejos, que son utilizados generalmente para funciones matemáticas, ejemplo: 3i + 4j (en el tutorial no serán utilizados los números complejos)

Tipo de dato String o Cadena En python un String o Cadena es una secuencia (ordenada de izquierda a derecha) de caracteres. Las cadenas comienzan y terminan con comillas dobles o simples. Declarar una cadena es simple, ya lo vimos en ejemplos anteriores: >>> blog = "Mi Diario Python"

En caso de olvidarnos de cerrar o abrir una comilla, python nos devolverá un errorcomo en el siguiente ejemplo:

En en el ejemplo me he olvidado de cerrar las comillas dobles ("") y python me ha informado que ha ocurrido un error de sintaxis.

Si nuestra cadena de texto es una cadena larga y tiene saltos de líneas, podemos utilizar las comillas triples ("""Texto"""), un ejemplo sería: (La declaración print hace que nuestro texto se imprima en pantalla)

A lo largo del curso iremos viendo distintas funciones que utilizaremos para trabajar con las cadenas. Un ejemplo de ello es la función len(), que utilizaremos para contar los caracteres de una cadena, ejemplo: >>>fruta = "manzana" >>>len(fruta) 7 o lo mismo sería: >>>len("manzana") 7

También podemos acceder a los caracteres de una cadena (esto lo realizamos con la sintaxis []) y como pasa con Java y C, el índice de los caracteres de una cadena comienza en 0 si accedemos desde la izquierda y en -1 si lo hacemos desde la derecha (último). Utilizando el ejemplo anterior, mostrare como acceder a cada uno de los caracteres de "manzana" utilizando los índices:

También podemos acceder a porciones de nuestras cadenas utilizando la sintaxis:

En el ejemplo anterior creamos una variable prueba con una cadena "abcdef". Mostramos el último valor con el índice -1 ("f"), mostramos el antepenúltimo valor con el índice -3 ("d"). Luego vimos 3 porciones de la variable: primero desde el inicio hasta el índice 3 ([:3]), luego desde el índice 2 hasta el 5 ([2:5]) y por último desde el índice 3 hasta el final ([3:]). El operador in se utiliza para comprobar si uno o más caracteres se encuentran o no en la cadena. La expresión devolverá un valor boolenao (True o False). Veamos un ejemplo:

Caracteres especiales en las cadenas La contra barra (\) se utiliza para introducir un caracter especial. Veamos la siguiente tabla: \n -- Salto de línea (nueva línea) \t -- Tabulación horizontal \\ -- Contra barra \' -- Comilla simple \"-- Comilla doble Veamos algún ejemplo: La declaración print hace que nuestro texto se imprima en pantalla: >>> print "Esta es una contra barra (\\)" Esta es una contra barra (\) >>> print "Esta es una \t tabulacion horizontal" Esta es una

tabulacion horizontal

>>> print "Esta es una \'simple comilla\'" Esta es una 'simple comilla' >>> print "Esta es una \"Doble comilla\"" Esta es una "Doble comilla" >>> print "Esta es una \nueva linea" Esta es una nueva linea

Tipo de dato Boolean (True y False)

El tipo de datos más simple de construir es el tipo Booleano (verdadero y falso). Muy útil en las expresiones condicionales y cualquier otro lugar que se necesite la verdad o falsedad de una condición. Veamos un ejemplo:

Tipo de dato Tupla Las Tuplas son como un tipo de recipiente que contiene una serie de valores separados por comas entre paréntesis. Las tuplas son inmutables (es decir, no pueden cambiar su contenido una vez creadas) Creando tuplas de ejemplo:

En el primer ejemplo declaramos tupla1 y le asignamos los valores (1, 2, 3, 4). Luego verificamos que tipo de datos es con el comando type y por último imprimimos en pantalla con print el contenido de tupla1: >>> tupla1 = (1, 2, 3, 4) >>> type(tupla1)

>>> print tupla1 (1, 2, 3, 4) En el segundo ejemplo hacemos lo mismo, pero la tupla2 tendrá enteros y cadenas: >>> tupla2 = (1, "python", 64, "blog") >>> type(tupla2)

>>> print tupla2 (1, 'python', 64, 'blog')

También se puede acceder a los elementos de una tupla utilizando los índices como hicimos con las cadenas (el primer elemento es el índice 0). Vemos algún ejemplo:

Como las cadenas, también podemos acceder a una porción de la tupla, veamos el siguiente ejemplo:

Tipo de datos Lista Las listas en python son el caballo de batalla. Al igual que las tuplas, las listas son contenedores de elementos (pueden contener distintos tipos de datos) separados por comas y entre corchetes([ ]). Pero a diferencias de las tuplas, las listas pueden ser modificadas. Crear una lista en python es fácil, veamos el siguiente ejemplo:

Para crear una lista vacía (que muchas veces será necesario), la definimos de la siguiente manera: >>> mi_lista = [] >>> print mi_lista []

Al igual que las cadenas y las tuplas, podemos acceder a los elementos de una lista por sus índices. Veamos un ejemplo:

Tipo de datos Diccionario Un diccionario es un conjunto desordenado de pares clave-valor (cada clave contiene un valor). Los elementos de un diccionario son indexados por llaves ({}). Ejemplo:

Podemos acceder a los valores de un diccionario con sus claves:

Listas en python

Listas en Python Las listas son un tipo de colección ordenada y se asemejan mucho o son el equivalente en otros lenguajes de programación a lo que se conoce como arreglos o vectores. Esta entrada la hago con el fin de ir completando mi tutorial python (lo aclaro porque en otras entradas ya he tocado el tema listas). En python estas listas pueden contener enteros, booleanos, cadenas de texto, flotantes o inclusive listas. Los elementos de una lista van encerrados entre corchetes ([]) y separados por comas cada uno de ellos de la siguiente forma:

Ejemplo de nuestra primera lista en python: lista = [1, “dos”, False, [45, “cien”]] Como podemos ver, nuestra lista tiene los siguientes elementos: un entero (1), una cadena de texto (“dos”), un booleano (False) y otra lista con dos elementos (un entero 45 y una cadena de texto “cien”).

Como acceder a los elementos de una lista Cada elemento de una lista cuenta con un índice. Este índice comienza con el numero 0 para el elemento numero 1. En nuestra lista (lista) el índice 0 corresponde al elemento (1), la cadena de texto que contiene la palabra “dos” seria el elemento número dos de la lista pero contiene el índice 1 y así sucesivamente con los demás elementos de la lista. Ejemplo para acceder a un elemento de la lista num = lista[1]

Lo que hicimos en el anterior ejemplo fue asignarle a la variable num el elemento con índice uno de la lista (lista), en este caso (“dos”), por lo tanto la variable num va a contener la cadena de texto “dos”. Ahora, para que nos muestre el contenido de nuestra nueva variable, solo tendremos que pedirlo con un print: print num

Ahora, como hacemos para acceder a los elementos de una lista que están dentro de otra lista? Ejemplo: quiero acceder al primer elemento de la lista que esta dentro de la lista (lista): lista = [1, “dos”, False, [45, “cien”]] El elemento 4 de la lista (lista) es otra lista. Como dije anteriormente, los indices se empiezan a contar desde el 0, por lo tanto el indice del elemento 4 es el 3. Y como el elemento 4 también es una lista voy a poder acceder a sus elementos por sus indices, en este caso al indice 0 porque queremos interactuar con el primer elemento. num = lista[3][0] #Ahora num vale 45 Cambiar o modificar elementos de una lista: Lo que haremos sera cambiar el elemento 1 de la lista (lista) original por otro cualquiera.

lista = [1, “dos”, False, [45, “cien”]] #Definimos la lista lista[1] = 5 #Asociamos el numero 5 al elemento con indice 1 de la lista num = lista[1] #Le asignamos a la variable num el elemento con indice uno de la lista print num #Para ver el cambio del nuevo elemento

print lista #Para ver como quedaría la lista con el cambio

Particionar una lista Python trae cosas muy interesantes en lo que tiene que ver con el manejo de listas. Por ejemplo, si nosotros queremos ver solo una porción de la lista tendríamos que hacer lo siguiente: [inicio:fin] lista = [1, “dos”, False, [45, “cien”]] #Por ejemplo, para ver los primeros tres elementos de la lista (lista) ejemplo = lista[0:3] print ejemplo Aqui lo que hacemos es asignarle a ejemplo los primeros 3 elementos de la lista(lista), o sea, los elementos desde el indice 0 al 3, este ultimo no se incluye. Si en lugar de ejemplo = lista[0:3] hacemos ejemplo = lista[0:] Asigna desde el elemento 0 hasta el final de la lista porque no indicamos fin. Lo mismo seria si no indicamos un inicio: ejemplo = lista[:3], asignamos desde el comienzo. Si nosotros queremos ver algunos elementos, ejemplo: uno si uno no hacemos lo siguiente: [inicio:fin:salto] lista = [1, “dos”, False, [45, “cien”]] ejemplo = lista[0:3:2] #Con el 2 saltea de uno en uno print ejemplo

También podemos modificar una fracción de una lista de la siguiente manera: lista = [1, “dos”, False, [45, “cien”]] lista[0:2] = [5, "mil"] Si imprimimos la lista nos queda de la siguiente manera: 5, "mil", False, [45, "cien"] Como los dos primeros elementos de la lista (lista) son 1 y "dos", se van a modificar por los elementos que hemos indicado nosotros: 5 y "mil". También podemos trabajar con indices negativos, muy útiles a la hora de saber nuestro ultimo elemento de la lista, recorrer una lista de atrás hacia adelante, etc. Por ejemplo: nombres = ["Diego", "Carlos", "Martin", "Lorena", "Natalia"] print nombres[-1] #Nos devuelve el ultimo elemento de nuestra lista

Funciones y métodos para trabajar con listas La función len() cuenta los elementos de una lista, ejemplo: >>>estudiantes = ["Jose", "Raul", "Marcelo"] >>>len(estudiantes) 3 Añadir elementos a una lista con el método insert(indice, objeto) El método insert espera un indice y el valor a agregar, ejemplo: >>>estudiantes = ["Jose", "Raul", "Marcelo"] >>>estudiantes.insert(0, "Maria") >>>print estudiantes ["Maria", "Jose", Raul", "Marcelo"] Añadir elementos a una lista con el método append(objeto) >>>estudiantes = ["Jose", "Raul", "Marcelo"] >>>estudiantes.append("Mariela") >>>print estudiantes ["Jose", "Raul", "Marcelo", "Mariela"] Añadir varios elementos a una lista con el método extend(segmento) >>>estudiantes = ["Jose", "Raul", "Marcelo"] >>>estudiantes.extend(["Dario", "Natalia"]) >>>print estudiantes ["Jose", "Raul", "Marcelo", "Dario", "Natalia"] Buscar elementos de una lista con el método index(objeto) >>>estudiantes = ["Jose", "Raul", "Marcelo"] >>>estudiantes.index("Raul") 1 #Retorna el índice del elemento "Raul"

Eliminar un elemento de la lista con el método remove(objeto) >>>estudiantes = ["Jose", "Raul", "Marcelo"] >>>estudiantes.remove("Raul") >>>print estudiantes ["Jose", "Marcelo"]

Convertir cadenas en una lista con el método split() Con el método split() podemos convertir una cadena de caracteres en una lista delimitada por los índices que indiquemos. Si no se indica nada se utilizan los espacios: >>>"Hola mi nombre es Diego".split() ["Hola","mi","nombre","es","Diego"] >>>"1-2-3-4-5-6".split("-") ["1","2","3","4","5","6"] Buscar y saber si hay elemento duplicados con el método set() >>>estudiantes = ["Martin", "Jose", "Raul", "Jose"] >>>estudiantes_unicos = list(set(estudiantes)) >>>print estudiantes_unicos ["Raul", "Jose", "Martin"]

Veamos un ejemplo con una función: def duplicado(lista): new_list = list(set(lista)) if len(new_list) != len(lista): return True #Retorna True si hay duplicados else: return False #Retorna False si no hay duplicados Con el método pop(), podremos eliminar y mostrar el ultimo elemento de la lista, ejemplo: >>>estudiantes = ["Jose", "Raul", "Marcelo"] >>>estudiantes.pop() "Marcelo" >>>estudiantes ["Jose", "Raul"]

Saber cuantas veces se repite un elemento de una lista con el método count(objeto) >>>estudiantes = ["Jose", "Raul", "Marcelo", "Raul"] >>>estudiantes.count("Raul") 2

Invertir una lista con el método reverse() >>>estudiantes = ["Jose", "Raul", "Marcelo", "Raul"] >>>estudiantes.reverse() >>>print estudiantes ["Raul", "Marcelo", "Raul", "Jose"]

Diccionarios en Python: Propiedades, Operaciones, Metodos y mas Todos los tipos de datos que hemos visto hasta el momento en el tutorial Python desde cero (cadenas, listas, tuplas), son de tipo secuencia y podemos acceder a sus valores a través de sus índices como vimos en las entradas anteriores. Diccionarios en Python

El tipo de dato diccionario en python es compuesto. Cada clave está separada de su valor por dos puntos {:}, sus elementos separados por comas y todo va delimitado con llaves {}.

Las claves son únicas en los diccionarios, pero el valor no tiene porque. Los valores de un diccionario pueden ser de cualquier tipo, pero las claves deben ser de un tipo de datos inmutables como las cadenas, números o tuplas.

Como ejemplo crearemos un diccionario para traducir palabras del ingles al español. Para este diccionario las claves serán cadenas: >>> eng2sp = {} >>> eng2sp["one"] = "uno" >>> eng2sp["two"] = "dos" La primera línea crea crea un diccionario llamado eng2sp, las otras asignaciones crean nuevos pares clave:valor al diccionario. Podemos imprimir el valor actual del diccionario como lo hacemos habitualmente: >>> print(eng2sp) {"two": "dos", "one": "uno"} Como podemos observar, los valores del diccionario quedan separados por una coma. El orden de los elementos en el diccionario puede que no sea el esperado porque Python utiliza algoritmos complejos para determinar donde se almacenan los pares clave:valor en un diccionario. Podríamos decir que este ordenamiento es impredecible.

Acceder a los valores de un diccionario Para acceder a los elementos de un diccionario, podemos utilizar el nombre del diccionario junto con su clave para acceder al valor. Veremos un ejemplo sencillo: >>> print eng2sp["one"], eng2sp["two"] uno dos

Si intentamos acceder a un elemento del diccionario con una clave que no existepara ese diccionario nos saldrá un error como este: >>> print eng2sp["six"] Traceback (most recent call last): File "", line 1, in print eng2sp["six"] KeyError: 'six'

Hashing Podrías estar preguntándote porque utilizar diccionarios si el concepto de clave:valorpodría ser implementado utilizando una lista de tuplas:

>>> {"Manzanas": 430, "Bananas": 312, "Naranjas": 525, "Peras": 217} {'Peras': 217, 'Manzanas': 430, 'Naranjas': 525, 'Bananas': 312} >>> [('Manzanas', 430), ('Bananas', 312), ('Naranjas', 525), ('Peras', 217)] [('Manzanas', 430), ('Bananas', 312), ('Naranjas', 525), ('Peras', 217)]

La razón es porque los diccionarios son mucho más rápidos, implementan una técnica llamada Hashing, que nos permite acceder a un valor rápidamente. Por el contrario, la búsqueda en una lista de tuplas sería mas lenta. Si queremos buscar un valor asociado a una clave, tendríamos que iterar sobre cada tupla para encontrar el elemento. Y si la llave no estuviera en la lista tendríamos que llegar hasta el último elemento para averiguarlo. Otra forma de crear un diccionario es proporcionar una lista de pares clave:valorcomo en ejemplo anterior: >>> eng2sp = {"one": "uno", "two": "dos", "three": "tres"} Vuelvo a repetir, no importa con que orden escribamos los pares, los valores en un diccionario se acceden por su clave, no con índices, por lo que no deberíamos preocuparnos por el orden.

Actualizar y agregar elementos en un diccionario Podemos cambiar valores de los elementos, agregar nuevos pares clave:valor y también eliminarlos. A continuación muestro un ejemplo de todo lo dicho anteriormente, se crea un diccionario con varias frutas y el stock correspondiente: >>> inventario = {"manzanas": 430, "bananas": 312, "naranjas": 525, "peras": 217} >>> print(inventario) {'peras': 217, 'manzanas': 430, 'naranjas': 525, 'bananas': 312}

Si alguien compra todas las peras podríamos quitar la entrada del diccionario: >>> del inventario["peras"] >>> print(inventario) {'manzanas': 430, 'naranjas': 525, 'bananas': 312} O si esperamos que vengan más peras, cambiamos el valor de las peras para no eliminarlo: >>> inventario["peras"] = 0 >>> print(inventario) {'peras': 0, 'manzanas': 430, 'naranjas': 525, 'bananas': 312}

Para un nuevo envío de Bananas podríamos hacer lo siguiente: >>> inventario["bananas"] += 200 >>> print(inventario) {'peras': 0, 'manzanas': 430, 'naranjas': 525, 'bananas': 512} La función len también nos será útil para trabajar con los diccionarios. Devuelve en número de pares clave: valor >>> len(inventario) 4

Métodos que podemos utilizar con los diccionarios en Python Los diccionarios tienen una serie de métodos integrados que nos serán de mucha utilidad El método key nos devuelve una lista de todos los claves del diccionario: >>> inventario = {"manzanas": 430, "bananas": 312, "naranjas": 525, "peras": 217} >>> inventario.keys() ['naranjas', 'peras', 'bananas', 'manzanas'] El método values nos devuelve una lista de todos los valores del diccionario: >>> inventario.values() [525, 125, 217, 312, 430] El método clear elimina todos los elementos de un diccionario: >>> print inventario {'naranjas': 525, 'duraznos': 125, 'peras': 217, 'bananas': 312, 'manzanas': 430} >>> inventario.clear() >>> print inventario {} El método items nos devuelve una lista de tuplas y cada tupla contiene pares clave: valor inventario.items() [('naranjas', 525), ('peras', 217), ('bananas', 312), ('manzanas', 430)] Las tuplas a menudo son útiles para obtener tanto la clave como el valor al mismo tiempo mientras utilizamos un bucle: >>> for (k,v) in inventario.items(): print("Hay",v,k, " en stock") ('Hay', 525, 'naranjas', ' en stock') ('Hay', 217, 'peras', ' en stock') ('Hay', 312, 'bananas', ' en stock') ('Hay', 430, 'manzanas', ' en stock')

El operador in y not in puede comprobar si una clave está en un diccionario: >>> "naranjas" in inventario True >>> "duraznos" in inventario False Este método es de mucha utilidad ya que buscar una clave que no existe en un diccionario provocará un error en tiempo de ejecución.

Otra opción sería utilizar el método has_key(key) que nos devuelve True si la clave existe, de lo contrario devuelve False: >>> inventario.has_key("bananas") True >>> inventario.has_key("adf") False

Otro método muy útil es update, que nos permite agregar los elementos pares clave:valor de un diccionario dentro de otro: >>> print inventario {'naranjas': 525, 'peras': 217, 'bananas': 312, 'manzanas': 430} >>> otroInventario = {"duraznos": 125} >>> inventario.update(otroInventario) >>> print inventario {'naranjas': 525, 'duraznos': 125, 'peras': 217, 'bananas': 312, 'manzanas': 430}

Funciones para utilizar con diccionarios en Python Hay algunas otras que pueden ser de mucha ayuda: Función cmp(dicc1, dicc2) compara los elementos de ambos diccionarios Función str(dicc) produce una representación de cadenas

Operadores basicos en Python

Los operadores son símbolos especiales en python que llevan a cabo operaciones aritméticas y de cálculo lógico. Tipos de operadores en python - Operadores aritméticos - Operadores de comparación - Operadores lógicos - Operadores de asignación - Operadores especiales

Operadores Aritméticos Los operadores aritméticos se utilizan para realizar operaciones matemáticas como: Sumar, Restar, Dividir, Multiplicar, etc...

La siguiente tabla muestra todos los operadores aritméticos soportados por Python. Supongamos que tenemos una variable a = 10 y otra b = 20, entonces: Operador Descripción

Ejemplo

+

Suma

a + b = 30

-

Resta

a – b = -10

*

Multiplicación

a * b = 200

/

División

b/a=2

%

Módulo – Devuelve el resto de la división

b%a=0

**

Exponente – Realiza exponencial

a ** b = 10 a la 20

//

División baja - Devuelve el entero de la

9 // 2 = 4 y 9,0 // 2,0 = 4,0

división

Ahora veamos algunos ejemplos en el shell interactivo:

¿Qué fue lo que hicimos? Primero declaramos 3 variables (a = 21, b = 10 y c = 0) Luego hicimos algunas operaciones matemáticas ya declaradas en la tabla de arriba. Con la instrucción: (print "El valor de c es:", c), lo que hacemos es mostrar en pantalla la cadena "El valor de c es:" y fuera de las comillas y después de la coma, agregamos la variable c que devolverá el valor que tiene en el momento que es llamada. Algo importante es que la variable c va cambiando de valor según se la valla modificando.

Operadores de comparación Los operadores de comparación, también llamados comparadores relacionales, se utilizan para comparar los valores. Se devuelve True o False según la condición. Supongamos que la variable a = 10 y la variable b = 20:

Operador ==

!=

Descripción Si los valores de los 2 operadores son iguales la condición es True Si los valores de los 2 operadores no son iguales la condición es True

Ejemplo (a == b) no es True

(a != b) es True

Si el valor del operador de la izquierda >

es mayor que el operador de la derecha

(a > b) no es True

la condición es True Si el valor del operador de la izquierda
=

es mayor o igual que el valor del operador de la derecha la condición es

(a >= b) no es True

True Si el valor del operador de la a or b = True (Porque es verdadero si uno de los dos es verdadero) --> not a = False (Porque la negacion de (a = True) es False) --> not b = True (Porque la negación de (b = False) es True)

Operadores Especiales Existen otros operadores en el lenguaje python: Ejemplos de ellos: --> is - Es True si los operadores son idénticos --> is not - Es True si los operadores no son idénticos --> in - Es True si el valor o variable se encuentra en la secuencia --> not in - Es True si el valor o variable no se encuentra en la secuencia

Ejemplo en el shell de Python:

¿Qué fue lo que hicimos? Primero declaramos 2 variables (a = 10 y b = 10). -->> a is b - Es True porque son iguales -->> a is not b - Es False porque son iguales Luego cambiamos el valor de las variables (a = 1, b = 6 y c = [1,2,3,4,5]) --> a in c - Es True porque a se encuentra en c --> b in c - Es False porque b no se encuentra en c

Ejercicios: Tutorial Python desde cero (Parte 1)

Los ejercicios serán bien sencillos (declarar variables, imprimir en pantalla, etc) Puedes hacer los ejercicios en el shell de python o en el editor que prefieras. Ejercicio 1 Declarar 5 variables (nombre, apellido, edad, altura, peso) con tus datos personales (o los que tu quieras). Luego, con la función print devuelve todos los datos por pantalla con el siguiente formato: >>> print "Texto: ", variable Donde "Texto: " cambiará por el valor que queremos mostrar (en caso de que sea nombre sería "Nombre: ") y la variable será la que corresponda.

Ejercicio 2 Declarar 4 variables (a = 2, b = 3, c = 5 y resultado = 0). Las variables serán declaradas solo una ves. Se piden hacer varias operaciones (yo haré la primera de ejemplo) Asignar a la variable resultado las siguientes operaciones e imprimirlas en pantalla: --> a + b --> c * a --> (b + c) - a --> c / a --> c // b --> a ** b --> (a + b + c) * 2 --> c % b Ejemplo:

Ejercicio 3 Algo que no debemos de olvidar cuando estamos haciendo un programa son los comentarios. Los comentarios son textos informativos que ayudan a entender el código (ya sea para nosotros u otros programadores que vean nuestro código). Los comentarios comienzan con el símbolo # y todo lo que sea agregado después del símbolo no será interpretado como código en nuestro programa. >>> #Esto es un comentario >>> a + b #Esto es una suma Para escribir más de una linea de comentario se utilizan las comillas triples """ >>> """ Esto >>> tambien >>> es >>> un comentario """ Ahora vamos al ejercicio. 1 - Declarar 3 listas con 5 elementos cada una inventados por ustedes (nombres, edades, frutas). 2 - Antes de cada declaración agregar un comentario Ej: #Lista de Animales 3 - Imprimir en pantalla el primer elemento de cada lista 4 - Imprimir en pantalla el último elemento de cada lista 5 - Imprimir en pantalla una por una las 3 listas

Ejercicio 4 Declarar las siguientes listas: par = [2, 4, 6, 8] impar = [1, 3, 5, 7] resultado = 0 En los próximos ejercicios debemos saber como acceder a las listas (recordar que los índices comienzan en 0). Las operaciones deben asignarse a la variable resultado para luego imprimirla en pantalla. Dejo el ejemplo del primer ejercicio para que quede claro. 1 - SUMAR (+) El primer elemento de la lista par + el último elemento de la lista impar 2 - RESTAR (-) El segundo elemento de la lista par - el segundo elemento de la lista impar 3 - MULTIPLICAR (*) El último elemento de la lista par * el tercer elemento de la lista impar 4 - DIVIDIR (/) El último elemento de la lista par / el primer elemento de la lista par 5 - SUMAR (+) El segundo elemento de la lista impar + el tercer elemento de la lista par + el último elemento de la lista impar Ejemplo del primer ejercicio:

Simple entrada y salida de datos en python (input/Output)

Entrada/Salida de datos Esta entrada pretende abarcar las funciones básicas de Entrada y Salida de datos en python. Cuando hablamos de entrada nos referimos en general a los datos ingresados por el usuario final del programa. La salida es lo que devuelve el programa.

Salida en pantalla La forma más sencilla de producir una salida en python es utilizar la sentencia print donde se puede pasar 0, una o más expresiones separadas por coma y ver el resultado en pantalla de la siguiente manera:

Lectura de entrada con teclado Python proporciona dos funciones integradas para leer una entrada estándar de teclado, estas són: 

raw_input



input

La función raw_input La función raw_input([prompt]) lee una línea de entrada y la devuelve como cadena: En este ejemplo verás la creación de un archivo.py (Extensión de Python) y su ejecución, para eso lo primero que debemos hacer será abrir Genay (IDE que utilizaré para los ejemplos del curso) y agregamos lo siguiente:

El archivo lo guardas con el nombre raw_input.py (al agregar la extensión .py se guardará como un archivo Python) y lo ejecutas con F5 o con

Si todo salió bien la salida en pantalla debería ser la siguiente:

La función input La función input([prompt]) es igual a la función raw_input excepto que input asume la entrada como una expresión python válida y nos devuelve el resultado en pantalla. Para este ejemplo hacemos lo mismo que en el ejemplo anterior (solo cambiamos el nombre por input.py):

Ejecutamos y si todo salió bien deberíamos ver lo siguiente:

Funciones en Python

Las funciones en Python se utilizan para ejecutar un bloque de código en más de un lugar en un programa, también pueden ser conocidas como métodos o procedimientos. El lenguaje de programación Python ya viene con muchas funciones incorporadas, un ejemplo de ello es la función print() pero también nos da la posibilidad de crear funciones. Como definir y llamar a una función en Python Las funciones se definen con la declaración "def", seguido del nombre de la función y los paréntesis (). Ejemplo: Vamos a definir una función mediante el comando "def saludo()" y la salida de la función será "Estamos aprendiendo funciones en Python". Luego llamaremos la función para que se ejecute. 1

def saludo():

2

print "Estamos aprendiendo funciones en Python"

3 4

saludo()

Donde: 

def saludo(): - es como se define la función



print "Estamos aprendiendo funciones en Python" - es el contenido



saludo() - es como se llama a la función



Estamos aprendiendo funciones en Python - será la salida en pantalla

Hay un conjunto de reglas en Python para definir una función: 

Todos los argumentos o parámetros de entrada deben definirse dentro de los paréntesis de la función.



La primera sentencia de una función puede ser una cadena de documentación (opcional). Esta sirve de ayuda para entender el comportamiento de la función.



El código dentro de una función se inicia luego de los : (dos puntos) y debe tener una sangría de espacio.

La importancia de la sangría (espacio) en Python Es necesario entender la regla de la sangría para declarar una función y estas reglas también son aplicables a otros elementos de Python (condicionales, bucles, etc). Python sigue un estilo particular de sangría para definir el código, ya que las funciones en python no tienen llaves para indicar el inicio y fin de una función. Veremos un ejemplo donde utilizaremos la función "print" sin sangría para ver como nos devuelve un mensaje de error.

Si agregamos la sangría antes de la función "print" la salida debe ser la esperada:

Tip: Por lo menos un salto de línea es necesario para llamar a la función (saludo()), pero una buena práctica es utilizar 3 o 4 saltos de línea. Si bien declaramos la sangría, es necesario mantener esa sangría para el resto del código. Por ejemplo, en la siguiente captura de pantalla, cuando llamamos a otra declaración "todavía estoy en la función saludo()" y no le asignemos la sangría, nos mostrará un mensaje de error.

Ahora, cuando colocamos la sangría de la segunda sentencia en el mismo nivel que la primera, el resultado es el esperado:

Como funciona el valor de retorno El comando de retorno en Python especifica que valor se devolverá cuando se llama una función. Veamos un ejemplo: Paso 1: Aquí veremos cuando la función no tiene retorno. Por ejemplo, queremos hacer el cuadrado de 4 y que nos devuelva 16 cuando se ejecute la función. Esto lo logramos haciendo "print x * x", pero cuando se llama a la función "print cuadrado" la salida será "None". Esto se debe a que cuando se llama a la función, la recursividad no sucede y se cae al final de la función.

Paso 2: Para ver esto más claro, reemplazaremos el comando de impresión con una asignación y veremos la salida:

Cuando se ejecuta "print cuadrado(4)" lo que hace es devolver el valor del objeto y como no tiene ninguna función específica devuelve "None"

Paso 3: Ahora vamos a ver como recuperar la salida con el comando "return". Cuando se utiliza la función "return" y ejecutamos el código, obtendremos el valor 16.

Paso 4: Las funciones en python son en si un objeto, y un objeto tiene un cierto valor. Ahora vamos a ver como trata un objeto Python. Cuando se ejecuta "print cuadrado", el comando devuelve el valor del objeto. Puesto que no hemos pasado ningún argumento, no tenemos ninguna función específica así que devuelve un valor predeterminado (0x7f2a22fcc578) que es la ubicación del objeto. En la práctica de Python, es probable que nunca tengas que hacer esto.

Argumentos en funciones El argumento es un valor que se pasa a la función cuando se llama. En otras palabras, cuando se llama a la función es un argumento y cuando se declara la función es un parámetro. Veamos como funciona un argumento en Python Paso 1 - Los argumentos se declaran cuando se crea la función.

Paso 2 - Para declarar un valor predeterminado en el argumento, lo hacemos asignándolo cuando definimos la función: Ejemplo: x no tiene ningún valor predeterminado y el valor por defecto de y = 0. Cuando suministramos solo un argumento y llamamos a la función "multiplicar", Python asigna el valor suministrado para x y mantiene el valor de y = 0. Por lo tanto la multiplicación de x * y será 0.

Paso 3 - Esta vez vamos a cambiar el valor de y = 2 en lugar de 0, y esto nos dará la salida (4x2)=8.

Paso 4 - También podemos cambiar el orden de como se van a pasar los argumentos en Python. Acá invertimos el orden del valor de x e y para x = 4 e y = 2.

Paso 5 - Múltiples argumentos también se pueden pasar como una matriz. En este ejemplo llamamos múltiples argumentos (1,2,3,4,5) con la función (*args).

Tips: 

Hay una gran confusión en Python sobre los métodos y las funciones. Los métodos en python están asociados a instancias de objetos mientras que las funciones no. Cuando Python llama un método, se une el primer parámetro de la llamada a la referencia del objeto apropiado. En términos simples, una función independiente en Python es una "función", en tanto una función que es un atributo de una clase o una instancia es un "método".

Conclusión: Una función en Python es una pieza de código que puede realizar una o varias tareas y que puede ser re utilizada en cualquier parte del código.

Condicional if, elif, else en python

En programación, como ocurre también en la vida real (Foto), debemos elegir diferentes caminos si ciertas condiciones se cumplen o no. La estructura sería la siguiente: el condicional if hace que se ejecute una parte de nuestro código si el valor es True (verdadero), de lo contrario nuestro programa seguirá otro camino. A menudo, asociado con el condicional if encontramos los condicionales elif y else. Veamos un ejemplo en diagrama:

Veamos un ejemplo en código, pueden probar en consola o crear un nuevo archivo en Geany como ya hemos visto: #!/usr/bin/python # -*- coding: utf-8 -*ana = 18 if ana >= 18: print "Ana es mayor de edad" else: print "Ana es menor de edad" En el ejemplo anterior creamos una variable ana que es igual a 18. Luego utilizamos una condición if vara evaluar si ana es mayor o igual a 18, si esto se cumple se ejecuta el código del if, si no, se ejecuta el código del else. Pueden cambiar el valor de la variable a 15 para ver como se comporta el programa. En este tema de los condicionales aparecen dos nuevo conceptos: los bloques y la identación (sangrado, sangría, etc). ¿Como funcionan?: Todas las declaraciones de código con la misma distancia a la derecha pertenecen al mismo bloque de código (el bloque termina en una línea con menos sangría o al final del código). Los bloques se pueden anidar agregando más sangrías a la derecha. La identación se utiliza para que los códigos sean más legibles, comprensibles para los programadores. Como se puede ver, el código que sigue al condicional if y else comienza con una identación de 4 espacios (un tabulador).

Bloques e identación en python

Veamos otro ejemplo utilizando el condicional elif: #!/usr/bin/python # -*- coding: utf-8 -*a = 25 if a < 22: print "if" elif a == 25: print "elif" else: print "else" Como en el ejemplo anterior, declaramos una variable a con valor 25. Luego utilizamos un condicional if para ver si a es menor a 22, si se cumple imprime "if", luego un condicional elif para ver si a es igual a 25, si se cumple se imprime "elif", luego si ninguna de las dos se cumple se imprime "else". Pueden cambiar el valor de la variable a para jugar y ver como se comporta el programa.