<SYSTEM_TASK:>
Given the following text description, write Python code to implement the functionality described below step by step
<END_TASK>
<USER_TASK:>
Description:
 1 Introduccion a IPython notebooks/ Jupyter
Que es exactamente?
Una libreta IPython/Jupyter es un ambiente interactivo para escribir y correr codigo de python. Es un historial completo y auto-contenido de un calculo y puede ser convertido a otros formatos para compartir con otros.
En particular es batante popular en la comunidad cientifica porque es una herramienta interactiva, iterativa para analisis de datos, visualizacion y contar historias.
Puedes combinar
Step1:  Resetear
Puedes resetear usando el boton <button class='btn btn-default btn-xs'><i class='fa fa-repeat icon-repeat'></i></button>.
Python Basico
Lists and Arrays (Listas y arreglos)
Step2:  podemos agregar elementos
Step3:  o podemos usar el modulo Numpy para arreglos numericos (Protip
Step4:  y que tal arreglos vacios? Aqui creamos un vector de 5 x 1
Step5:  podemos cambiar valores usando  [ indice ]
Step6:  y que tal arreglos de numeros aleatorios?
Utilidades de Array
Tenemos muchas utilidades para trabajar con arreglos...
Sortear valores
Step7:  For loops (Ciclos For)
Un for loop va sobre cada elemento del ciclo, Ojo! nota el espaciamiento/indentacion justo despues del for!
Doble!
un loop pero enumerado, te rergresa un indice y un elemento
Step8:  Y si quieres un elemento aleatorio de la lista?
El modulo random al rescate, corre varias veces la celda y checa si son aleatorios
Que tal funciones?
Siguen la siguiente forma
Step9:  Videos?
Step10:  External Websites, HTML?
<ASSISTANT_TASK:>
Python Code:
import time
time.sleep(1000)
Explanation: 1 Introduccion a IPython notebooks/ Jupyter
Que es exactamente?
Una libreta IPython/Jupyter es un ambiente interactivo para escribir y correr codigo de python. Es un historial completo y auto-contenido de un calculo y puede ser convertido a otros formatos para compartir con otros.
En particular es batante popular en la comunidad cientifica porque es una herramienta interactiva, iterativa para analisis de datos, visualizacion y contar historias.
Puedes combinar:
- Codigo en vivo
- Widgets Interactivos
- Graficas
- Texto Narrrativo
- Ecuaciones
- Imagenes
- Video
Un poco mas...
El projecto Ipython reciente se expandio en la versio 3.0 para incluir otros kerneles de computo como R, Julia, C++ y Matlab.
Para mas informacion/ideas checa los links abajo de este Ipython Notebook.
Vamos a empezar!
Corriendo codigo
Notas: Presionar shift + enter
Corre tu codido usando Shift-Enter o presionando el boton <button class='btn btn-default btn-xs'><i class="icon-play fa fa-play"></i></button> en la barra de herramientas arriba.
Computo Iterativo
El "kernel" mantiene un estado de todos los calculos del la libreta.
Por ejemplo puedes guardar el resultado de un calculo en una variable 
y usarlo en otra celda
Parar codigo
El codigo se corre en un proceso separado llamado el"kernel:". Este puede ser interumpido o reseteado.
Trata de correr el siguiente codigo y dale al boton <button class='btn btn-default btn-xs'><i class='icon-stop fa fa-stop'></i></button>.
End of explanation
lista = ['perro' ,'gato']
print(lista)
Explanation: Resetear
Puedes resetear usando el boton <button class='btn btn-default btn-xs'><i class='fa fa-repeat icon-repeat'></i></button>.
Python Basico
Lists and Arrays (Listas y arreglos)
End of explanation
lista[1]
Explanation: podemos agregar elementos
End of explanation
import numpy as np
array_1 = np.array([3,4,5]) 
array_2 = np.array([4,8,7]) 
array_1 + array_2
Explanation: o podemos usar el modulo Numpy para arreglos numericos (Protip: quieres saber mas? dale click a la imagen)
End of explanation
array_1 = np.zeros(5)
print(array_1)
Explanation: y que tal arreglos vacios? Aqui creamos un vector de 5 x 1
End of explanation
array_1[0]
Explanation: podemos cambiar valores usando  [ indice ]:
End of explanation
arreglo = np.random.randint(1,10,500000)
np.mean(arreglo)
Explanation: y que tal arreglos de numeros aleatorios?
Utilidades de Array
Tenemos muchas utilidades para trabajar con arreglos...
Sortear valores: entoces usamos np.sort(array)
Encontrar Maximo, Minimo: entoces usamos np.min(array), np.max(array)
Encontrar el indices del Maximo o Minimo: entoces usamos np.argmin(array), np.argmax(array)
Calcular medias o desviaciones estandar : usamos np.mean(array),np.std(array)
End of explanation
arreglo = np.random.randint(1,10,5000)
for indice,animal in enumerate(arreglo):
    print(indice,animal)
print("fin")
Explanation: For loops (Ciclos For)
Un for loop va sobre cada elemento del ciclo, Ojo! nota el espaciamiento/indentacion justo despues del for!
Doble!
un loop pero enumerado, te rergresa un indice y un elemento
End of explanation
from IPython.display import Image
Image(filename='files/large-hadron-collider.jpg')
Explanation: Y si quieres un elemento aleatorio de la lista?
El modulo random al rescate, corre varias veces la celda y checa si son aleatorios
Que tal funciones?
Siguen la siguiente forma:
def nombre(opcion1,opcion2):
    #relleno
    print("hola soy relleno")
    return
Actividad 1 : Ejercicios de Programacion
Meta: Obtener confianza con Python.
1.a) Usa un ciclo-for e imprime tus platillos favoritos
1.b) Crea un arreglo de numeros aleatorios de tamano $n$
1.c) Encapsula la funcion pasada en una funcion
Extra: Sumatoria de ondas
Aproximaremos la siguiente onda cuadrada:
$$
f(x) = \sum^{\infty}_{n=1} \frac{ sin(2 \pi (2n-1) x)}{2n -1}
$$
via la formula:
$$
f(x) = \sum^{N}_{n=1} \frac{ sin(2 \pi (2n-1) x)}{2n -1}
$$
Pasos:
Crear una onda sinosoidal y graficarla $sin(2 \pi  x)$
Crear una onda sumada de cuatro ondas sinosoidal (n=1,2,3,4) y graficarla.
Lo mismo pero utilizando un ciclo para un numero arbitraio $n$
Crear una funcion que para un numero $n$ crea una aproximacion a la onda cuadrada.
Graficar para $n=4,8,12,16,50$
Extra: Mas cosas para darle sabor
Celdas de Texto: Latex & Markdown
Celdas se crean por default como celdas de codigo, pero se pueden cambiar.
Cell are by default created as code cells, can be but can be easily changed to text cells by cliking on the toolbar.
In text cells you can embed narrative text using Markdown, HTML code and LaTeX equations with inline dollar signs \$ insert equation \$ and new line as \$\$ insert equation \$\$.
For example: $$H\psi = E\psi$$
The code for this cell is:
```markdown
Text Cells: Latex & Markdown
Cell are by default created as code cells, can be but can be easily changed to text cells by cliking on the toolbar.
    
In text cells you can embed narrative text using Markdown, HTML code and LaTeX equations with inline dollar signs \$ insert equation \$ and new line as \$\$ insert equation \$\$.
For example: $$H\psi = E\psi$$
```
Images
We can work with images (JPEG, PNG) and SVG via the Image and SVG class.
End of explanation
from IPython.display import YouTubeVideo
#https://www.youtube.com/watch?v=_6uKZWnJLCM
YouTubeVideo('_6uKZWnJLCM')
Explanation: Videos?
End of explanation
from IPython.display import HTML
HTML('<iframe src=http://ipython.org/ width=700 height=350></iframe>')
Explanation: External Websites, HTML?
End of explanation
<END_TASK>