miércoles, 6 de mayo de 2015

MASTERY 29 Validated user input in Python

VALIDAR AL USUARIO EL USO DEL INPUT EN PYTHON

De lo que entendí en esta parte es que el "input" se puede utilizarse como un loop de acuerdo a las condiciones que el usuario ponga. Tomemos el ejemplo de la WSQ09 otra vez.
 En el loop dice que la operación se seguirá haciendo si la variable "quiereSeguir" es igual a "y", que significa sí. Hay 2 inputs, pero la segunda es la que se debe tomar en cuenta. Se pone la variable anterior para poner un "input" con un texto si es que quiero seguir: sí o no, o en este caso "y/n". Contestó "y" y el programa correrá y me preguntará por otro valor que poner. Pongo "n" u otro valor y el programa se detendrá. Aquí el output:
Aquí contesté "y" 4 veces después de que el programa me pregunta si es que quería seguir. En el quinto intento decidí parar y puse "n" para terminar la operación.

MASTERY 28 User input(text based) in Python (basic)

USUARIO INPUT EN PYTHON CON TEXTOS

A los que han seguido mi blog, más bien, a los que han hachado un ojo a mi blog y mis códigos habrán notado que la mayoría utilizo el comando "input" con un texto dentro de un paréntesis. El chiste de esto es preguntar en forma de texto al usuario qué valores poner. Recomendaría hacer esto porque de lo contrario, puede que el usuario no sepa que poner y ponga un valor que el programa no pueda correr. Utilizaré el ejemplo de la Factorial de la WSQ09.
 Si ven ahí en las líneas 16 y 22, se utilizó el comando "input" con un texto. Esto es lo que se mostrará en el output al usuario y decirle que valor poner debido a que es un loop:

MASTERY 27 Creation and use of dictionaries

CREACIÓN Y USO DE DICCIONARIOS

Sabemos qué es un diccionario ¿no? Un diccionario contiene listas de unos valores con sus respectivos elementos.  Es muy general que digamos. Los índices de los diccionarios son conocidos como llaves. La forma de crear un diccionario es con el comando "dict()". VComo una lista, nosotros podemos poner un diccionario vacío con esto: "()". Si le queremos agregar más valores, hay que hacer esto:
Notarán algunas cosas en el output: una son las llaves o brackets "{}". Esto determina que lo que se imprimió fue un diccionario. Otra sería las llaves con sus respectivos valores. La llave es a sus valores como una palabra es a sus defunciones. Y la tercera sería el orden en que se presentan. El programa de Python está programada en dar ordenes alternos y es muy impredecible en que posición quedarían.

MASTERY 26 Creation and use of strings

CREACIÓN Y USO DE STRINGS

Habíamos vistos los diferente tipos básicos de valores y "string" es uno de ellos. String es algo parecido a una lista, solo que es una secuencia de caracteres.  Hay varias formas de utilizar el string. Uno de esos es identificar que carácter está en determinada posición. Aquí un ejemplo:
El que está dentro de los corchetes se le conoce como índice.
Otra forma de utilizar los "strings" es el uso del comando "len". Varios habrán visto en algunos WSQ o Masteries este comando. Aquí un ejemplo:
Aquí se contó el número de caracteres que había en ese "string".
Otra forma de utilizarlos es "slice". Lo que hace es tomar ciertos caracteres dependiendo de unos límites. Aquí un ejemplo: 
Aquí se tomó 2 variables: la primera determina desde la posición 0 hasta 5 del "string" y la otra va desde 6 hasta al final. Si se hubiera puesto [0:4] en la primera variable, el output te mostraría "Terr".
Además, los strings son como los tuples, es decir, son inmutables. Aquí un ejemplo d ello:
Hay varias formas de utilizar strings, pero solo mostré algunas que son muy comunes.

Por cierto, si alguien se pregunta quien es Terra Branford, ella es la protagonista del juego Final Fantasy 6.

MASTERY 25 Creation and use of ranges

CREACIÓN Y USO DE RANGOS

Habíamos visto el uso de rangos en un loop hace tiempo. Primero que nada, el comido "range"trata de establecer límites dentro de una secuencia de valores. La estructura principal de "range" es la cantidad de parámetros que se van a utilizar. Solo se puede hasta 3 parámetros y cada uno trabaja de una forma diferente.
Vamos con el primer parámetro utilizando el ejemplo del Mastery 20 acerca de las potencias:
Vemos que en la línea 3 se utiliza un loop con un rango y el único parámetro es "b". Esto es (0, b), o para ser un poco más claro, se hará la multiplicación hasta "b"· veces. Si la potencia es 5, se hará hasta 5 veces la misma operación.

Utilizaremos 2 parámetros con esto:

 1 está en el primer parámetro y es donde empieza el límite y "n" sería el segundo límite, donde se acaba. Ponemos 5  y nos dará esto:
