Mi comentario acerca del curso…

En esta entrada intentaré ser lo más sincero posible, al igual que en mi vídeo en YouTube, mi ánimo no es el de ofender a nadie ni nada por el estilo pero creo que al ser una entrada exclusivamente dedicada a mi opinión acerca de algo creo que debo de ser lo más objetivo posible y narrar mi experiencia en este semestre.

RTEmagicC_Flipped-Classroom-Diagram02_01.png

Al hacer mi horario, por razones administrativas, yo no me encargué de hacer mi horario y al cuestionar a diversos compañeros acerca de la clase que impartía el profesor Ken Bauer las opiniones fueron diferentes, por un lado me comentaban que lo aprovechara mucho, incluso lo compararon con el personaje que interpreta Pat Morita en Karate Kid, el Señor Miyagi, debido a su extraña manera de enseñar, pero que no me confundiera de que el profesor Ken sabía de lo que hablaba, lo sabía. Por otro lado los comentarios acerca de las faltas o bien, de la manera de evaluar cayeron como gotas de lluvia, esto obviamente me hizo tener una pre-idea acerca de lo que iba a pasar en el semestre pero a un día antes de presentar el examen final puedo decir que como el primer día, tengo opiniones encontradas acerca del curso con la diferencia de que ahora las opiniones son exclusivamente mías.

En algún punto del semestre tuve el placer de reunirme con Ken en su oficina y platicamos acerca de muchísimas cosas, en esta plática me pude dar cuenta de que en realidad era una persona bastante inteligente y que lo que hablaba tenía fundamentos, me pareció una persona curiosa sobre todo después cuando lo veía por los pasillos con en la ciber plaza con sus grandes audífonos. El punto central y mi gran inquietud siempre fue acerca del concepto Flipped Learning y

Post-64231-this-is-fine-dog-fire-comic-Im-N7mp
Captura

Continue reading “Mi comentario acerca del curso…”

¡Muchas gracias, SciLab! – #WSQ14

Sin duda, el último #WQS de Ken me ayudó muchísimo en la última parte de este parcial. Justamente cuando tenía que hacer mi laboratorio de Matemáticas este software fue de gran ayuda y dejen les explico.

scilab_logo

Hay muchísimas herramientas a la hora de ayudarte un poco con los cálculos que incluyen álgebra u operaciones muy avanzadas como para hacerlos a mano, por mencionar algunos, Wolfram Alpha, Geogebra, Mhatics… Pero creo que no hay ninguno que le pase por encima a SciLab pues además de hacer análisis de números también puede hacer cálculos de matrices, procesamiento de señales y gráficas, sí, todo en una sola suite.

Si te estás preguntando de dónde sacó Ken la palabra clave NaN creo que deberías de echarle otro vistazo más de cerca a esta suite pues es claramente que estuvo influenciado por ella.

Aquí un ejemplo de estoy jugando con las matrices:

Captura

¿Por qué les dije que me fue de gran ayuda en esta última parte del parcial?

Bueno, les explico. En mi clase de Matemáticas así como en la de todos, supongo, dejan un laboratorio final en el que se incluyen muchísimos ejercicios de todo lo que ocurrió en el semestre. Lo difícil de esta situación es que a veces no te queda el tiempo suficiente como para hacerlo con detenimiento o algunos problemas sencillamente parecen imposibles. Aquí es cuando SciLab me ayudó, pues tenía las respuestas de ciertos problemas en segundos, como este:
Captura

Lo impresionante es que no tardó ni siquiera 5 segundos en terminar el cálculo, sencillamente es impresionante.

La sintaxis puedo decir que es un poco rara, pero si en algún punto le coges el truco lo demás irá como la seda. En serio, ¡Tienes que echarle un vistazo a esta herramienta! Aquí te dejo un link para que puedas seguir

Continue reading “¡Muchas gracias, SciLab! – #WSQ14”

¡Vectores! – #Quiz7

Creo que nunca dejaré de ver estas cosas, los vectores nos están invadiendo. Primero en mi clase de física, después en la clase de Ken y al final en la película que vi al finalizar el día. ¡Esto es increíble!

Este Quiz incluía un repaso a las listas y su función importante en este lenguaje de programación. Esta tarea consistía en introducir datos y calcular el producto cruz entre ellos, el producto cruz también se conoce como producto vectorial y  es así:

