USM Numérica

Introducción a Python

Objetivos

  1. Conocer y diferencias python y ipython.
  2. Conocer y utilizar los diferentes tipos de datos en Python junto con sus operatorias.

0.1 Instrucciones

Instrucciones de instalación y utilización de un ipython notebook.

Recuerden:

  • Desarrollar los problemas de manera secuencial.
  • Guardar constantemente con Ctr-S para evitar sorpresas.
  • Reemplazar en las celdas de código donde diga FIX_ME por el código correspondiente.
  • Ejecutar cada celda de código utilizando Ctr-Enter

0.2 Licenciamiento y Configuración

Ejecutar la siguiente celda mediante Ctr-Enter.


In [ ]:
"""
IPython Notebook v4.0 para python 3.0
Librerías adicionales: 
Contenido bajo licencia CC-BY 4.0. Código bajo licencia MIT. 
(c) Sebastian Flores, Christopher Cooper, Alberto Rubio, Pablo Bunout.
"""
# Configuración para recargar módulos y librerías dinámicamente
%reload_ext autoreload
%autoreload 2

# Configuración para graficos en línea
%matplotlib inline

# Configuración de estilo
from IPython.core.display import HTML
HTML(open("./style/style.css", "r").read())

1. ¿Qué es python y ipython?

  • Python es un lenguaje de programación de alto nivel, poderoso y fácil de aprender para nuevos usuarios. Posee un enfoque simple pero efectivo hacia la programación orientada a objetos.
  • En comparación con otros lenguajes de programación lo distinguen las siguientes ventajas:
    • Ofrece en general mayor chequeo de errores que otros lenguajes, por ejemplo C.
    • Es un lenguaje de programación interpretado por lo que no requiere de compilación.
    • Al ser de alto nivel permite escribir programas complejos de forma compacta y fácil de entender principalmente debido a los tipos de datos de alto nivel y no requiere definir los tipos de variables y funciones.
  • IPython es un visor interactivo (por eso "I"Python) que a través del uso de colores y funcionalidades extras acerca más la experiencia de programación al Usuario. Sus principales ventajas son:
    • Uso de colores para resaltar tipos de variables, errores y líneas.
    • Autocompletación de variables usando tabulación.
    • Está basado en una arquitectura en paralelo lo que le permite ejecutar diferentes operaciones a la vez: debugging, desarrollo, ejecución, etc.
  • Fácil de instalar en Windows (a través de Anaconda, Entough Canopy), Linux (centro de software) y Mac.

2. Tipos de datos en Python

Un tipo de dato es la propiedad de un valor que determina: su dominio (valores que puede tomar), las operaciones que se le pueden aplicar y la representación interna que usa el propio computador. En python existen esencialmente:

  1. Números enteros (int).
  2. Números reales o de punto flotante (float).
  3. Números complejos (complex).
  4. Valores lógicos (bool).
  5. Texto (str).

A continuación veremos las características de cada uno por separado.

2.1 Números Enteros.

