Diccionarios

//giphy.com/embed/l0HlOBZcl7sbV6LnO

via GIPHY

Contiene una serie de objetos (en su mayoría strings) que estan ligados a una llave que los identifica. Es casi igual que una lista, solo difieren en la llave.

Usa los simbolos «{ }»

Podemos ver a los diccionarios como una especie de mini base de datos para el programa. Los diccionarios no necesitan un orden especifico, ya que la manipulación y/o consulta de sus elementos, se hace a traves de la llave asignada.

Ejemplo

estados= {
“Jalisco”: “JAL”,
“Sinaloa”: “SIN”,
“Sonora”: “SON”,
“Nayarit”: “NAY”,
“Colima”: “COL”
}

Como vemos en este ejemplo asignamos las iniciales de los estados, a los estados mismos. La sintaxis es Nombre_diccionario={«objeto_1″;»obj1″,»objeto_2″,»obj2»}

Hay que tomar en cuenta que cuenta algun valor sea string, se tiene que poner entre comillas.

 

https://learnpythonthehardway.org/book/ex39.html

 

Rangos…

Los rangos son una rapida manera de imprimir números deseados. Estos son entre los valores que le pusimos.  Estos rangos son utilizados en los ciclos for, para poder dar los parametros del ciclo.  El comando es de esta manera:

  • for var in range(num inicial, num final, saltos)

Python el primer parametro es el número con el que empieza, el segundo es el número con el que termina, y trecero es cuanto va a saltar.

Por ejemplo:

zettayotta1

Aqui queremos hacer una lista que vaya guardando los valor del contador.  En este caso el número inicial es 1 y va contando de dos en dos hasta que llega a 29. Recordemos que Python tomaría como número inicial al 1 y como final al 29. El número final escrito no se incluye, solo se incluyen valores menores que este. De aqui sale que tomaría hasta el 29.

El resultado de este programa es una lista.

holshols

MAS INFO AQUI

 

Python’s range() Function Explained

Módulos python

Empecemos por lo que es un módulo… A grandes rasgos un módulo es un grupo de funciones importadas a nuestro código. Esto es para evitar la repetición de código, y que en general el código sea mas simple.

Se podría decir que hay dos tipos de módulos. Los que python3 tiene instalados (como es math) o un módulo propio. El primero es muy facil de entender, en este caso utilizaremos el modulo math. Si nosotros queremos hacer alguna operación compleja con python (puede ser sacar una raiz, o el seno, etc.) necesitamos importar el modulo que tiene la función necesaria para hacerlo. Para esto utilizamos el comando «import math». Una vez importado el módulo, podemos ejecutar cuantas funciones queramos sin tener que importarlo otra vez. Un ejemplo de esto la función de PI. Escribimos «math.pi», y listo, tenemos el valor de PI.

captura

Esto nos imprime el valor de pi: 3.141592653589793

El otro tipo de módulos son los que tu haces, y puedes importar. El importar un módulo personalizado completo es lo mismo que copiar el código del archivo, y pegarlo en el tuyo solo que sin la necesidad de usar tantas lineas.

Para importar un módulos personalizado completo se utiliza la misma sintaxis. (import modulo). Cabe mencionar que el otro módulo debe de estar en la misma ubicación que el archivo para que esto funcione.

Como observamos en el primer código hasta el final importamos «factorial», esto equivale a copiar y pegar el código abajo. Al ejecutar el código nos damos cuenta lo que pasa.

Es posible importar solo una función de algún módulo, para esto solo cambia la sintaxis.

captu2ra

 

 

SDKLSDKVSDKN

Gira gira con el ciclo.

Hemos llegado a un concepto que es utilizado muy ampliamente en el mundo de la programación, y que es básico. Parece que es complicado, pero en realidad no lo es, los ciclos…  Estos son literalmente un ciclo que hace el programa.

Podrán preguntar, ¿como que un ciclo?  Tu pones una condición para que un código se repita un cierto número de veces, el número de veces que se repite puede conocerse o no. De esto depende que tipo de ciclo se va a utilizar. Hay dos tipos de ciclos el «for» y el «while», y muy basicamente el «for» es para cuando conocemos cuantas veces se va a repetir el ciclo, y «while» es para cuando no se conoce.