220px-Cross_product_parallelogram.svg Obviamente incluye vectores así que mi código resultó en el siguiente:

import random

dot_product = 0

n = int(input("Por favor, inserta el valor de n: "))

v = [None] * n
w = [None] * n

for i in range(0, n):
v[i] = random.randint(1, 100)
w[i] = random.randint(1, 100)

print(v)
print(w)

for i in range(0, n):
dot_product = dot_product + v[i] * w[i]

print("El producto escalar entre los 2 vectores es de " + str(dot_product))

En este código me serví de la enorme base de datos en forma de vídeos que es Youtube, precisamente me ayudó (sin saberlo) un chico colombiano, si quieren ver el vídeo pueden dar click aquí.

Mi código como siempre, está a su disposición en Github para manipularlo y mejorarlo.

Contador de palabras – #WSQ12

Aquí es cuando comenzamos a usar Python para cosas más interesantes y útiles en el mundo real. El problema a resolver en este #WSQ es indicarle a Python el nombre de un archivo, dejar que lo abra y posteriormente que busque cierta palabra dentro de el. Impresionante, ¿No es así?

palabras 1

Para resolver esta tarea Ken nos indicó un link que fue de muchísima ayuda, aunque si soy sincero, tengo que decir que mejor me vi el tutorial en Lynda.com ya que al ser más visuales hacen las cosas mucho más fáciles. Lamentablemente, sólo estaba disponible un tutorial orientado a Java pero me fue más que suficiente para poder aplicarlo a Python.

El código resultó en:

fname = input("Por favor, escribe el nombre del archivo que quieres buscar: ")
word = input("Exactamente, ¿Qué palabra estás buscando?: ").lower()
lower_case_word = word.lower()


def Counter(lower_case_word, fname):
counter = 0
with open(fname) as openfile:
for line in openfile:
line = line.lower()
counter += line.count(lower_case_word)
return(counter)

print("El numero total de la palabra " + str(word) + " en el archivo " + str(fname) + " es: " + str(Counter(lower_case_word, fname)))

Como siempre, si tienes alguna duda siempre puedes dejar un comentario o bien, checar mi código en Github, ahí está actualmente todo lo que hago. ¡Harías bien en darle un vistazo!

 

 

Euclids on the block! #Quiz6

Euclides es como mi dignidad, yo aseguro que existe pero nadie está de acuerdo con eso. Al igual que lo anterior dicho, la ente simplemente no puede ponerse de acuerdo sobre si Euclides existió o no, lo que no se puede negar ni de broma, es la utilidad de su algoritmo es la geometría.

Euclid_o_24537

Esta es la mejor imagen que pude encontrar.

El código resultó ser muy sencillo, creo que ha sido el más corto de todos pues la salida del programa sólo tenía que ser el MCD (máximo común divisor) y la función principal era portar el algoritmo de Euclides hacia el lenguaje de programación, el cual resultó en esto:

# --------------------- Este es el código correspondiente al Quiz 6 ----------------------------
def ade(a, b):
if a > b:
c = a - b
ade(b, c)
elif a < b:
c = b - a
ade(a, c)
else:
print(a)

ade(a=int(input("Vamos, introduce el primer número: ")), b=int(input("Ahora introduce el segundo número: ")))

Como siempre, mi código en Github está aquí.

 

Neil, an Alien #Quiz5

Este Quiz en especial fue uno de los más divertidos ya que encontré una imagen en Google me dio muchísima ternura y es la siguiente:

714e13b6-07eb-4ff2-9311-7cb8db52dd88

Cásate conmigo, Internet.

Si soy honesto, este Quiz me dió un poco de batalla, es decir… No fui capaz de resolverlo en clase y tuve que recurrir a la pagina de StackOverflow por enésima vez en el curso, pero al final de todo creo que fue la mejor idea que se me pudo haber ocurrido. Y mi código quedó de la siguiente manera:


# ------------------- Primera parte del código -------------------

def is_palindrome(word):
 mi = word.lower()
 temp = mi.replace(' ', '')
 if temp == temp[::-1]:
 print("¡Esta palabra es un palíndromo!")
 else:
 print("Lo sentimos, esto no es un palíndromo :(")