Sin embargo, solo se llega hasta 4. Es debido a la posición de los valores "x". Empiezan desde 0 y este número se toma en cuenta. Si queremos solucionar esto, habría que utilizar 3 parámetros. Utilizaremos el mismo ejemplo:
El 3ª parámetro se utiliza cuántas unidades tomaré y cuántas se saltará. En este caso, el parámetro es 1 y se tomará cada variable en 1 en 1 y el resultado sería esto:


Si ponemos 2, tomaría cada valor de "x" en 2 en 2 y esto sucedería:
Hay que recordar que solo se pueden utilizar 3 parámetros. 4 o más y se producirá un error.

MASTERY 24 Creation and use of tuples in Python

CREACIÓN Y USO DE TUPLES

Un "tuple" es como una lista que contiene elementos de cualquier valor y tipo. La principal diferencia entre un "tuple" y una lista es que los "tuples" no son mutables, es decir, no se pueden modificar a la hora de correr el programa. Para diferencia de un "tuple" y una lista visualmente es el uso de paréntesis o "()". Bueno, de hecho, no se usa mucho los paréntesis; se puede utilizar solo paréntesis y una coma. Otra forma de crear un tiple es utilizar el comando "tuple" y paréntesis. Utilizaremos la mastery anterior

Voy a modificar la primera línea sustituyendo los corchetes con paréntesis:

Vemos que en la línea 3 se quiere sustituir la posición número 1 de la lista "sel" de un 8 a un 3. Intentamos hacer esto con un "tuple" y esto nos mostrará en el output:

Los tupes tienen varias funciones. Uno sería el uso del comando "divmod". Este toma 2 argumentos y los regresa con 2 valores diferentes que serían el cociente y el residuo. Aquí un ejemplo:

Otra función sería el "zip" con listas. Tenemos 2 variables: una con "tuple" y otra con una lista. Juntamos esto con "zip" y esto nos dará: 

MASTERY 23 Creation and use of lists in Python

CREACIÓN Y USO DE LISTAS EN PYTHON

Una lista es como un grupo que contiene diferentes valores y elementos. Una ventaja de esas listas en Python es que se pueden poner cualquier tipo (integer, float, string). Para crear una lista se debe de ponder corchetes o "[]". Se puede poner cualquier valor o también variables o dejar la lista vacía.
Las listas tienen varias funciones, aquí un ejemplo de esto:
El .append sirve para agregar valores.
El .remove sirve para quitar valores
El .extend sirve para juntar una lista con otra.
Si escribimos como está en la línea 3, lo que hará es sustituir un valor en determinada posición con otro valor.
El comando "len" se utiliza para contar el número de valores que hay en una lista.
Aquí el output:
Se imprime la lista "ral" tal como está, se imprime la lista "sel" luego de agregarle el valor 6, remover 10, sustituir 8 por un 3 y juntar esa lista con la otra.
La lista es mutable, es decir, se le puede modificar los valores dentro cuando el programa corre el código.
Podemos utilizar varios métodos con estas listas. Aquí el ejemplo del QUIZ10.
Se creó una lista vacía, se declaró una variable y se puso un loop donde se agregará un valor diferente a la lista hasta 5 veces. Dentro de la función se crea otra lista para agregar los valores de la lista anterior ya hechos con una operación. El output sería esto:


MASTERY 22 When to use what type of repetition in a program

CUANDO UTILIZAR QUE TIPO DE REPETICIÓN USAR EN UN PROGRAMA

Ya hemos visto todos los tipos de repetición de un programa. Eso de cuando utilizarlos va depende del tipo del algoritmo que quieras utilizar. También es posible combinarlos para un código más grande. Pero OJO, no todos los tipos puedan funcionar. Hay que dejar claro los 3 tipos de repetición y con sus ejemplos debido a que ya se había explicado anteriormente en algunos WSQ y Masteries.

El uso de "while" se utiliza para que una operación se haga una y otra vez hasta que la condición se rompa. Un ejemplo sería el Método Babilónico. La variable "z" se rompe cuando este es igual a la variable "y".

El uso de "for" tiene muchos usos, pero lo principal es que establece ciertos límites y se hará la operación tantas veces hasta llegar a ese límite. Un ejemplo sería el de la Mastery 20 con el de las potencias. Se establece un límite en "b", es decir, se hará "b" la misma operación.

Y el uso de la recursión algorítmica  que se define la función a sí misma, es decir, se llama la función dentro de su misma función. El ejemplo sería el del Gran Común Divisor de la WSQ12. Dependiendo de los valores de "a" y "b", se restará esos argumentos dependiendo de la condición llamando la función en sí.

MASTERY 21 Use of recursion for repetitive algorithms

USO DE RECURSIÓN PARA ALGORITMOS REPETITIVOS

Ya hemos visto como funcionan los loops. Una cosa interesante de ellos es que pueden utilizarse a sí mismas. Para dejar más claro esto es que son algoritmos repetitivos y su función es definirse y utilizarse a sí misma. En Python se puede hacer esto. Un gran ejemplo de ello es la Factorial de la WSQ09.


   n! =
   1 \times 2 \times 3 \times 4 \times ... \times (n-1) \times n
