Progresión Aritmetica, ejercicio PYTHON [Aprendiendo a Programar]
Una progresión aritmética es una sucesión de números tales que cada uno de ellos (salvo el primero) es igual al anterior más un número fijo llamado diferencia.
He estado Ojeando Algunas Progresiones que me parecen fantásticas por ejemplo tome el numero 9 de ejemplo y multipliquelo por 12 por ejemplo son 108, ahora sume cada uno de los numero de 108 obtendrá 9, por ejemplo multiplique 2*9 = 18 ahora sume 1+8 obtendrá 9, realmente las matemáticas pueden dejar de ser tan aburridas, en la escuela o en la universidad no nos enseñan a amarlas ni lo divertidas que pueden ser, en este Viaje de Aprendiendo a Programar voy a tratar de incentivarles con las matemáticas y la Programación :D, y usaremos las matemáticas para hacer cosas increíbles ya veremos, esperemos en Dios!!!
En esta ocasión les traigo uno de los ejercicios que me parecieron realmente interesante del libro Aprenda-a-pensar-como-programador-en-python Como ustedes saben disponible en formato [pdf] en Internet, el ejercicio es el de la progresión aritmética de un numero cualquiera por ejemplo n, al revisar a n si es par se divide entre 2 , pero si es impar se multiplica por 3 y se le suma uno hasta que el valor de n sea 1 por lo que estamos hablando de un ciclo y en programación deberemos de usar while ya que no sabemos cuando terminara :D
En programación usaremos FOR para los ciclos definidos, y WHILE para los no definidos o para los que necesitamos ingresar una cadena exacta o pulsar una tecla, en este caso no sabemos cuando terminara por lo que debemos usar WHILE ya que no es definido el final del ciclo...
Quedando asi en python:
n = int(input( "Introduce el valor de n: "))
while n != 1: # Aqui se revisa si n es diferente de 1
print n,
if n%2 == 0: # Aquí se revisa si n sea par
n = n/2 # Aquí se ejecuta la ecuación en caso de que n sea par
else: # Aquí se revisa si n sea impar implícitamente es par o no lo es
n = n*3+1 # Aquí se ejecuta la ecuación en caso de que n sea impar
Si ejecutamos el código nos preguntara el valor de n, si por ejemplo ingresamos 55 nos devolverá
55 166 83 250 125 376 188 94 47 142 71 214 107 322 161 484 242 121 364 182 91 274 137 412 206 103 310 155 466 233 700 350 175 526 263 790 395 1186 593 1780 890 445 1336 668 334 167 502 251 754 377 1132 566 283 850 425 1276 638 319 958 479 1438 719 2158 1079 3238 1619 4858 2429 7288 3644 1822 911 2734 1367 4102 2051 6154 3077 9232 4616 2308 1154 577 1732 866 433 1300 650 325 976 488 244 122 61 184 92 46 23 70 35 106 53 160 80 40 20 10 5 16 8 4 2
Si nos Fijamos la progresión no es tan fácil de ver y me valdré de esto para hacer un par de programas con "el código cesar" estoy totalmente seguro que lo que tengo en mente no sera tan facil de romper :D
El programa nos acaba de tirar un numero bastante extraño, pero no es Azar es la sucesión matemática de 55 para llegar a 1 utilizando los parámetros de las comparaciones para cada ecuación hecha anteriormente, ahora que pasaría si por ejemplo colocamos -2 entraríamos a un ciclo infinito ya que el numero negativo nunca se hará positivo entonces debemos colocar una excepción o mas bien un condicional si el numero es menor que 1 el programa no entra al bucle y exige solo números positivos
n = int(input( "Introduce el valor de N: "))
if n < 1:
print "Solo Numero positivos mayores que 0"
else:
while n != 1:
print n,
if n%2 == 0:
n = n/2
else:
n = n*3+1
¿Que pasa si el numero no es entero y por que? Por ejemplo ingresa 55.6
Hasta ahora no hemos hecho en realidad nada :S, por ejemplo podemos agregar un rango desde el numero este hasta a este, lo que quedaría así:
n = int(input( "Introduce el valor de N: "))
m = int(input( "Introduce el valor de M: "))
if (n or m) < 1:
print "Solo Numero positivos mayores que 0"
else:
for n in range(n,m):
while n != 1:
print n,
if n%2 == 0:
n = n/2
else:
n = n*3+1
print n
Y el programa pediría 2 números y luego imprimiría por pantalla todas las progresiones :D se preguntaran por que el print para cerrar el bucle, comprueben eliminando a ver que pasa :D o eliminen el que esta dentro del while...
Ahora mismo podríamos pensar para que nos sirve esto con un poquito de imaginación y entusiasmo podríamos hacer mucho, para la próxima le agregaremos algunas cosas mas y le daremos un uso, para adelantarles algo vamos a usar el código Cesar pero mas o menos en la 3 entrada
Dios les Bendiga y les colme de Sabiduría
