jueves, 23 de abril de 2015

QUIZ 10

QUIZ 10

1) Hacer una lista que recibe cierta cantidad de números y que se sumen solo los que son divisibles entre 3. Aquí las fotografías del programa principal y el resultado en la terminal:


2) Utilizar el algoritmo del producto escalar. Hay un link para más información sobre este algoritmo en http://es.wikipedia.org/wiki/Producto_escalar. Hay 2 condiciones para esto: si ambos vectores(listas) no tienen la misma cantidad de números, el programa te responderá ERROR u otra advertencia y un -1. La otra es que si los vectores tienen la misma cantidad de números para seguir con el algoritmo. La cantidad de números que quieras poner en los vectores depende ti si es que quieres seguir. Aquí las fotografías del programa principal y los 2 resultados de acuerdo con la condición establecida:




ECOS

ECOS

Encuesta a profesores. El tiempo que se utiliza no es mucho digamos. 10 o 15 minutos, tal vez. 
Aquí tome fotos de las encuestas a diferentes profesores de este semestre y de que ya están hechos. Para respetar la privacidad de otros, no publicaré nombres u datos personales.





miércoles, 8 de abril de 2015

MASTERY 19 Use of loops with "while"

USO DE CICLOS CON "while"

Un ciclo es proceso que se repite. En programación hay ciclos y se utilizan muchísimo de acuerdo de cómo se va utilizar el programa. Para definir un ciclo hay 2 formas de hacerlo: "while" y "for". Sin embargo, solo tomaré el de "while". "while" funciona algo similar que una condicional, es decir, debe tener una condición y tiene la misma estructura: un "header" y un "body". Las diferencias están que en el loop el programa hará varias iteraciones cuando todavía se cumple con la condición establecida y cuando esa condición no se cumple más, el loop se romperá y mostrará el último valor que se sacó. Aquí un ejemplo de la WSQ14:

"x" es igual a 0 y "y" es igual a 0. Luego se pone "while" y la condición sería que el valor "x" sea igual o menor a el valor de "precision". Quiere decir que el programa seguirá corriendo hasta que "x" sea mayor a "precision". Luego le sigue el proceso: "y" tendrá un nuevo valor de acuerdo a la operación luego de haber utilizado su valor anterior, 0. La clave para romper el ciclo sería que "x" se sumara con 1. Si no se hace esto, el programa quedaría en un loop infinito. Es por esto que debemos establecer un límite a estos loops. Cuando "x" se sumó con 1, "y" hará de nuevo el proceso, pero con el nuevo valor obtenido del proceso anterior y "x" se sumará de nuevo con 1 con el nuevo valor obtenido hasta que sobrepasa el límite. Por ejemplo, cuando se declaró el límite hasta 10, "y" hará su proceso y "x" se sumará con 1 hasta que esa misma variable sea mayor a 10, en este caso, 11. Aquí como quedaría el output de este ejemplo:


WSQ14 ESTIMATING "e"

ACERCÁNDOSE A "e"

El valor constate de e o el constante de Euler es igual a 2.718281828. Al parecer hay algunos métodos que se pueda sacar el valor de e, bueno, no exactamente, pero un aproximado de acuerdo al número de decimales que se quiera establecer.

La fórmula sería esta: 

Nos damos cuenta que cada valor que se suma está dividido por un valor factorial. Podríamos escribir de nuevo la fórmula de la factorial para poder usarlo en este programa; sin embargo, hay un modo más sencillo de hacerlo. Importar su módulo y llamarlo. Pero antes, voy a tener que quitar una parte del código de la WSQ09 para hacerla menos enredada a la hora del input y output. Aquí la versión modificada de esta:


 Aquí una foto del código actual:

Utilizamos un loop que se rompe cuando "x" es igual al número de decimales que se va usar. Declarar "x" y "y" a 0 para que se vuelva a repetir hasta el límite establecido. Aquí se puede ver que se llamó la función del módulo "Fact" y que dentro "x" sea afectada por esa función. No hay que olvidar que se debe de importar el módulo o el archivo primero antes de realizar la operación. El output sería esto:
Se ve que cuando más decimales se pone, más aproximado se acerca a e.
Aquí el link en GitHub:

WSQ11 YO SOY 196

YO SOY 196