python_while_loop

CICLO WHILE

Este ciclo se utiliza cuando no se conoce el número de veces que se va a repetir. Depende de una condicional, ya que el ciclo se cumple mientras la condicional se cumpla. Cabe mencionar que los comandos «and» y «or» pueden mezclarse ciclos «while». También este ciclo se puede utilizar con los comandos «try» y «except».

screenshot-from-2016-09-13-16-00-13

Como podemos observar el ciclo de arriba es para obtener el factorial de un número, y se logra de esta manera:

Primero el programa pide la entrada del usuario, osea el número que del cual se quiere obtener el factorial, y se guarda en una variable. Despues se crea «f» que sirve para ir descendiendo para multiplicar por num*num-1, para cumplir el factorial. Este ciclo se repite hasta que «num» se vuelve cero, entonces el programa sale del ciclo.

 

Ciclo FOR

Este ciclo es para cuando se sabe cuantas veces se va a repetir, es decir es definido. Lleva un contador integrado, que tu decides la manera en la que cuenta. Es ciclo se repite hasta que el contador se repite las veces definidas por el usuario, y/o la variable. Este ciclo itera.

En el ciclo de arriba «range» se utiliza para decir que el ciclo se repetirá desde el primer número, hasta el segundo, en pasos definidos por el tercer número.

Ciclo o bucle for in en python

SDKLSDKVSDKN

Condicionales… Si lees esto es porque eres humano, si no lo lees….

Las condicionales son una parte muy básica, pero extremadamente útil de la programación. Con estas puedes comparar valores para definir una acción, dependiendo de los parámetros que tu pusiste.

Para empezar con esto, primero hay que conocer los operadores matemáticos, y su jerarquía.

 

cu00133a_1

Una vez que conocemos los operadores y su jerarquía queda entender los comandos. Estos son tres.

IF

Este es el primer comando, y es con el que «llamas» la condicional.  Y despues de esto, poner la condición. Tu puedes escoger cual, ya sea que un número sea mayor o igual a otro, o cosas por el sentido.

screenshot-from-2016-09-12-10-58-58

Como podemos ver en la siguiente condicional, si a es mayor que b, imprime un texto que nos lo dice. Pero, ¿que si queremos que imprima algo si es menor que b? Para esto utilizamos el comando «else».  Este comando es para que si la condición no se cumple, pase otro resultado. Este comando no lleva condición ya que es para cuando no se cumple la condición inicial.

screenshot-from-2016-09-12-11-43-51

Como vemos en la imagen ya tenemos dos posibles resultados, si «a» es mayor que «b», y si «a» es igual o menor que «b». Pero si queremos separar el resultado de igual y de menor podemos utilizar un tercer comando llamado elif. Con este comando puedes poner otra condición a parte de la primera. Con este comando podemos poner tantas condiciones como queramos.

screenshot-from-2016-09-12-11-59-40

El comando else, es enteramente opcional, pero es de mucha ayuda para saber si no se cumplió ninguna.

En las condicionales podemos usar los comandos «and» y «or».  Estos son para poner mas de una condición, pero juntas. Con «and» el valor se cumple si las dos condiciones son verdaderas, y con «or» solo si una es verdadera.

 

SDKLSDKVSDKN

http://www.tutorialspoint.com/python/python_basic_operators.htm

http://www.learnpython.org/es/Conditions

Allen Downey. (2012). Think Python. Needham, Massachusetts: Green Tea Press.

 

Entradas y Salidas de Python

Las entradas y salidas en la programación son el medio de comunicación entre la computadora y el usuario, y es extremadamente importante el que los programas tengas sus entradas y salidas bien estructuradas.

SALIDAS.

Las salidas de un programa es lo que el usuario ve en pantalla. Normalmente son mediante el comando «print», pero también se puede lograr con otros comandos. Hay que tener cuidado con las salidas, ya que puede ser que el programa haga lo que le pides, pero que no lo está mostrando al usuario.

Las salidas la mayor parte de las veces son strings.

Captura