Como su nombre lo dice son números enteros a las cuales se le pueden aplicar las operatorias básicas conocidas: suma(+), sustracción (-), multiplicación (*), división flotante (/), división entera (//), módulo (%), potenciación (**).


In [ ]:
2+2

In [ ]:
1-10

In [ ]:
3*2

In [ ]:
4/5

In [ ]:
4//5

In [ ]:
4%3

In [ ]:
3**2

Observación: En python 3 la división "tradicional" de enteros da un flotante. Esto si bien no es conceptualmente coherente (la operacion de 2 tipos deberia originar el mismo tipo de datos), es en la práctica lo que se busca y es "pragmaticamente" más coherente. Si se busca la división entera, es necesario utilizar //.

Desafío 1

Calcular el siguiente valor utilizando las operaciones anteriormente descritas:

$$ 1 + 2^2 - 3^3 + 4^4 - 5^5 + 6^6 -7^7 +8^8 -9^9 $$

Pista: El resultado deberia ser $-371423051$


In [ ]:
# INSERTAR CODIGO AQUI #

2.2 Números reales o de punto flotante.

La operatoria con números flotantes nos permite utilizar las operaciones matemáticas que bien conocemos sin problema. Para ingresar un número de punto flotante se debe ingresar su parte entera seguida por su parte decimal. Sin embargo, si queremos operar como número de punto flotante a un número entero se debe agregar un 0 luego del punto. Veamos que nos entrega el computador en el caso de la división anterior con números de punto flotante:


In [ ]:
4.0/5.0

In [ ]:
4./5.

Los numeros reales (o flotantes) tienen las mismas operaciones que los numeros enteros.

Los números reales no pueden representarse con precisión infinita en el computador, por lo que resulta necesario considerar que siempre existe un error de redondeo.

Desafío 2

Evalúe la siguiente expresión utilizando las operaciones de enteros: $$ \frac{1 + \frac{2}{4+\frac{8}{16}}}{1 - \frac{1}{1+\frac{1}{2}}}$$ Pista: El resultado debería ser $4.33333333333$


In [ ]:
# INSERTAR CODIGO AQUI #
num = 1
den = 1
print num/den

Desafío 3

Evalúe la siguiente expresión $$ 1 + \sqrt{2} + \sqrt[3]{3} + \sqrt[4]{4} + \sqrt[5]{5} + \sqrt[6]{6}$$ Pista: Recuerde que $\sqrt[n]{p} = p^{\frac{1}{n}}$.


In [ ]:
# INSERTAR CODIGO AQUI #

2.3 Números complejos

Python nos permite operar con números complejos a través de la sintaxis a+bj, donde j denota al número imaginario en el sistema. Las operaciones posibles sobre los numeros complejos son las mismas de los numeros reales. Veamos algunos ejemplos:


In [ ]:
(3 + 2j) + (- 2j) # Sigue siendo numero complejo aunque se cancele la parte imaginaria

In [ ]:
(3 + 2j) - (12 + 5j)

In [ ]:
(3-2j)*(-2j)

In [ ]:
(12+5j)/(4-3j)

Si definimos un un número complejo $a$ podemos encontrar su parte real e imaginaria mediante la sintaxis "a.real" y "a.imag", mientras que su módulo puede ser determinado a través de la función "abs". Veamos un ejemplo de estas operatorias especiales:


In [ ]:
a=3+4j
print a.real
print a.imag
print abs(a)

2.4 Valores lógicos o booleanos

Los valores lógicos son aquellos que únicamente pueden tener valores de verdad: verdadero (True) o falso (False). Se utilizan principalmente para verificar el estado de verdad de expresiones y evaluar condicionales o estructuras de control. Un ejemplo sencillo sobre cómo obtener booleanos viene de aplicar las operaciones de orden en números. Por ejemplo la comparación de igualdad "== ", o las desigualdades "<=", "<=", "<", ">". Los booleanos tienen además las operaciones tradicionales: y (and), o (or), negación (not).


In [ ]:
3==4

In [ ]:
100==100

In [ ]:
3.4 <= 5

In [ ]:
(not True or True ) and (not False)

Cabe destacar que python soporta el uso encadenado de expresiones lógicas de comparación:


In [ ]:
x = 10
1 <= x <= 100

Desafío 4

Dado un cierto numero $x$, evalue si el número es múltiplo de 6 y 7 pero no de 8.

PISTA: Un número $n$ es múltiplo de $p$ si el modulo (resto de división entera) es cero. En python, esto es n%p==0


In [ ]:
x = 426
respuesta = True and True or False
print respuesta

2.5 Texto o Strings

Los strings son las cadenas de texto que nos permiten, por ejemplo, imprimir información por pantalla. Al igual que los ejemplos de datos anteriores poseen características y operatorias propias que nos facilitan tremendamente la utilización de éstos. La definición de strings se puede realizarse con comillas simples ('), comillas dobles ("), triple comilla simple (''') o triple comilla doble ("""). El uso de strings en python es tan importante que hemos definido una sección especial para explicarlos y practicarlos: string en python.


In [ ]:
string_1 = "Ex Umbra in Solem"
print string_1

In [ ]:
string_2 = 'Ble ble'
print string_2

In [ ]:
string_3 = 'Ble ble'
print string_3

In [ ]:
string_4 = 'Ble ble'
print string_4