Un palíndromo es cuando una serie de caracteres se puede leer así mismo al revés. Un ejemplo sería: "BOB", al revés "BOB". Tomando con números sería esto: "121", al revés "121". Los números así se llaman palíndromos naturales. De lo contrario, se hará un proceso de iteración hasta que pueda convertirse en un palíndromo: "19". "19", al revés "91". 19 + 91 = 110. "110", al revés "011". 110 + 011 = 121. "121!, al revés "121". En caso de que no se pueda llegar luego de varias vueltas a ese número se le conoce como Número de Lychrel. Un ejemplo sería 196.

Para entender cómo hacer un código con este método es muy complicado. La verdad, yo me quedé en algunas partes que todavía no me queda claro. En el output tiene que salir el rango, la cantidad palíndromos naturales, número no Lychrel y candidatos a ser números Lychrel luego de 30 iteraciones. Aquí fotos del código y del output:



Aquí el link en GitHub:

WSQ13 BABYLONIAN METHOD

MÉTODO BABILÓNICO

Sabemos cómo utilizar raiz cuadrada ¿no?. En programación es fácil sacarla si utilizamos "import math" y ponemos el "math.sqrt()" para poder sacar el resultado. Pero, ¿cómo vamos a sacar raíz cuadrada sin el módulo? Hay que utilizar el Método Babilónico.

El Método Babilónico consiste en achicar un rectángulo hasta que todos sus lados miden iguales sin que el área sea modificada. De un rectángulo determinado se toma su ancho y su largo para sumarlos y luego dividirlos entre 2. El resultado que sea en esa división será el largo de otro rectángulo que todavía tiene la misma área. Hay que despejar el ancho como en las ecuaciones. De ahí se repite el  procedimiento una y otra vez hasta que el ancho y el largo midan lo mismo. 


Aquí el código con foto:
Hay que declarar la variable "z" que sea igual a "n" y que "y" sea 0. Poner un loop que se rompa cuando "z" sea igual a "y". Se empezará que "y" no sea igual a "z" por el valor de "n", pero cuando "z" realizara el método babilónico, "y" tomará el valor de "z" anterior y se repetirá el procedimiento hasta que "y" sea igual a "z". Eso es lo que yo entendí de acuerdo al código aquí, no sé ustedes. El output sería esto:

Aquí el link en GitHub:
https://github.com/YeshuaAguilar02/PYTHON/blob/master/WSQ13

WSQ10 LISTS

LISTAS

La lista es una sequencia de valores y esos valores son llamados como elementos. Esos elementos pueden ser de cualquier tipo. En este ejercicio  nos piden hacer un programa que muestra el total, el promedio y la desviación estándar con listas. Hay que utilizar loops para esto.

Aquí el código en fotos:



Una forma fácil de sacar la suma total es poner "sum()", pero aquí decidí utilizar un "for in range" para declarar una variable a 0, tomar cada valor de la lista y sumarlas con la variable ya declarada hasta que termine con todos. Para el promedio fue sencillo, solo llamas la función con los valores ya resueltos y dividirlas por el número de valores que hay en la lista: para eso se utiliza "len()". Para la desviación estándar es algo complicado de expliar. Declaras una variable con la función del promedio con los resultados ya resueltos, declaras 3 variables (t, d, o) a 0 y utilizas un "while"para declarar que el loop se romperá si "t" llegara a "len(n)". Pon "d" para que toma la fórmula de la desviación estándar tomando cada valor dentro de la lista, cada vez que realiza un valor se suma a 1 con "t" hasta llegar a "len(n)", luego declara "o" para que cada valor de "d" sea sacado se sume con "o" hasta llegar al límite de acuerdo a la variable "t". Por último, dividir "o" entre "len(n)" y sacar raíz cuadrada.

Para poner valores dentro de la lista se puede utilizares 2 cosas: o puedes poner valores determinados dentro de la lista o ponerlas cuando el programa te lo pregunte. Si eliges la segunda opción, debes de primer declarar otra variable (s) a 0 y utilizar un "while" que se rompe si "s" llegue a 10. Para cada valor puesto se agregará a la lista con "append". Llamas el nombre de la lista con punto, pon "append" y entre paréntesis será cada valor agregado hasta llegar al límite propuesto por "s" porque "s" llegó a su límite (10) para que rompa el loop. Aquí el output:


Aquí el link en GitHub:
https://github.com/YeshuaAguilar02/PYTHON/blob/master/WSQ10

domingo, 5 de abril de 2015

MASTERY 18 Nesting of conditionals statements

CONDICIONALES NESTING