ENTRADAS

Las entradas son un poco más complicadas, ya que hay muchas formas de pedir entradas… La más común es mediante el comando «input». Este es una mezcla de entrada y salida, ya que se le puede poner texto de salida para que el usuario sepa que ingresar.

Las entradas tienen diferentes tipos de objeto, como ya los expliqué en un blog anterior. Estos son:

  • String
  • Float
  • Integer
  • Listas
  • Diccionarios
  • Tuples
  • Etc

Básicamente una entrada es todo lo que el usuario le proporciona al programa.

Captura2

MEZCLA DE ENTRADAS SALIDAS

Normalmente los programas tienen muchas entradas y salidas, que son la forma de comunicación entre el usuario y el programa. En este tema de las entradas y salidas hay que ser muy claro para que el usuario entienda lo que queremos obtener de el y no escriba datos erroneos.

Captura3

https://en.wikibooks.org/wiki/Python_Programming/Input_and_Output

 

Un programa «foolproof»

La clase pasada de Ken una compañera y yo decidimos hacer la tarea 10 de la máquina del tiempo de Ken. Un poco retadora la situación pero pudimos hacerlo bien al final despues de muchos errores.

En este programa mi compañera y yo pudimos demostrar el conocimiento de muchos «Mastering Topics». Y me gustó mucho la experiencia del «Pair programming», ya que nunca lo había experimentado como tal.

El programa que hicimos consiste en pedirle al usuario 10 números, para después con estos hacer una serie de operaciones y obtener su suma, promedio y desviación estandar. Pero nosotros no quisimos quedarnos solo con eso, así que decidimos hacer el programa «foolprof». Esto consiste en que si el usuario del programa comete un error, el programa no haga un «crash» que haga que el usuario tenga que reinciar el programa, y que los datos que el usuario dió de alta no se pierdan.

Nuestro código fue el siguiente:

#create a list of floats

import math

print ("Welcome, please enter numbers: ")

this=[]
number=1

def ciclo():
    global number
    while(True):
        try:
            a=float(input("Number "+str(number)+": "))
            this.append(a)
            number=number+1
            break
        except:
            print ("That's not a valid input")

ciclo()
ciclo()
ciclo()
ciclo()
ciclo()
ciclo()
ciclo()
ciclo()
ciclo()
ciclo()

print(this)
suma=0

for x in this:
    suma=suma+x

print ("The total sum of the numbers is: "+str(suma))

prom=suma/10

print ("The average is: "+str(prom))

indice=0
that=[]

def est():
    global indice
    global prom
    element=(this[indice]-prom)**2
    that.append(element)
    indice=indice+1

est()
est()
est()
est()
est()
est()
est()
est()
est()
est()
sumaa=0
for y in that:
    sumaa=sumaa+y

desviacion= math.sqrt(sumaa/10)

print ("The standart deviation is: "+str(desviacion))

Lo primero que decidimos hacer fue empezar a pensar una manera en la cual si el usuario escribe un valor erroneo, no se pierda la información escrita por este. Entonces decidimos hacer una función llamada «ciclo» la cual lo que hace es basicamente pedirle un número al usuario y asignarselo a la variable «a», para despues agregarlo a la lista previamente creada «this».

Eso es la funcionalidad básica del programa, pero si se hubiera quedado hasta allí si el usuario escribe un texto no válido el programa gritaría errores. Entonces decidimos hacer un ciclo while. Este hace que mientras el comando «break» no rompa el ciclo, este no se detiene.  Dentro del ciclo utilizamos el valor «try»  para lo que es la entrada del usuario, y si este «try» falla, te manda un mensaje que dice que tu entrada no es valida, y vuelve a empezar el ciclo. Como podemos observar el valor que escribió el usuario se guarda en la lista «this» .

Después de terminar esto, nos llegó el segundo reto, como poder que el texto del input cambie cada vez que se ejecuta. Me refiero a que te aparezca «number 1» y paara el segundo número «number 2» y así sucesivamente.

