Python
Python
Índice
1. Introducción 1
1.1. ¿Qué es Python? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
2. Elementos Básicos 2
2.1. Objetos, Expresiones, Tipos Numéricos y Variables . . . . . . . . . . . . . . . . . . . . 2
6. Funciones 7
1. Introducción
Bienvenidos a la guı́a rápida de introducción a Python que servirá para ayudarnos a introducir o
recordar los aspectos principales del lenguaje de programación Python de manera que facilite el módulo
correspondiente del curso.
En pocas lı́neas, aprenderemos los tipos y estructuras de control disponibles en Python y – ya de paso
– casi en cualquier lenguaje de programación.
1
El objetivo de esta guı́a es tener una referencia rápida en caso de duda a la hora de preparar nuestros
propios scripts, y que sirva como una primera referencia. Ası́ mismo, pretendemos que sirva como tram-
polı́n a otras referencias contrastadas en las que podáis consultar aspectos especı́ficos del lenguaje y de
las funciones disponibles en el mismo.
¡Comenzamos!
Lenguaje de propósito general: no está orientado a ningún tipo de desarrollo en particular, y por
tanto, es aplicable a cualquier tipo de programa o aplicación que se nos ocurra.
Lenguaje de alto nivel: es consecuencia de lo anterior. En un lenguaje de alto nivel los algoritmos
se expresan en el nivel de la capacidad cognitiva humana, en contraposición a los lenguajes de bajo
nivel, donde se expresan en lenguaje máquina.
Libre y gratuito: es decir, que es distribuido sin coste alguno para el usuario final, que puede
modificar las fuentes como quiera.
Una vez que sabemos las caracterı́sticas principales del lenguaje que vamos a utilizar, pasemos a ver
cómo hacerlo.
2. Elementos Básicos
Un programa de Python, también llamado un script es una secuencia de definiciones que se evalúan
y comandos que se ejecutan por un intérprete de Python. Existen varias opciones para elegir como Id-
le (por defecto al instalar Python), Canopy, PyCharm o Spyder. Rhinoceros tiene su propio intérprete,
implementado además en IronPython. La implentación limita el número de funciones y paquetes dispo-
nibles en función de si están desarrolladas o no para esa implementación en particular. Puedes buscar
más información sobre IronPython en http://ironpython.net/
Un ejemplo de comando es print. Por ejemplo:
print le ordena al intérprete que imprima el texto Hola Mundo a través de la ventana asociada con el
intérprete.
2
2. float: se usa para representar números reales, como por ejemplo 3,6 o −1,4 Este tipo de objeto
siempre incluye un punto decimal, es decir, que 1,0 o −3,0 también pertenecen a este grupo de
objetos.
3. bool: se usa para representar valores booleanos, es decir, True o False. Aparecen sobre todo al
evaluar igualdades.
4. None: es un objeto con un valor único. Este valor aparece cuando el objeto no pertenece a ninguno
de los tipos. Normalmente indica un error en nuestro código.
Estos tipos pueden ser combinados con operadores para formar expresiones. Ası́, por ejemplo 3 + 2
se combinan para formar el objeto 5 de tipo int, mientras que 3,0 + 2,0 forman el objeto de valor 5,0 y
tipo float. Estas diferencias sutiles son muy importantes a la hora de programar nuestras aplicaciones.
Para saber el tipo de un objeto, podemos usar la función propia de Python type. Ası́, por ejemplo,
type(3) devolverá < type0 int0 >.
Otro tipo de objeto de gran utilidad es el tipo string, que se usa para representar caracteres. La
sintaxis para escribir un objeto de tipo str es con comillas, simples o dobles. ’abc’ y .abc” son dos formas
de representar la misma secuencia de caracteres. Los objetos de tipo string también pueden combinarse
con operadores, aunque lógicamente con distinto significado que en el caso de los tipos numéricos. Ası́,
’abc’ + ’def’ da como resultado ’abcdef’.
Separamos los objetos de tipo string de los anteriores ya que además de con operadores, este tipo de
objetos soportan otro tipo de operaciones como el indexado o el slicing, que comentaremos más adelante,
ya que son propios de los tipos estructurados.
Una variable es simplemente una forma de asociar un nombre a un objeto. Por ejemplo:
pi = 3.14
r = 5
area = pi * (r**2)
print(area)
r = 1
area = pi * (r**2)
print(area)
3.1. Condicionales
Dentro de las estructuras de control, el ejemplo más sencillo es el del condicional. Un condicional
tiene tres partes:
3
un bloque de código que se ejecuta si la evaluación resulta Verdadera y
un bloque de código opcional que se ejecuta si la evaluación es Falsa.
En Python, un condicional se traduce como:
if x%2 == 0: # Test
print(’Numero Par’) # Bloque ejecutado si se cumple el test
else:
print(’Impar’) # Bloque optional si no se cumple
print(’Hecho!’)
El ejemplo de código anterior da las claves básicas de cómo introducir un condicional en Python.
Vemos una serie de particularidades en la sintaxis del código. Una de ellas es que los test acaban allı́
donde se colocan los dos puntos (:). La otra es que los bloques de código que se ejecutan dentro del
condicional van indentados. Esta es la mayor particularidad de Python respecto a otros lenguajes de
programación, donde la indentación es recomendable en aras de la limpieza y la facilidad de lectura del
código, pero no es obligatoria, como en el caso de Python.
Los condicionales se pueden concatenar, si un condicional está dentro de otro. Por ejemplo:
if x%2 == 0:
if x%3 == 0:
print(’Divisible por 2 y 3’):
else:
print(’Divisible por 2 pero no por 3’)
elif x%3 == 0:
print(’Divisible por 3 pero no por 2’)
que también nos sirve para introducir un tercer test, elif (que corresponde a else if ), y que se utliza
cuando se quiere introducir una segunda evaluación, diferente a la primera, que se ejecuta después de
evaluar el primer if.
4
3.2.2. Bucles for
Los bucles while son una estructura altamente estilosa, pero sólo opera sobre secuencias de números
enteros. Para poder generalizar los bucles sobre todos los tipos de variables, Python dispone de los bucles
for, cuya estructura en general es de la siguiente forma:
La variable que sigue al statement for está ligada al primer valor de la secuencia. A medida que
ejecutamos el bloque de código del bucle, esta variable va evolucionando a lo largo de los valores de
dicha secuencia. El proceso continúa hasta que acabe o hasta que se fuerce mediante el comando break.
Para producir la secuencia, lo más común es usar una función propia de Python conocida como
range, que devuelve una secuencia de valores en progresión aritmética. Veremos la estructura de la
función range más adelante. Veamos un ejemplo:
x = 4
for i in range(0,4)
print i
4.1. Tuplas
Las tuplas son secuencias ordenadas de elementos, Al igual que los strings. La diferencia radica en
que las tuplas no tienen por qué estar compuestas de caracteres, es decir, son una generalización de los
strings.
Los elementos de una tupla se escriben como una lista separada por comas, y englobada dentro de
paréntesis. Por ejemplo,
t1 = ()
t2 = (1, ’dos’, 3.0)
Las tuplas pueden ser concatenadas, indexadas y deslizadas, ası́, redefiniendo la primera tupla del
ejemplo anterior:
t1 = (t2, ’123’)
print t1
print (t1 + t2)
print(t1[0])
print(t2[1:3])
Nos devolverá:
5
Si sabemos la longitud de una tupla, puede ser conveniente asignar múltiples variables a cada uno de
los elementos:
x,y = (3,4)
De esta forma, tendremos localizados cada uno de los elementos de la secuencia y nos ahorraremos
el indexado.
4.2. Listas
Al igual que las tuplas, las listas son secuencias ordenadas de elementos. Sin embargo, y como
elemento diferenciador, se escriben entre corchetes:
L1 = []
L2 = [1, ’dos’, 3.0]
Esta forma de escribir las listas entre corchetes (al igual que el indexado y el deslizamiento que
veremos a continuación) puede llevar a expresiones confusas en algunos casos, como: [1, 2, 3, 4][1 :
3][1], por lo que hay que tener cuidado.
La principal diferencia entre una lista y una tupla es que las listas son mutables, mientras que las
tuplas (y los strings) son inmutables. Los elementos inmutables no pueden ser modificados una vez han
sido creados , mientras que los elementos mutables si que conservan la capacidad de ser modificados.
La diferencia puede parecer sutil, pero tiene una gran importancia, especialmente a la hora de asignar
variables a estas listas.
El efecto de la mutabilidad podemos apreciarlo con el método append. Este método añade un nuevo
elemento a una lista, pero en lugar de crear una nueva lista que incluya este valor, muta la lista existente,
a la que incluye este nuevo elemento.
De esta forma, si creamos dos listas, las concatenamos, asignándo una nueva variable a esta última,
y luego modificamos una de las listas creadas previamente, ocurre que la lista concatenada, también ha
sido modificada!
4.3. Diccionarios
Los objetos de tipo diccionario, o dict, son como las listas, solo que los ı́ndices que se necesitan no
tienen por qué ser números enteros, si no que pueden ser cualquier cosa, y que llamaremos llaves.
De esta forma, no hay un orden, y un diccionario se convierte en un conjunto de elementos (o valores),
cada uno de ellos asociados a una llave.
Los diccionarios se escriben entre llaves, y cada elemento se escribe como una llave seguida de dos
puntos y del valor asignado. Para que quede más claro:
El método keys devuelve una lista con todas las llaves del diccionario, sin un orden preestablecido.
6
seq1 + seq2: devuelve la concatenación de dos secuencias.
range: se escribe range([start],[stop],[step]) y es una función muy útil para establecer una lista
de números en progresión aritmética. Se utiliza normalmente combinado con los bucles for.
frange: tiene la misma estructura y función que range, con la diferencia de que esta función nos
permite realizar progresiones aritméticas con saltos menores a la unidad.
formato: en algunas ocasiones, puede resultarnos útil devolver el valor de una variable con un
formato determinado (uno o varios decimales, sin decimales, etc.). La estructura para realizarlo es
la siguiente:
En este caso, %f corresponde a dar el valor de resultado como un float. Para dar un string se usa %s
y para dar un integer, %d.
6. Funciones
La última estructura básica que nos queda por introducir son las funciones. Una función es un bloque
de código organizado y reutilizable que cumple una determinada tarea. Las funciones son muy útiles
para no repetir código y que de esta forma sea más compacto, modular y eficiente.
La estructura de una función comienza definiendo la palabra clave def seguido del nombre de la
función y las variables de entrada entre paréntesis. Tras los clásicos dos puntos (:), indentamos el código
para introducir el bloque dentro de la función. Una función necesita, al igual que unas variables de
entrada, unas variables de retorno al código, que se especificarán tras introducir la palabra clave return.
Para verlo de forma más gráfica:
def mi_funcion(input1,input2,...):
bloque de codigo
...
return output1,output2,output3,...
Referencias
[1] Guttag, John V. Introduction to Computation and Programming Using Python 2013.