In [4]:
print 1
print "hola"
print [1, 2, 4]
nombre = "Santiago"
print nombre
print "mi nombre es %s" %(nombre)
In [5]:
print 1 + 2
print 1 - 10
print 10 * 100
print 10 / 5
print 10 / 3
print 10 ** 2
La división por 0 arroja una excepción
In [6]:
7 / 0
Tomar la raíz cuadrada de un número negativo también arroja una excepción
In [7]:
(-1) ** 0.5
In [8]:
print 10.0 / 3
print 0.54 ** 2
print 9.0 ** 0.5
In [9]:
print 1 + 2j
print (1+2j) + (2+3j)
print 1j ** 2
In [10]:
print type(1)
print type(1000000000000000000000000)
print type(2.0)
print type(5+1j)
In [11]:
print float(1)
print complex(1.0)
In [12]:
int(1.5)
Out[12]:
Convertir a un tipo de menos información puede fallar
In [13]:
float(1+1j)
Para hallar el valor absoluto podemos usar la funcion abs()
In [14]:
print abs(-1)
print abs(-2.0)
print abs(1+1j)
Podemos buscar minimos y máximos
In [15]:
min(1, 2, 3)
Out[15]:
In [16]:
min(1+1j, 2+3j)
Para ver mas funciones básicas (built_in functions): https://docs.python.org/2/library/functions.html
In [17]:
1 < 5
Out[17]:
In [18]:
1 < 2 < 3 <= 5
Out[18]:
In [19]:
1 > 2
Out[19]:
In [20]:
type(1 < 2)
Out[20]:
Los nombres de las variables en Python pueden contener los caracteres a-z
, A-Z
, 0-9
y algunos caracteres especiales como _
. Los nombres de variables normales deben comenzar con una letra.
Por convención, los nombres de las variables comienzan con letra minúscula, mientras que los nombres de las clases comienzan con una letra mayúscula.
Además, existen algunos palabras claves Python que no pueden ser usados como nombres de variables. Éstas son:
and, as, assert, break, class, continue, def, del, elif, else, except,
exec, finally, for, from, global, if, import, in, is, lambda, not, or,
pass, print, raise, return, try, while, with, yield
El operador para asignar valores en Python es =
. Python es un lenguage de escritura dinámica, de modo que no necesitamos especificar el tipo de una variable cuando creamos una.
Al asignar un valor a una variable nueva se crea esa variable:
In [21]:
x = 1.0
mi_variable = 128
var1, var2 = 5 , 4
print var1
print var2
In [22]:
var1 == var2
Out[22]:
In [23]:
una_tupla = (1, 20.0, "String", (1+1j))
una_lista = [1, 20.0, "String", (1+1j)]
print una_tupla
print una_lista
print una_tupla == una_lista
Podemos obviar los paréntesis cuando definimos una tupla
In [24]:
1 , 15.4 , "Hola"
Out[24]:
Tienes operaciones en común
In [25]:
print len(una_tupla), len(una_lista)
In [26]:
1 in una_tupla
Out[26]:
In [27]:
1 in una_lista
Out[27]:
[<inicio>:<final>:<salto>]
:
In [28]:
print una_lista[0] # Primer elemento, 1
print una_tupla[1] # Segundo elemento, 2
print una_lista[0:2] # Desde el primero hasta el tercero, excluyendo este: 1, 2
print una_tupla[:3] # Desde el primero hasta el cuarto, excluyendo este: 1, 2, 3.0
print una_lista[-1] # El último: 4 + 0j
print una_tupla[:] # Desde el primero hasta el último
print una_lista[::2] # Desde el primero hasta el último, saltando 2: 1, 3.0
Podemos cambiar el valor de una elemento de una lista
In [29]:
una_lista[0] = 2
print una_lista
Pero, no podemos cambiar el valor de un elemento de una tupla
In [30]:
una_tupla[0] = 2
In [31]:
edad = 20
if edad < 18:
print "menor de edad"
else:
print "mayor de edad"
Si queremos añadir condiciones adicionales, podemos usar la sentencia elif
(abreviatura de else if). Para la parte final, que debe ejecutarse si ninguna de las condiciones anteriores se ha cumplido, usamos la sentencia else
In [32]:
if edad == 0:
print "recien nacido"
elif 0 < edad < 18:
print "menor de edad"
elif edad > 18:
print "mayor de edad"
else:
print "No nacido"
Hay dos tipos de bucles en Python: while
y for
.
Como en el caso de los condicionales, el cuerpo del ciclo se determinan con el sangrado
In [33]:
ii = 0
while ii < 5:
print(ii)
ii += 1
Podemos interrumpir el ciclo con la sentencia break
In [34]:
ii = 0
while ii < 5:
print(ii)
ii += 1
if ii == 3:
break
Podemos determinar si el ciclo terminó, de la siguiente forma
In [35]:
ii = 0
while ii < 5:
print(ii)
ii += 1
else:
print "El ciclo terminó"
Las sentencia for se utiliza para recorrer una secuencia de elementos
In [36]:
for ii in 1, 2, 4:
print(ii)
In [37]:
for nombre in "Juan", "Luis", "Carlos":
print(nombre)
In [38]:
for ii in range(1250):
print(ii)
In [39]:
for jj in range(2, 5):
print(jj)
In [40]:
for jj in xrange(2, 5):
print(jj)
In [41]:
%%timeit
a = 1
for jj in range(2, 5):
a = a + jj
In [42]:
%%timeit
a = 1
for jj in xrange(2, 5):
a = a + jj
Para definir nuestra propia función utilizamos la sentencia def
seguida del nombre de la misma y entre paréntesis los argumentos de entrada.
La primera línea de la función puede ser una cadena de documentación.
Los valores de retorno de la función se especifican con la sentencia return.
In [43]:
def funcion(x, y):
"""Función de prueba."""
return x + y
In [44]:
type(funcion)
Out[44]:
In [45]:
funcion?
In [46]:
funcion??
Para invocar una función, le paso los parámetros entre paréntesis
In [47]:
funcion(1, 5)
Out[47]:
In [48]:
def multiplica(x, y=2.0):
"""Multiplica dos números, por defecto el primero por 2."""
return x * y
multiplica(4, 3)
Out[48]:
In [49]:
multiplica(4)
Out[49]:
In [50]:
def eleva(x=1, p=2, debug=False):
"""Eleva un número x a la potencia p"""
if debug:
# Esto es un comentario
print("elevando el numero x = " + str(x) + " usando el exponente p = " + str(p))
return x**p
eleva(3, 5, True)
Out[50]:
In [51]:
eleva(debug=True, p=3, x=2)
Out[51]:
In [52]:
eleva()
Out[52]:
Uno de los conceptos más importantes en programación es el de reusar código para evitar repeticiones.
La idea es escribir funciones y clases con un proposito y extensión bien definidos, y reusarlas en lugar de repetir código similar en diferentes partes del programa (programación modular). Usualmente el resultado es que se mejora ostensiblemente la facilidad de lectura y de mantención de un programa. En la práctica, esto significa que nuestro programa tendrá menos errores, y serán más fáciles de extender y corregir.
Python permite programación modular en diferentes niveles. Las funciones y las clases son ejemplos de herramientas para programación modular de bajo nivel. Los módulos Python son construcciones de programación modular de más alto nivel, donde podemos colectar variables relacionadas, funciones y clases. Un módulo Python es definido en un archivo Python (con extensión .py
), y puede ser accequible a otros módulos Python y a programas usando el comendo import
.
Considere el siguiente ejemplo: el archivo mimodulo.py
contiene una implementación simple de una variable, una función y una clase:
In [68]:
%more mimodulo.py
Para poder utilizar lo que definimos en nuestro módulo tenemos que importarlo
In [54]:
import mimodulo
In [55]:
mimodulo.mi_function()
Out[55]:
In [56]:
help(mimodulo)
In [57]:
import math
In [58]:
help(math)
In [59]:
math?
In [60]:
math.e
Out[60]:
In [61]:
math.cos(math.pi)
Out[61]:
In [62]:
math.factorial(25)
Out[62]:
In [63]:
math.log(10)
Out[63]:
In [64]:
math.sqrt(9)
Out[64]:
In [65]:
math.sqrt(-1)