Para poder hacer esto, creamos una variable global llamada número, y la incluimos en el «input» del usuario, para despues sumarle 1 para el siguiente. La función tiene que ser global para que las modificaciones que se le hacen (el sumarle 1) se guarde afuera de la función y del ciclo. Cuando vamos a utilizar una variable global dentro de una función, tenemos que decirle al programa que la busque fuera de la función, por eso se le pone «global number» al iniciar la función.

Despúes de definir la función la llamamos diez veces para que guarde los diez números. Despues de llamar la función diez veces, la imprimimos para que le muestre al usuario los números que el escribió. Y despues hicimos un ciclo for para la suma, para que después se imprima el resultado.

Para el promedio lo único que hicimos fue dividir el resultado de la suma entre diez, y después lo imprimimos.

de relación típica

El tercer reto fué la desviación estandar, que se nos ocurrió hacerlo mediante que otra cosa, funciones. Para esta función llamamos a dos variables globales, índice y prom. Índice lo utilizamos para localizar los numeros de la lista mediante el valga la redundancia, indice. Element es (x1-x(prom))^2, entonces se debe de repetir una vez por cada número de la lista. Element es igual al valor x de la lista (this[indice]) menor el promedio elevado al cuadrado, después este resultado lo «apendeamos» a la lista «that» que es la lista para estos valores, y le sumamos uno al indice. Tenemos que repetir esta función diez veces para todos los números, para después utilizar un ciclo for para sumar todos los valor de la lista «that». Después solo queda dividir ese resultado entre diez, y sacarle raiz para después imprimirlo.

PROBLEMAS DURANTE EL RETO

funny-picture-programmers-problems1

El primer problema que tuvimos obviamente fue el que se nos ocurriera como hacer las funciones para que estas sirvieran, después de un rato pensando, pudimos llegar a una respuesta, que no sirvió, para después arreglarla y que si funcionara.

Después tuvimos un error en el cual el ciclo while para la lista se quedaba ciclado imprimiendo que habia un error, tras mucho pensar nos dimos cuenta que fué una falta de parentesis en el «input». Después cuando quisimos hacer que el texto del input cambiara conforme los números, este mismo error apareció. Nos dimos cuenta que no reconocía la variable «number» porque no la estaba buscando fuera de la función. Entonces al declarar la variable como global se solucionó el problema.

Estos fueron nuestros tres mayores problemas, que afortunadamente pudimos resolver. Obviamente tuvimos muchos más problemas pequeños que fuimos solucionando conforme íbamos trabajando.

Nos quedamos los dos al final con una experiencia muy grata de aprender todo esto de la programación.

 

Fuentes:

https://docs.python.org/2/tutorial/errors.html

http://www.ditutor.com/estadistica/desviacion_estandar.html

 

h0cudhV

SDKLSDKVSDKN

Tipos de Variables en Python.

En el lenguaje de programación de Python, hay ciertos tipos de «objetos» que almacenan información. Estos se llaman variables, y se les asigna cierta información para poder accerderla y/o modificarla de manera rápida y efectiva.

58550080

Hay muchos tipos de variables en este lenguaje, empecemos con las tres más importantes.

STRING

Este tipo de variables es la que puede guardar texto y números, por lo que siempre se utiliza al asignarle un texto a una variable. Por ejemplo al pedir al usuario que le asigne su nombre a una variable.

#string
nombre=str(input(«Dame tu nombre: «))
print(nombre)

Al correr esto me pedirá introducir mi nobre, lo asignará a la variable, y después lo va a imprimir.

Las variables tipo string pueden ser «operadas» con operadores matemáticos, por ejemplo si sumamos dos variables string, las va a concatenar, y si las multiplicamos las repetirá. Ojo solo se pueden sumar y restar más no multiplicar ni dividir

#string
nombre=str(input(«Dame tu nombre: «))
apellido=str(input(«Dame tu apellido: «))
print(nombre+» «+apellido)

Este código es lo mismo que el anterior solo que también me pide el apellido, y al final lo concatena.

FLOAT

Esta variable sirve para guardar números decimales, es muy utilizado para sumas, restas y demás operaciones que necesiten exactitud decimal.

INTEGER

Esta variable sirve para guardar números enteros, sin decimales, se utiliza para asignar valores de fechas, o para ciclos.