Utilizare el ejemplo de la Mastery anterior.
Tal vez se habrán preguntado en la Mastery anterior de las condiciones DENTRO de otras condiciones. La clave de esta Mastery es esto, "nesting" condicionales: condiciones que están dentro de otra condición. Una variable o valor cumple con las características de una condición y se lo lleva hacia ese camino para encontrase con otras condiciones diferentes a la anterior y llevarlo hacia otro camino si es que cumple con una de esas condiciones. Hay que recabar que "if" se puede utilizar otra vez si es que está dentro de una condición.

En el ejemplo sería esto: "Sacas 70 o más quedas aprobado, pero solo puedes sacar Beca si sacas 85 o más". Para eso tuve que declarar "z" y determinar su valor para poder utilizarlo en la siguiente condición. "Sacas menos de 70, pero sacas 40 o más repruebas, pero con otra oportunidad para sacra el curso. Sin embargo, te tomarás un nivel grande y grave de advertencia si sacas menos de 55". Al igual como el caso anterior, se declara una variable para poder utilizarlo en la condición. "Sacas menos de 40, quedas expulsado". Esto ya lo expliqué en la Mastery anterior.
Aquí un ejemplo en la terminal:
Aquí les dejo el link del código en GitHub: https://github.com/YeshuaAguilar02/PYTHON/blob/master/MASTERY18

MASTERY 17 Use of "elif" with a conditional

USO DE "elif" CON UNA CONDICIONAL

El comando "elif" es muy similar al comando "if" y también al comando" else". La diferencia es que con "elif" debes de poner la condición como en "if", pero diferente. Hay que considerar que "else" se utiliza en caso de que uno más variables no cumplen con las condiciones anteriores y esas condiciones tienen "if" y "elif" y no necesita que se le teclee una condición en específico, lo que diferencia con "elif". La estructura es la misma con los demás condiciones. Aquí les tengo un ejemplo:


Aquí tenemos unas condiciones que toma una calificación. Dependiendo de cuánto saques, estarás aprobado, reprobado o expulsado. "if" utiliza la condición quienes sacan 70 o más aprueban el curso. Si "elif" no estuviera ahí y "else" tomaría su lugar, el programa tomaría la condición quienes sacan menor de 70 reprueban el curso. Aquí tenemos "elif" y su condición quienes sacan menor de 70, pero sacan 40 o más reprueban el curso, pero todavía tienen otra oportunidad para pasar. Ahora con "else" se utiliza lo contrario de las condiciones anteriores: quienes sacan menor de 40 no solo reprueban el curso, también son expulsados de la institución. Aquí mostraré el ejemplo en la terminal:

MASTERY 16 Use of "else" with a conditional

USO DE "else" CON UNA CONDICIONAL

Seguimos con el ejemplo de la WSQ05.
Nos damos cuenta que "if" no es la única condición. El comando "else" se utiliza para determinar una condición que es lo contrario totalmente de la condición o las condiciones anteriores. Es decir, si no se cumple la primera condición, se pasa hacia la otra condición. En este ejemplo sería que si la temperatura del agua en ºC no es mayor o igual a 100, se pasa a la segunda condición, es decir, la temperatura del agua es menor a 100 y el agua no se evaporará. Aquí entra la segunda condicional después de poner la primera y se bede poner así: "else:". La estructura de "else" es lo mismo que el de la "if, obviamente. Tomaré un ejemplo en la terminal de la foto: "El agua está a 205ºC. En ºC está a 96ºC. El agua para evaporarse debe ser igual o mayor a 100ºC y a la temperatura que nos dio está menor que 100ºC, por lo tanto, el agua a esta temperatura no se evaporará."

Aquí les dejo el link del código en GitHub: https://github.com/YeshuaAguilar02/PYTHON/blob/master/WSQ05.py

MASTERY 15 Use of the conditional "if"

USO DE LA CONDICIONAL "if"

Las condiciones se utilizan en caso de que ciertos valores o variables cumplen ciertas características y pueda seguir en el camino una operación o se pare o tome otro camino. El comando o la palabra clave para establecer una condición es "if". La estructura de "if" es como el de las funciones creadas: un "header" y un "body", es decir, una cabeza donde se pone las condiciones y su cuerpo donde se realizarán más operaciones y otros procesos. Para esto voy a utilizar el código de la WSQ05.

Quiero convertir ºF a ºC. Ya que tengo la operación falta otra cosa que agregar: determinar si a esa temperatura se evapora el agua.  Se utiliza "if" y la siguiente condición: "C >= 100:". Quiere decir que si el grado en Celsius es igual o mayor a 100, el agua se evaporará. Al igual que las funciones, se debe de poner 2 puntos al terminar de definir la condición.