.

   n! =
   \prod_{k=1}^n k
.

   n! =
   \begin{cases}
      1              & \text{si, } n = 0 \\
      (n-1)!\times n & \text{si, } n > 0
   \end{cases}
Vemos que dentro de la función de la Factorial, en la línea 7 se llama sí mismo. Esto sirve para definir "n!" luego de haber puesto las condiciones anteriores. Básicamente, es como un loop. También se llamó esa función dentro de otro loop y el output sería esto:
Otro gran ejemplo sería el de Gran Común Divisor en el WSQ12: 
Fórmula de Éuclides: 
GCD(a, a) = a
GCD(a, b) = gcd(a - b, b) si a > b
GCD(a, b) = gcd(a, b - a) si a < b

Se ve que en la línea 5 y en la línea 8 se llama la función GCD() con diferentes parámetros. Es otro loop y el output sería esto:
No en todos los casos se puede utilizar algoritmos recursivos, todo depende de qué tipo de problema estás enfrentando.

MASTERY 20 Use of loops with "for"

Uso de ciclos con "for"

Y hemos visto cómo funciona con "while", ahora hay que ver cómo funciona con "for". El "for", en mi opinión, tiene más usos que el "while". En una parte hay casos en donde se debe de utilizar "range" para poder determinar los límites y el número de veces que se contarán. Aquí un ejemplo:
Antes de irnos a los argumentos dentro del rango, "for" siempre utiliza una segunda variable que sería como cada valor dentro de un rango o una lista. También siempre se debe de utilizar "in" que se refiere a irse dentro del rango o lista determinada. En el "range" tiene 3 parámetros: el límite donde empezará, el otro límite donde terminará y la cantidad de valores que tomara. Si en el último parámetro se pone 1, se tomará cada valor en 1 en 1. Si es 2, se tomará los valores en 2 en 2 y así sucesivamente. Luego esta la operación que deseas poner y que se volverá a repetir hasta que llegue a cierto límite. Aquí saldría en el output:
Sin embargo, NO SIEMPRE SE UTILIZAN ESO 3 PARÁMERTROS. Aquí tengo un gran ejemplo de ello:
Hay que declarar una variable para el loop primero. Aquí vemos que solo se utilizó el "range" en solo en "b". Lo que quiere decir es que se tomará cada valor para poder multiplicar 2 variables hasta que llegué a la cantidad de "b", es decir, se hará la multiplicación "b" veces. Aquí en el output:

Otro uso del "for" sería en las listas. No es necesario poner un "range" para este tipo de cosas. Lo que hará "for" es tomar cada valor que está dentro de la lista para su operación hasta que ya no haya valores ahí. Aquí el código:
Aquí sería tomar tomar un valor, sumarlo, volver a la lista y volver a sumarlo con la respuesta anterior hasta llegar al límite. Aquí en el output:

WSQ16 CARS

CARROS

Para trabajar en este código se debe de usar un archivo con el sufijo que dice ".txt". Un archivo como estos podrías modificar los contenidos en estos, cerrar dlm archivo y a la hora de abrirlos, te muestran la última vez que modificaste. Aquí una imagen de un archivo .txt:
En Python, se debe utilizar el comando "open" para poder abrir el texto y utilizar los contenidos que tiene adentro. Aquí tuve que declarar una variable para usarlo en la función.
El objetivo de esto es sacar el promedio de 3 cifras relacionado con el uso de la gasolina con los autos utilizando el archivo .txt. Hay que poner la variable que abre el texto ("x" en este caso) dentro del parámetro de una función, declarar otras variables dentro de la función, tener que utilizar un loop para poder leer cada línea y considerar que cada línea es como una lista, es decir, cada caracter que hay están posisionados desde 0 (el primer carácter de la línea) hasta donde termine. Además, cada carácter es un "string", por lo que hay que convertirlos en integers o floats. También hay que buscar en qué posición quedan esas cifras. Aquí el código principal:
Para poder imprimir las variables con los resultados ya afuera de la función, se debe de poner esas variables separadas por comas dentro de un paréntesis, poner "=" con el nombre de la función y su argumento ( en este caso el texto). Aquí en el output:

Aquí el link con el código en GitHub: https://github.com/YeshuaAguilar02/PYTHON/blob/master/WSQ16

WS15 FINAL DASH

ÚLTIMO JALÓN

Ya faltan pocas horas para que se termine esto. No hay mucho que decir acerca de esto, por lo tanto seré breve. Cada WSQ está terminado, excepto la última y todavía me faltan completar Masteries. No sé si logro terminar debido a otras cosas que tenía que hacer. En cuanto a los conocimientos adquiridos, logré entender partes que no me cabían en la cabeza como el uso de loops. Sin embargo, todavía hay conceptos que necesito reforzar. Aunque recuerde cómo es el código, siempre necesito saber cómo funciona cada uno. Y ya falta poco para el examen final.

De ahí, ya no puedo decir mucho de esto. Solo es un último jalón para pasar.