is_palindrome(word=str(input("Introduce una palabra para revisar si es un palíndromo o no: ")))

# ------------------- Segunda parte del código -------------------

lista_cool = int(input("Ingresa datos a esta lista (<=0 para terminar): "))
ins = []
while lista_cool > 0:
ins.append(lista_cool)
lista_cool = int(input("Ingresa datos a esta lista (<=0 para terminar): "))

print("Esta es la lista con los datos que introdujiste: ", ins)


def find_threes(x):
div = []
for i in x:
if i % 3 == 0:
div.append(i)
sum = 0
for i in range(0, len(div)):
sum = sum + div[i]
print("Estos son los números divisibles entre 3 de tu lista: ", div)
print("Y esta es la suma los numeros divisibles entre 3: ", sum)

find_threes(ins)

Aquí esta, como siempre, mi código en Github, dénse.

cara_enojada_emoji_pegatina_redonda-r064e88c660674edd9cc4110375f13d6d_v9waf_8byvr_324

Hey Ken, quiero mis puntos extra.

¡Fibonacci! #Quiz3

Hola de nuevo, y creo que después de mucho tiempo voy a postear de nuevo y esto se debe a que… ¡Me di cuenta que los Quizes también se deben de postear! Imaginarán mi cara cuando me di cuenta de esto, pero en fin, los códigos siempre estuvieron en mi Github así que esto es puro trámite, a continuación explicaré de lo que va cada parte de mi código.

portada-49

Sí, esta sucesión está en todos lados.

1: Esta parte del código tiene debe de tener dentro de él una función, dicha función deberá de calcular la distancia que existe entre 2 puntos en un plano X, Y y constó de lo siguiente:

# Este código te ayudará a encontrar la distancia entre 2 puntos y también te ayudará a encontrar la sucesión de números Fibonacci.

import math # Este módulo permite usar math.sqrt.

# ------------------- Primera parte del código -------------------

def distancia(x1, x2, y1, y2):
 d = math.sqrt(((x2 - x1)**2)+((y2 - y1)**2))
 print("La distancia es 5 unidades", d)

distancia(x1=int(input("Inserta el valor para x1: ")), y1=int(input("Inserta el valor para y1: ")),
x2=int(input("Inserta el valor para x2: ")), y2=int(input("Inserta el valor para y2: ")))

2: Esta parte de mi código se encarga de calcular una famosa sucesión en todo el universo, y además, creo que también es uno de los códigos más populares debido a que todos los maestros siempre se encargan de dejarlos en cualquier curso de programación. De cualquier modo, este es mi código:

 

# --------------------- Segunda parte del código -----------------

fi = 1.618033988749895


def fibonacci(n):
fibnum = (fi ** n - (1 - fi) ** n) / math.sqrt(5)
print("El resultado es", round(fibnum))

fibonacci(n=int(input("Introduce el número hasta el cuál quieres que llegue la serie Fibonacci: ")))

Este ha sido de lejos, uno de los Quizes más fáciles. A

Continue reading “¡Fibonacci! #Quiz3”

LychreL…?! ¡Cheryl! – #WQS11

El amor nos hace hacer cosas estúpidas, a algunos los incita a comprar más de un centenar de flores, a soportar el frío más intenso pero muy por encima de todos nosotros, Wade VanLandingham decidió nombrar así a un puñado de números de los cuales se tiene la sospecha que existen pero que hasta el momento su existencia no ha sido demostrada.

449px-California_196.svg

Ojalá hubiera una imagen mejor de un 196…

Un número de Lychrel va exactamente de lo siguiente:

Un número de Lychrel es un número natural que no puede formar un palíndromo a través del proceso iterativo repetitivo de invertir sus dígitos y sumar los números resultantes. Este proceso es a veces llamado algoritmo-196 (en inglés 196-algorithm), a raíz del número más famoso asociado con el proceso. En base decimal, no ha sido demostrado que los números de Lychrel existan, pero algunos, incluyendo el 196, son sospechosos por motivos estadísticos y de heurística. El nombre «Lychrel» fue acuñado por Wade VanLandingham como un anagrama aproximado de Cheryl, el nombre de su novia.

Con información de Wikipedia.