Tomado un ejemplo en la terminal sería esto: "El agua está a 356 ºF. En ºC está a 180. 180 es mayor que 100; por lo tanto, el agua se evapora". El comando "else" lo explicare en el siguiente Mastery.

MASTERY 14 Creating and using a Python Module

CREAR Y USAR UN MÓDULO EN PYTHON

Ya sabemos qué es un módulo y cómo utilizarlos. Como toque adicional a este Mastery, se puede crear tus propios módulos con sus funciones como el de las funciones. Para eso voy a tener que utilizar 2 archivos diferentes. Uno se va llamar Mach.py y el otro Modulos.py.

Aquí te muestro el primer archivo:
Estoy definiendo 2 funciones: una que hace una operación matemática y otra que solo imprime caracteres. Esto es necesario a la hora de crear módulos. Al final, hay que guardar el archivo con nombre(en este caso Mach.py).

Ahora pasamos al otro archivo:
Como en el MASTERY 13, se debe de importar el nombre del módulo o, en este caso, del archivo, pero sin el ".py".  También nombrar el módulo primero y luego, el nombre de la función o de las funciones y sus respectivos argumentos. Aquí estoy nombrando esas funciones para que me haga estén involucrados en una operación dentro de una función del otro archivo. El output sería así: 
Lo de "None" en el resultado pienso que sería que en la función Machi no se declaró ni un argumento, es solo una función que imprime varios caracteres. No sé si esa es la causa de mi resultado.

MASTERY 13 Importing and using Python modules

IMPORTAR Y USAR MÓDULOS DE PYTHON

Un módulo es un archivo que contiene una colección de funciones variados y relacionados. Python contiene una buena cantidad de módulos a su disposición. Aquí les dejo un link para saber qué módulos contiene: https://docs.python.org/3/py-modindex.html.

Los módulos facilitan muchísimo las cosas a la hora de desarrollar tu código a base de operaciones, algoritmos, etc. Pero para que ese módulo esté disponible en el programa hay que importarlo, es decir, teclea "import" y el nombre del módulo. Elegiré uno de los módulos más conocidos en Python: math.  Este módulo se puede utilizar para procesos y funciones matemáticas como raíz cuadrada, el valor de pi, seno, coseno, entre otras cosas. Aquí un ejemplo: 
Para poder utilizar esos módulos primero hay llamar el nombre del módulo, luego punto y poner el nombre de la función que se quiere hacer con su argumento. En este caso sería llamar la función o el valor de pi (3.14159...)  y sacar raíz cuadrada de la variable dentro del parámetro de esa función. Es necesario memorizar el nombre de las funciones. 

También existe otros módulos como "statistics" donde se pueda utilizar funciones y fórmulas de estadísticas como la derivación estándar o la varianza, "random" que sirve para elegir un valor al azar dentro de un rango, etc.

sábado, 4 de abril de 2015

MASTERY 12 Creating Python Functions

CREAR FUNCIONES DE PYTHON

Ya sabemos qué es una función y cómo llamarlos para sacar la respuesta y mostrarla en la terminal. Hay que considerar que Python tiene sus funciones como "type" que sirve para identificar en su argumento qué tipo de valor es, "int" que sirve para convertir valores a números enteros, "str" que sirve para convertir valores en un string, etc. También estarían los que pertenecen a un módulo, pero eso se va ver más tarde. Hay otra cosa más en el tema de las funciones: nosotros podemos crear nuestras propias funciones y usarlos como queremos.

La clave para crear una función es teclear primero "def", que es lo que definirá la función, luego poner su nombre y el argumento que se utilizará para esta función. Utilizaré el ejemplo del Mastery anterior:
La primera línea es el "header" que sería el nombre de la función creada con su argumento. Hay que poner dos puntos que sería para definir las siguientes declaraciones y expresiones que se utilizará en el resto de la función, es decir, el "body". Ahí en el body siempre debe haber un espacio adelante del header porque se podrá comprender que esas declaraciones y operaciones pertenecen a esa función. El resto de la función, llamarla y mostrar su respuesta en la terminal se pude ver en el Mastery anterior.

MASTERY 11 Calling Python Function

LlAMAR UNA FUNCIÓN EN PYTHON

Una función es una secuencia de declaraciones que realiza una operación. Una función debe tener un nombre y un parámetro que es el argumento que se tomará y lo regresará como resultado dependiendo de la operación de la función.

Vamos crear una función donde se sume unos valores:

