Dudas en aprendizaje python

Iniciado por dairus20, 13 Mayo 2014, 09:59 AM

0 Miembros y 1 Visitante están viendo este tema.

dairus20

Saludos, llevo 1 mes o así aprendiendo python, he leído bastante y ya entiendo conceptos como definiciones, funciones, variables, tipos de datos, clases, herencia en programación orientada a objetos etc.

Pero me surje un problema, es que no se como solucionar un problema para escribirlo en python, me explico si por ejemplo quiero implantar la serie de fibonacci en python, no se como hacerlo, se que ya hay escrito codigo para python, pero me gustaría que yo fuese capaz de escribirlo y desarrollar yo mismo el algoritmo.

A parte de eso, he buscado por ejemplo algoritmos matemáticos simples para implantarlo en python y no soy capaz de hacerlo.

No se si antes de meterme en python debo tener alguna teoría básica de algoritmia o algo así, python es mi primer lenguaje de programación, y me gustaria tener una buena base para poder hacer proyectos grandes.


Espero que me haya explicado bien, gracias de antemano.

#Aitor

#1
No se si antes de meterme en python debo tener alguna teoría básica de algoritmia o algo así, python es mi primer lenguaje de programación, y me gustaria tener una buena base para poder hacer proyectos grandes.

Desde mi punto de vista yo creo que se trata más de 'logística'. Fibonacci es muy simple y solo es tener una variable auxiliar e ir sumando en cada ciclo el número anterior.

(Quizá estoy metiendo la pata, pues nunca me interesé en python, pero al menos en c++ y en la mayoría de nivel alto se hace así)

Yo creo que solo tienes que darle un poco más al coco, o que sé yo, buscar un lenguaje que te guste más. (Pero creo que esto último no será el problema)

No obstante, te dejo este link, ya que estás hablando de la secuencia de fibonacci.
http://www.minidosis.org/#/actividades/Cpp.Secuencias.Fibonacci.vid

Es para c++, pero Pau Fernandez a mi forma de 'entender', explica muy bien y creo que lo importante no está en el lenguaje (en este caso python), si no entender qué es la secuencia y como funciona... y yo creo que aunque la explicación este orientada a c++, lo vas a entender para python.

Ya nos contarás como te fue, y a darle al coco.

Saludos!
Mi algoritmo en PHP (estupideces y más).
Código (php) [Seleccionar]
while($Se_feliz){
  Piensa_un_OBJETIVO(); // Sin excusas!
  if($Tienes_un_objetivo){
    Suspira(); // Sé paciente.
    if($Consigues_el_objetivo){ echo "¡Felicidades #Aitor!";return;
      //RETURN; ¿O volvemos a empezar?
    }else{
      Inténtalo_de_nuevo();
    }
  }
}

tincopasan

Hola:
      seguro estoy equivocado, pero creo que deberías empezar pensando la solución al problema en seudocódigo, o sea no importa el lenguaje que uses, en este caso python.
por ejemplo:
todos sabemos que la suseción de fibonaci es que cada "número" es la suma de los dos anteriores, o sea si tengo 0+1=1   1+1=2   1+2=3   2+3=5  3+5=8  etc.
entonces imaginemos que queremos realizar la secuencia:
1) tendríamos que saber donde terminar poque sino el resultado sería muyyyyy largo,
por lo tanto lo primero sería pedir el número final de nuestro programa
"pedir número final"
NF
2) ahora hay que asignar el valor de los números iniciales a unas variables
a= 0
b= 1
ese sería el comienzo de la serie
3)en algún lugar hay que guardar el resultado sino no lo veríamos
Resultado=lista
4)ahora hay saber que mientras a < NF
 realice una repetición
c= a+b
a=b
b=c
y devuelve c
guardar c en el resultado

No debe ser muy claro pero es una forma de seudocódigo solo hay que pasarlo a python que no te debe ser díficil si manejas variables, listas, bucles y pedido de datos

Gh057

#3
hola dairus20, puedes tanto presentar el planteo de forma gráfica como un diagrama de flujo  o bien en modo "texto en papel" como seudocódigo, como te indica tincopasan; ya que implica desarollar un algoritmo, entendiendo como algoritmo a una sucesión finita de pasos para resolver un problema.

esta forma de desarrollo de una solución es de tipo estructurado (por favor mírate el paradigma) a diferencia del paradigma orientado a objetos.

una buena forma de practicar es por ejemplo con temas cotidianos, plantéate "como hacer un té" e intenta acordarte y plasmar todos los pasos necesarios para realizarlo, ejemplo

1- agarro una jarra.
2- la lleno de agua.
3- agarro un fósforo, (si no tengo, un encendedor)
4- prendo la hornalla
5- pongo la jarra al fuego
6- espero que hierva (hacer otro proceso.. XD)
7- apagar el fuego
8- poner un saquito  de té en la taza.
9- tapar con un plato la taza
10 esperar 5 minutos...
11 degustar un buen té. XD

luego de ello, no contento, intenta mejorarlo. (y si quisieras hacerlo tanto para té en saquitos o en hebras? que pasa si no tuvieras té, no deberías primero asegurarte de ello antes de comenzar? etc... ahhhh te diste cuenta que nunca puse el agua en la taza?  ;D)

como verás, es algo demasiado simple, sin embargo la mayorí intenta programar sin tener en claro este concepto; si dedicas tiempo en él verás como de a poco tu código es más simple y más eficiente; sea el lenguaje en que lo implementes.

un cordial saludo.

(agrego) y el tiempo que piensas que haz perdido, lo terminas ganando al realizar la codificación mucho más rápido... es muy difícil que un programa no funcione de manera apropiada si partes de un buen algoritmo.
4 d0nd3 1r4 3l gh057? l4 r3d 3s 74n v4s74 3 1nf1n1t4...

dairus20

Saludos, muchas gracias a todos por su tiempo y por darme tantos consejos, he seguido adelante, ya estoy aprendiendo a programar con pygame, aunque aún tengo muchos errores pero voy tirando.

Además pygame como programo cosas gráficas me divierte y se me pasa el tiempo volando, tengo en mente hacer algún juego tipo pongo o space invader pero necesito saber más sobre pygame.

Pero a veces pienso que debería seguir estudiando más python a fondo, pero bueno un lenguaje de programación no se puede aprender en 1 semana xd.

Ahora solo me queda motivarme en seguir adelante y buscar algún proyecto para ir implantando en python.