Los valores integer y float se pueden operar sin problemas, pero no se pueden imprimir siendo un valor de número, por lo que se tiene que convertir a string antes de imprimirlo. Para esto se utiliza el comando:

  • srt(variable)

#string
nombre=str(input(«Dame tu nombre: «))
apellido=str(input(«Dame tu apellido: «))
edad=int(input(«Dame tu edad: «))
print(«Tu nombre es: «+nombre+» «+apellido)
print («Tu edad es :»+str(edad))

Como se puede ver en el último print convertimos el integer «edad» a string temporalmente para poder imprimirlo.

Despues de estos tres tipos de variables básicas hay más tipos como son:

Listas

Es una lista de strings, se indexan desde el cero, y se puede cambiar, y actualizar.

Ejemplo: x=[1,2,3]

Tuples

Es lo mismo que las listas, solo que los valores en este no se pueden cambiar ni actualizar.

Ejemplo: x=(1,2,3)

Diccionario

Es como una lista, solo que cada elemento de esta está asociado a una palabra clave, mediante la cual puedes llamar al valor. La diferencia contra la lista es que en la lista solo puedes encontrar los elementos que hay en ella por su indexación, osea el numero que tienen asignado, que como ya dijimos empieza desde el cero. Y en el diccionario no es así, aquí puedes encontrar el elemento de manera más sencilla mediante su palabra clave.

Ejemplo: dict = {‘Name’: ‘Zara’, ‘Age’: 7, ‘Class’: ‘First’}

Cabe mencionar que Python tambien tiene un tipo de valor que se llama booleano, y este solo tiene dos valores; True y False. Este tipo de valor se utiliza en los ciclos y en condicionales.

inheritance1

SDKLSDKVSDKN

Instalación de Turtle y Matplot en Python

Si estás utilizando python3 en ubuntu y quieres poder graficar mediante turtle o matplot tienes primero que instalarlo con este sencillo código en el terminal.

Para turtle:

sudo apt-get install python3-tk

Solo abre el terminal y escribe esta linea para instalar turtle.

Screenshot from 2016-08-29 08-05-23

NOTA: ESTA INSTALACIÓN SOLUCIONA EL ERROR «Tkinter module not found»

Ahora para instalar matplot se escribe esta linea

sudo apt-get install python-matplotlib

Screenshot from 2016-08-29 08-10-26

Hay que tener en cuenta que en ambos casos puede pedirte la contraseña del usuario administrador.

SDKLSDKVSDKN

Fuentes consultadas:

http://stackoverflow.com/questions/6084416/tkinter-module-not-found-on-ubuntu

http://matplotlib.org/users/installing.html

 

 

 

Zen of Python… (Un lenguage diferente)

«Zen of Python», los veinte principios del conocido lenguage. Pero ¿A qué se refiere esto? La respuesta es simple, estos veinte principios describen como debería de ser la escritura del lenguage.

Screenshot from 2016-08-25 12-36-27

No explicaré que significa cada uno de los principios, pero si diré lo que pienso acerca de esto. Basicamente estos principios son las «reglas» de python. La razón es (que aunque se escuche cliché) python es un lenguage de programación diferente a los demas, ya que a parte de su simplicidad, es extremadamente flexible, y es comodo de usar.

Lo que me encanta de python es su filosofía, que como se puede leer en el «Zen of Python» esta gira alrededor de la legibilidad. Para que un código en python este bien hecho se debería de poder interpretar la mayor parte del código sin ejecutarlo. Parte de la legibilidad, es hacer más con menos, esto significa usar las menos lineas de programación posibles.

Muchas personas catalogan este lenguage como muy facil, y en parte tienen razón, pero no por ser facil, significa que no es útil. Este es un lenguage extremadamente capaz de solucionar problemas.

e5e5d17a95704d39421f34f44f867460bf75528f20e5773b6850888be3b8dd75

Este es el segundo lenguage de programación que aprendo, y me encanta como es tan fácil de leer e interpretar. Creo que este lenguage es perfecto para gente que quiere aprender a programar.

 

SDKLSDKVSDKN