Hay que considerar que para "regresar" el valor que se usó dentro de la función como el resultado se debe utilizar el comando "return" y la variable que se quiera mostrarse como el resultado dependiendo de como va la operación.

Ahora lo clave para este Mastery: llamar la función ¿Cómo?
Declara una variable AFUERA de la función y pon el nombre de la función con su respectivo argumento (en este caso, suma(n)). Esa variable tendrá el resultado de esa función. Luego, utiliza el comando print hacia la variable que contiene la función y el resultado te saldrá en la terminal o output como en la imagen de allá arriba.

MASTERY 9 Basic types and their use in Python

TIPOS BASICOS Y SU USO EN PYTHON

Hay 3 diferentes tipos de variables:
  • Integer: es para número enteros.
  • Float: para números decimales. El punto es lo que los distingue de los integre.
  • String: para caractéres. Es fácil de identificar por tener las comillas (""), incluso todavía es considerada como string si hay números ahí.
El uso de estos tipos de variables son las más comunes y va dependiendo del tipo de programa que quieres hacer. Hay que considerar que cada uno de esos tipos de variables son incapaces o no son la forma adecuada de usarlos en algunas situaciones. Por ejemplo, el uso de "//" para dividir solo se usa para los integers. Si se utiliza en una variable float, el output, sin importar cómo salga la respuesta, pondrá las decimales en 0.


En caso de no saber cuál es cual, hay una forma hacerlo. 
Declara unas variables y antes de poner los valores dentro del paréntesis, pon "type". Utiliza la función print para esa variables. El resultado sería esto: 


Type se utiliza para identificar el tipo o class de la variable. Así de sencillo.

viernes, 3 de abril de 2015

WSQ12 GREATEST COMMON DIVISOR

Gran Común Divisor

Sabemos como está el asunto ¿no? Digo, el gran común divisor sería el número máximo que pueda dividir 2 números. Por ejemplo, el GCD de 16 y 24 es 8. Otro sería el GCD de 30 y 80 es 10. Hay un algoritmo que pueda resolverlo: el método de Éuclides. 

El método de Éuclides sería algo así como:

GCD(a, a) = a
GCD(a, b) = gcd(a - b, b) si a > b
GCD(a, b) = gcd(a, b - a) si a < b

El método es sencillo. Solo hay que usar condicionales, sin loops o recursiones y utilizar la fórmula del algoritmo así como está arriba.

El output sería así:


WSQ09 FACTORIAL CALCULATOR

Calculador Factorial

La fórmula para calcular la factorial sería esto: 
   n! =
   1 \times 2 \times 3 \times 4 \times ... \times (n-1) \times n
.
También está esto: 
   n! =
   \prod_{k=1}^n k
.
Hay 2 formas diferentes hacer la factorial: con un loop y con una recursión.

Recursión

La fórmula en recursión sería esta: 
   n! =
   \begin{cases}
      1              & \text{si, } n = 0 \\
      (n-1)!\times n & \text{si, } n > 0
   \end{cases}
Hay que definir primero el algoritmo antes de llevarlo al programa principal:

0 y 1darán valores a 1. Desde 2 hasta más adelante se hará como en la fórmula.
Ahora a utilizar for "x" i  range:

"y" sería todos los valores dentro de un rango hasta cierto límite. Para esos límites sería dentro del paréntesis. El primer valor sería en donde comienza; el segundo, donde termina y el tercero sería el número de intervalos que va a tomar. En el segundo valor dentro del paréntesis( el rango) está sumado con 1 debido a que si no lo está, el programa terminará a un intervalo atrás del valor del límite final, en este caso x. Por ejemplo, si x es 6 y en el segundo valor del paréntesis solo pongo x, llegará hasta 5.

Para no dar más rodeos, aquí sería en el output:

Loop

Es parecido al de recursión, esta vez con while. Hay que definir el algoritmo así:


Esto hará que el valor que pusimos multiplique "respuesta" y luego se le resta el valor a 1 para multiplicar de nuevo "respuesta" hasta llegar a 1. 

En caso de que el valor sea negativo, hay que decirle al usuario que cambie de valor a uno positivo.
Utilizamos de nuevo while, pero afuera de la función del algoritmo. 
Cada vez que mando un valor para que el programa lo calcule, este me pregunta si deseo continuar. Para continuar, pon "y" en la terminal de acuerdo con esta foto. Para salir, pon "n" u otro carácter. Además, si pongo un valor negativo, el programa no me lo permitirá y me hará la misma pregunta si es que quiero continuar. Así quedaría en el output: