Reto: Revisar Palindromos

--Originally published at Migue´s Blog

Este reto fue de los más complicados, consistía en revisar un texto y mostrar cuantos palindromos contiene, hubiera sido más sencillo si solo se analizaban palabras como:

Bob=boB

Pero también se tiene que analizar toda la frase para ver en donde inicia y en donde termina cada palindromo por ejemplo en:

Anita lava la tina=anita lava la tinA

captura-de-pantalla-de-2016-10-27-00-40-32

captura-de-pantalla-de-2016-10-27-00-40-50

captura-de-pantalla-de-2016-10-27-00-41-38

captura-de-pantalla-de-2016-10-27-00-47-56

Aquí se declaran todas las variables a utilizar a lo largo del programa, son muchas para no revolverlas entre ellas, se irán explicando conforme se utilicen

captura-de-pantalla-de-2016-10-27-00-48-17

Con esta parte se preparan las letras a analizar:

  • linea 16: se introduce la frase
  • 17: se cambian a minusculas las letras
  • 18: se eliminan los elementos de la lista “eliminar”
  • 20: se añade cada elemento a la lista “letras_espacios” incluyendo los espacios
  • 22: Se separan las palabras por espacios, lo que elimina a los espacios de la lista
  • 23: Añade cada palabra separada a una lista
  • 25: separa las palabras en letras y las añade a otra lista
  • 29: Voltea las letras

captura-de-pantalla-de-2016-10-27-00-48-48

En esta sección se analizan las letras para identificar los palindromos,

Se analiza cada letra de la lista de letras que tiene el orden correcto, con la lista de letras con el orden invertido, si las letras son iguales se añade esa letra a una lista de “palindromos”, si no se agrega un espacio para separar los palindromos ya identificados y se continuan analizando las siguientes letras.

captura-de-pantalla-de-2016-10-27-00-49-02

En esta parte ya se tienen todos los palindromos identificados, pero sin espacios, por ejemplo se imprimiria “anitalavalatina”

por lo que se comparan las letras de la lista “palindromos” con la de la lista “letras_espacios”, si son iguales los elementos se añade a la lista”palindromo_final”, si no es igual y en las lista “letras_espacios” no corresponde a un espacio se le

Continue reading "Reto: Revisar Palindromos"

Reto: Palabras por tipo

--Originally published at Migue´s Blog

En este reto el usuario proporciona una frase, el programa cuenta cuantas veces se repite cada palabra en la frase, y después te pregunta si quieres que te muestre una palabra en especifico.

captura-de-pantalla-de-2016-10-27-00-22-55captura-de-pantalla-de-2016-10-27-00-26-04

captura-de-pantalla-de-2016-10-27-00-29-16

En esta sección se prepara la frase para que el programa no tenga problemas al analizarla, en la linea 4 se encuentra la lista con los elementos a eliminar,

en la linea 5 se encuentra la lista que va a contar cada tipo de palabra, en la 6 se introduce la frase, la 7 la muestra, la 8 cambia todas las letras de la frase a minusculas, la 9 realiza un ciclo que elimina cada elemento incluido en la lista de la linea 4 y en la 11 se separa cada palabra de la frase como un elemento independiente de los otros.

captura-de-pantalla-de-2016-10-27-00-29-36

Con el ciclo “for” de la linea 12 cada palabra que se separo en la linea 11 se agrega a la lista “contador”, para que de esta manera cada elemento pueda ser contado

Con el ciclo for de la linea 14 se cuenta cuantas veces se repite cada elemento en la lista “contador”

captura-de-pantalla-de-2016-10-27-00-29-51

En la linea 16 se no se repite el elemento se no hace nada, si se repite se imprime cuantas veces se repitio ese elemento,

En la linea 21 se pregunta si se quiere contar una palabra en especifico, y se vuelve a contrar la palabra solicitada para volverla a mostrar en pantalla.

 

 


Reto: Ordenar Numeros de forma aleatoria

--Originally published at Migue´s Blog

En este reto se tienen que ordenar una lista de números de una forma totalmente aleatoria, python ordena los numeros al azar, si estan en orden los imprime, si no los vuelve a reacomodar al azar, lo cual no es muy conveniente, debido a que puede tardar mucho, pueden darse muchas coombinaciones e incluso repetirse, asi como puede salir al primer intento puede que salga despues de millones de intentos.

captura-de-pantalla-de-2016-10-27-00-00-47

captura-de-pantalla-de-2016-10-27-00-04-39

captura-de-pantalla-de-2016-10-27-00-08-00Primero importamos random, el cual lo utilizaremos más adelante, es lo que utiliza python para ordenar los numeros de una manera aleatoria.

captura-de-pantalla-de-2016-10-27-00-08-15

Aquí se declaran las variables que utilizaremos, “a” se utiliza para salir del ciclo una vez que los numeros estan ordenados, “b” es la variable con la compararemos los numeros para verificar si estan ordenados, “c” es el contador del numero de intentos que le tomó a la computadora para poder ordenar los numeros, “d” también es utilizado para salir del ciclo final, “y” se utiliza como contador para introducir los numeros a la lista, “numeros” es la lista que el usuario introduce y “ordenados” es la lista de los números en orden que se mostrará

captura-de-pantalla-de-2016-10-27-00-08-56

Con este ciclo se introducen los numeros a la lista, su funcionamiento se explica en el post sobre como acomodar los números de una forma mas sencilla.

captura-de-pantalla-de-2016-10-27-00-09-18

Con este ciclo se comienzan a revolver los numeros hasta que quedan en orden,

Como “a” la declaramos con valor de “0” entrará al ciclo.

Cada vez que se entre el ciclo se le añadirá 1 al contador de intentos “c” se volverán a revolver los números y se verificará si están en orden, excepto la primera vez que se entra, no se revuelven, solamente se le suma 1 al contador y se verifican.

con el ciclo “for” de la linea 23 se verifica el

Continue reading "Reto: Ordenar Numeros de forma aleatoria"

Semana 10: Ordenar Numeros.

--Originally published at Migue´s Blog

Este es un código muy sencillo, que nos muestra como ordenar los numeros de una lista de una manera sencilla utilizando funciones que ya contiene python, este programa se encuentra relacionado con el reto de ordenar numeros de forma aleatoria y con el reto Bubble Sort

captura-de-pantalla-de-2016-10-26-23-48-56captura-de-pantalla-de-2016-10-26-23-48-38

captura-de-pantalla-de-2016-10-26-23-52-15En esta parte se declaran las varibles, la variable “y” será el contador que cierre el ciclo en el cual se introducen los números, y la variable “numeros” es la lista en la que se van a almacenar los números introducidos para posteriormente ser ordenados

captura-de-pantalla-de-2016-10-26-23-52-34

En este ciclo se introducen los numeros a la lista, se introduce un numero por repetición, y se repite hasta que el contador alcance a “x”, el cual es la cantidad de numeros que queremos introducir a la lista

captura-de-pantalla-de-2016-10-26-23-52-59

Con “numeros.sort()” python ordena los numeros de menor a mayor de forma automática, por los que ya unicamente nos falta mostrar la lista de los números en la pantalla


Reto: Cuenta Palabras

--Originally published at Migue´s Blog

Este reto es muy simple y sencillo, lo que hace es pedirle al usuario una frase, para que posteriormente el programa cuente cuantos carácteres tiene esta frase

captura-de-pantalla-de-2016-10-26-23-38-43

captura-de-pantalla-de-2016-10-26-23-38-19

captura-de-pantalla-de-2016-10-26-23-41-37

En la linea 3 se muestra en pantalla que es lo que hace este programa

Y en la linea 4 se le pide al usuario que ingrese la frase la cual se guardara en la variable “y” como una cadena

captura-de-pantalla-de-2016-10-26-23-41-53la variable “letras” es el contador, el cual va a almacenar el número de caracteres de la frase

captura-de-pantalla-de-2016-10-26-23-42-04

Este ciclo se repite 1 vez por cada caracter almaccenado en “y”, y en cada repetición se le suma 1 al contador.

Por el último se muestra en pantalla el contador

 


Reto: Contar letras

--Originally published at Migue´s Blog

Este reto consiste en contar cuantas veces se repite cada letra en una oración.

Mi código es el siguiente

captura-de-pantalla-de-2016-10-26-23-23-47captura-de-pantalla-de-2016-10-26-23-25-10

captura-de-pantalla-de-2016-10-26-23-28-47

En estas lineas primero se le pide al usuario que introduzca una oración para guardarlo como una string en la variable oracion, y después se cambian todas las letras de la oración a minusculas para que el programa no tenga conflictos al distinguir entre mayusculas y minusculas.

captura-de-pantalla-de-2016-10-26-23-29-05

Este ciclo for se repite por cada letra en la oración, y en cada repeticion añade esa letra a la lista “x1”, de esta forma todas las letras de la oración se tienen por separado en una oración para poder ser contadas

captura-de-pantalla-de-2016-10-26-23-29-31

Este ciclo se repite por cada letra del abecedario, cada vez que se repite cuenta cuantas veces se repite esa letra en la lista “x1”

captura-de-pantalla-de-2016-10-26-23-29-43

Y por último se muestran los resultados en pantalla, las dos lineas de print hacen lo mismo, solo que la primera se muestra cuando solo se repite 1 vez y la segunda cuando se repite más veces, para que quede congruente la palabra con el número:

1 vez

2 veces

 


RETO: Bubble sort

--Originally published at Migue´s Blog

El reto consiste en ordenar una seríe de números mediante la ordenación burbuja, la cual consiste en ir comparando cada elemento de una serie con el elemento siguiente, si estan en un lugar incorrecto, este proceso se repite varias veces hasta que el elemento mayor es desplazado al final y por consiguiente el elemento menor es desplazado al inicio.

Para cumplir con el reto realice el siguiente código

captura-de-pantalla-de-2016-10-26-23-05-02

captura-de-pantalla-de-2016-10-26-23-06-46captura-de-pantalla-de-2016-10-26-23-08-22En las lineas 3 y 4 se declaran las variables, para que luego no ocurran problemas debido a que se utilizan variables sin un valor asignado,

La variable “y”  corresponde al contador, al cual se le va a sumar 1 cada vez que se repita el ciclo, para que cuando “y” alcance a “x”, el cual es el numero de datos que queremos introducir ya no entre al ciclo.

Numeros es la lista en la que se van a almacenar los números para después compararlos entre ellos.

captura-de-pantalla-de-2016-10-26-23-09-01

Este es el ciclo en el cual se introducen los numeros, primero se pregunta cuantos numeros se quieren introducir, para que este sea el número de veces que se repite el ciclo, y por cada repetición el usuario introduce otro número.

captura-de-pantalla-de-2016-10-26-23-09-21

En esta última parte es en donde se comparan los elementos el número de vecs que sea necesario hasta que queden acomodados en orden.

Primero con el ciclo “for” hacemos que ese ciclo se repita dependiendo del número de elementos de la lista, así nos aseguramos que se repite suficientes veces para que cada número quede en su lugar.

“n” es el lugar que ocupa el elemento de la lista, se utiliza para poder comparar un elemento con el siguiente, n=elemento, n+1=elemento a comparar.

Con el condicional “if x>(n+1)” hacemos que solo entre al ciclo si todavía quedan elementos por comparar, porque de lo

Continue reading "RETO: Bubble sort"

When to use what type of repetition in a program

--Originally published at Programming Fundaments

This is a simple one: we are going to define when to use wichtype of loop, so we are going to make it a brief one.

If you are going to use a list of varios result you can use the “for” loop. While (no pun intended) you can use “while” loop to make a result reapeat until this one is false. There is it!


Use of recursion for repetitive algorithms

--Originally published at Programming Fundaments

In this topic we need to define “recursion” this means to “run back” or to retunr to itself. For this topic we are going with some factorials. and what we want to acomplish is to avoid infinite loops. to explain it better:  Recursion in computer science is a method where the solution to a problem is based on solving smaller instances of the same problem. Example:

def factorial(n):
    if n == 1:
        return 1
    else:
        return n * factorial(n-1)

Then we add a couple of prints to the previous funtion

def factorial(n):
    print("factorial has been called with n = " + str(n))
    if n == 1:
        return 1
    else:
        res = n * factorial(n-1)
        print("intermediate result for ", n, " * factorial(" ,n-1, "): ",res)
        return res	

print(factorial(5))

Giving the next result:

factorial has been called with n = 5
factorial has been called with n = 4
factorial has been called with n = 3
factorial has been called with n = 2
factorial has been called with n = 1
intermediate result for  2  * factorial( 1 ):  2
intermediate result for  3  * factorial( 2 ):  6
intermediate result for  4  * factorial( 3 ):  24
intermediate result for  5  * factorial( 4 ):  120
120

Examples and more at: http://www.python-course.eu/recursive_functions.php


For loops

--Originally published at Programming Fundaments

Usually for loops are used for range loops (list) , usually the syntax is this:

for iterating_var in sequence:
   statements(s)

The difference with the “with” loops is that you don’t have to have “true” or “false” variables because it is used for lists. Example:

for letter in 'Python':     
   print 'Current Letter :', letter

Resulting in:

Current Letter : P
Current Letter : y
Current Letter : t
Current Letter : h
Current Letter : o
Current Letter : n

 

Examples and more from: https://www.tutorialspoint.com/python/python_for_loop.htm