En mi opinión personal, creo que este es el código más difícil al que nuestro maestro nos ha sometido pues he tardado al menos 3 días enteros pensando en como resolverlo y al fin, este es mi código:

# Este programa te ayudará a encontrar los números Lychrel que probablemente existan en un rango determinado por tí.

def inverse(x):
x = str(x)
x = x[::-1]
x = int(x)
return x

numbers = []
lychrel = []
x = int(input(&quot;Ingresa el número del cual quieres comenzar a evaluar: &quot;))
x1 = int(input(&quot;Ingresa el número hasta el cual quieres evaluar: &quot;))
print(&quot;El rango de número que vamos a analizar es de %s a %s&quot; % (x, x1))
for i in range(x1-x+1):
numbers.append(x)
x = (x 
Sin título
Continue reading "LychreL…?! ¡Cheryl! – #WQS11"

¿Listos? #WSQ10

Ahora empezamos a ver otra forma de datos un poco más complejos de los que hemos visto con anterioridad, estoy hablando de tipos datos complejos que admiten una colección de datos. Aunque son 3 tipos, sólo vamos a hablar de las listas por el momento. Las listas son variables que permiten almacenar varios datos que pueden ser modificados en cualquier momento. Un ejemplo es el siguiente:

mi_lista = ['cadena de texto', 15, 2.8, 'otro dato', 25]

Para acceder a los datos que están contenidos en la lista sólo seleccionamos su número de índice. Estos inician de izquierda a derecha y comienzan por el 0.

print mi_lista[1]   # imprimirá 15
print mi_lista[1:4] # imprimirá 15, 2.8 y 'otro dato'
print mi_lista[-2]  # imprimirá 'otro dato'

La tarea consistía en pedirle al usuario 10 números del tipo flotante para posteriormente utilizarlos para encontrar el promedio, la suma y la desviación estándar. Y lo que hice para satisfacer todas estas condiciones esta aquí:

2016-02-23 (2).png

Podemos notar que utilicé una de las librerías de Python: statistics. Lo que esta función me permite utilizar es una amplia gama de funciones matemáticas que tienen que ver con la estadística y las que necesité para este código fueron:

statistics.mean(datos) # Esta función permite encontrar el promedio.
stdev()  # Esta función permite encontrar una muestra de la desviación estándar.

Y en fin, de esto se trató mi código. Una vez ejecutado esto es lo que pasa en la consola:

2016-02-23

A continuación adjunto mi código en GitHub.


Facto, facta… ¡Factoriales! #WSQ09

Este código se trata acerca de encontrar el resultado de el factorial de un número. Es decir si introducimos el número 5 y queremos encontrar el resultado de su factorial es: 1 * 2 * 3 * * 5 = 120. Sí lo sé, las matemáticas tienen nombres complicados para cosas sumamente sencillas.

El requerimiento para este código era no usar la función math.factorial(n) porque entonces el código se resumiría a una o 2 líneas así que lo tenemos que hacer de la forma ruda y aquí lo tenemos:

WSQ091

Este código fue hecho bajo un ciclo while.

Mientras que el segundo código lo hicimos así:

WSQ09

Este código fue hecho bajo un ciclo for.

En especial, esta tarea fue muy sencilla de hacer teniendo los conocimientos previos, este código lo había realizado en mi clase de Introducción a la Computación el semestre pasado con la diferencia que lo había realizado en el lenguaje C# y ahí podía usar do/while y eso hacía las cosas mucho más sencillas.

Para hacer una sentencia similar al do/while usé otro ciclo:

while True:
stuff()
if not condition():
break

Este ciclo lo encontré en la página StackOverflow. Tengo que decir que estos chicos si saben de lo que hablan.

A continuación anexo mi código en GitHub como siempre debería haberlo hecho.


# Este código es para encontrar el factorial de un número mediante un while loop.

while True:
    num = int(input("Venga, dame ese número: "))
    res = num - 1
    while res != 1:
        num *= res
        res -= 1
    print("Hola, tu resultado es {}".format(num))
    ques = str(input("¿Quieres intentarlo de nuevo?: "))
    if not ques == "y":
        break

# Este código es para encontrar el factorial de un número mediante un for loop.

while True:
    numb = int(input("Venga, dame ese número: "))
    fact 
Continue reading "Facto, facta… ¡Factoriales! #WSQ09"