Autor Tema: Python: Introducción.  (Leído 8787 veces)

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

Airblast

  • Gurú Pokémon
  • ****
  • Mensajes: 2969
  • Karma: +3/-0
    • Ver Perfil
    • Es una web buenísima

  • Total Badges: 28
    Badges: (View All)
    Nivel 5 Súper combo Combo
Python: Introducción.
« en: 20 de Noviembre de 2010, 01:44:42 am »
Quería hablar y enseñar un poco del funcionamiento de Python. Este es un lenguaje de programación de alto nivel, orientado a objetos, y, a mi parecer, más fácil y agradable para la vista que C++. También tiene de bueno que es multiplataforma, es decir, que se puede compilar el intérprete de este en cualquier sistema con compilador de C++, que son todos(o casi). Por ello, casi todos los programas programados en él casi siempre lo serán también.

En este momento hay dos ramas, las Python 2(2.7 es la última) y Python 3(3.1 es la última, creo). En Mac y Linux viene preinstalado, así que aunque si vas a usarlo seriamente es mejor instalar el más nuevo, se puede trastear un poco con él sin instalación, simplemente abriendo una terminal, introduciendo "python" y después los comandos Python uno por uno.

Bueno, basta de cháchara, y empezemos. Si bien en C el Hola Mundo es así:
Código: [Seleccionar]
#include<stdio>
main()
{
      printf("Hola mundo\n");
}
y en Java así:
Código: [Seleccionar]
public class Hola {
    public static void main(String[] args) {
        System.out.println("Hola mundo!");
    }
}
en Python es mucho más fácil, simplemente:(en 2.7)
Código: [Seleccionar]
print 'Hola mundo!'(también se pueden usar "" en lugar de '')

En Python, como hemos podido ver, no hace falta siempre declarar las clases básicas del programa, se hace automáticamente.

Un punto a tener en cuenta en Python son las sentencias de funciones, clases, condicionales, bucles... Si en casi todos los lenguajes de programación se usan llaves{}, en Python se usa sangrado, lo que obliga al código a ser cmás claro y limpio, quiero decir que TIENE que ser así
Código: [Seleccionar]
while True:  # Bucle infinito. Los comentarios se hacen con el símbolo # y terminan con la línea.
    txt = raw_imput('Introduzca 'quit' para salir, cualquier otra cosa para mostrarla en pantalla')    # Esto pedirá un texto
    if txt == 'quit':
        quit()   # Si el usuario introdució "quit", se cierra el programa
    else:
        print txt  # Si el usuario introdució cualquier otra cosa, la mostraremos en pantalla, y vuelta a empezar.
Este código pedirá un texto y los imprimirá hasta que el usuario introduzca "quit". Vemos que, en lugar de llaves, se usan espacios, los cuales son necesarios. En otros lenguajes se puede hacer así, lo que ayuda mucho a comprender el código, pero Python obliga así a hacer el código más legible.

Si la peña está de acuerdo y hay  suficiente público empezaré a hacer un tutorial.




Javisito

  • Super Moderador
  • Pokéxperto Omega
  • *
  • Mensajes: 10167
  • Karma: +22/-0
  • RIP Pokémon 1996-2019
    • Ver Perfil
    • Twitter salvaje
  • FC - 3DS: 0430-8927-0141

  • Total Badges: 53
    Badges: (View All)
    Décimo aniversario Noveno aniversario Nivel 8
Re:Python: Introducción.
« Respuesta #1 en: 20 de Noviembre de 2010, 03:41:09 am »
yo aceptare ese tutorial  :ook:
Javisoto

Brujita oficial del foro. Si eres una chica, tienes un 101% de que te diga guapa aun sin haberte visto. Además, si eres medio chica (Laura) también tienes esa posibilidad. Se sospecha que tiene una carpeta llamada ''Música de Mozart'' donde guarda la foto de los foreros. Foreras más que otra cosa. Aún así no trafica con las fotos y es buena gente. Mis respectos. Tiene el ph43r desgastado y es experto en su uso.

Nota: 9,2
Pokémon ha muerto, cuanto antes lo asumáis, mejor.

Michoh

  • Pokéxperto
  • **
  • Mensajes: 4958
  • Karma: +13/-0
  • You Will Be a Phoenix Heart
    • Ver Perfil
    • Email
  • FC - 3DS: 3308 4761 6655

  • Total Badges: 49
    Badges: (View All)
    Flooder - Edición 50 mensajes Flooder - Edición 25 mensajes Décimo aniversario
Re:Python: Introducción.
« Respuesta #2 en: 20 de Noviembre de 2010, 04:04:48 am »
Airblast, está muy bien, pero te has dejado lo más importante ¿Qué es Python?  :blink:


Sígueme en Twitter


Alcanzando un sueño

DusknoirMaster

  • Ayudante de Profesor
  • ****
  • Mensajes: 1043
  • Karma: +0/-0
  • DusknoirMaster Rules!
    • Ver Perfil

  • Total Badges: 27
    Badges: (View All)
    Nivel 5 Sexto aniversario Usuario de Windows
Re:Python: Introducción.
« Respuesta #3 en: 20 de Noviembre de 2010, 04:11:07 am »
WoW, me encanta, se un poquitín de Python, porque nunca me decanté por estudiarlo, (A primera vista no me gustaba....) pero ahora veo que no está nada mal, me gusta este tutorial, a ver si sigue.
No creo que pase mucho por Pokexperto, no hasta vacaciones....


Pedro's

  • Pokéxperto
  • **
  • Mensajes: 5679
  • Karma: +20/-0
  • Penguin Army Leader
    • Ver Perfil
    • KAWAHAL
    • Email

  • Total Badges: 46
    Badges: (View All)
    Décimo aniversario Noveno aniversario Octavo aniversario
Re:Python: Introducción.
« Respuesta #4 en: 20 de Noviembre de 2010, 04:33:14 am »
Te mereces un premio. Te ahorras la mitad de líneas que en C, cómo mola. :lol:

sklsmly

  • Ayudante de Entrenador
  • **
  • Mensajes: 103
  • Karma: +0/-0
    • Ver Perfil

  • Total Badges: 16
    Badges: (View All)
    Súper combo Combo Democrático
Re:Python: Introducción.
« Respuesta #5 en: 20 de Noviembre de 2010, 08:56:04 am »
Python... He oído hablar mucho de ello, pero nunca me había puesto a verlo... Vendría bien un tutorial, para conocer otro lenguaje. Uno más siempre es útil :D

Y es el primero que veo que usa los tabuladores como sistema de bloques.

¿Qué diferencias hay entre la versión 2 y 3?
by Alliare

_Julián_

  • Ayudante de Entrenador
  • **
  • Mensajes: 63
  • Karma: +1/-0
  • Realmlist: logon.wow-colombia.com
    • Ver Perfil
    • PokéProyecto
    • Email

  • Total Badges: 21
    Badges: (View All)
    Cinta Descuido Cinta Huella Súper combo
Re:Python: Introducción.
« Respuesta #6 en: 20 de Noviembre de 2010, 08:57:46 am »
Airblast, está muy bien, pero te has dejado lo más importante ¿Qué es Python?  :blink:
..... Este es un lenguaje de programación de alto nivel, orientado a objetos, y, a mi parecer, más fácil y agradable para la vista que C++.....
:unsure:



Yo traté de estudiar Python desde que vi el archivo de sendpkm.py de lordlandon, pero supongo que por ahora no me hace falta si al menos manejo bien otro lenguaje multiplataforma que en parte no se deja echar tanta tierra de este (porque si se elije más python en vez de java/php para web server (por ejemplo), debe ser por algo).

De todos modos si que me gustaría aprenderlo en algún momento, así que me gustaría ver que más nos puede decir  :ook:

Y ya de antemano tendría preguntas:

 - ¿Cual es el IDE por excelencia de Python? (por lo que busqué podría ser Komodo, pero este no es libre)

 - Cual se supone que debería ser el lenguaje a utilizar, ¿2. o 3.?. Claro, me imagino que el problema no es solamente ese, debe estar el asunto de retrocompativilidad y el campo en cual se va a trabajar, así que con base en eso.


PD: No sé si habrá visto este tutorial, pero me pareció genial como introductorio: http://www.korokithakis.net/tutorials/python

Alliare

  • Administrador
  • Pokéxperto Alpha
  • *
  • Mensajes: 7293
  • Karma: +4/-0
  • ...
    • Ver Perfil
    • Pokexperto
  • FC - 3DS: 2964-9235-9718

  • Total Badges: 47
    Badges: (View All)
    Noveno aniversario Octavo aniversario Séptimo aniversario
Re:Python: Introducción.
« Respuesta #7 en: 20 de Noviembre de 2010, 04:02:02 pm »
Yo tengo una pregunta, no es exactamente de Python, y ya sabéis que de esto sé poco. ¿Por qué esa manía de ahora de que todos los lenguajes de programación estén "orientados a objetos"?

Muchas gracias a Pájaro por la fima y avatar *-*

Airblast

  • Gurú Pokémon
  • ****
  • Mensajes: 2969
  • Karma: +3/-0
    • Ver Perfil
    • Es una web buenísima

  • Total Badges: 28
    Badges: (View All)
    Nivel 5 Súper combo Combo
Re:Python: Introducción.
« Respuesta #8 en: 20 de Noviembre de 2010, 06:53:27 pm »
Airblast, está muy bien, pero te has dejado lo más importante ¿Qué es Python?  :blink:
Sí lo pone. En la segunda frase.
:unsure:



Yo traté de estudiar Python desde que vi el archivo de sendpkm.py de lordlandon, pero supongo que por ahora no me hace falta si al menos manejo bien otro lenguaje multiplataforma que en parte no se deja echar tanta tierra de este (porque si se elije más python en vez de java/php para web server (por ejemplo), debe ser por algo).

De todos modos si que me gustaría aprenderlo en algún momento, así que me gustaría ver que más nos puede decir  :ook:

Y ya de antemano tendría preguntas:

 - ¿Cual es el IDE por excelencia de Python? (por lo que busqué podría ser Komodo, pero este no es libre)

 - Cual se supone que debería ser el lenguaje a utilizar, ¿2. o 3.?. Claro, me imagino que el problema no es solamente ese, debe estar el asunto de retrocompativilidad y el campo en cual se va a trabajar, así que con base en eso.


PD: No sé si habrá visto este tutorial, pero me pareció genial como introductorio: http://www.korokithakis.net/tutorials/python

Pues con el IDE que da Python mismo en su web yo creo que va...

En cuanto a lo de 2 y 3... la cosa está en que el 3 no es retrocompatible. Por lo pronto el 2 es el que manejo y el que tiene más módulos disponibles, así que es ese el que enseñaré, pero, por ejemplo, para mostrar strings, si en 2 es "print 'tal'" en 3 es "print('tal')"
Yo tengo una pregunta, no es exactamente de Python, y ya sabéis que de esto sé poco. ¿Por qué esa manía de ahora de que todos los lenguajes de programación estén "orientados a objetos"?
Bueno, los objetos son bastante útiles a la hora de programar, por ejemplo en cosas como juegos es muy útil tener objetos.


Bueno, ya que veo que hay aceptación, empezaré el tutorial en breve.

DusknoirMaster

  • Ayudante de Profesor
  • ****
  • Mensajes: 1043
  • Karma: +0/-0
  • DusknoirMaster Rules!
    • Ver Perfil

  • Total Badges: 27
    Badges: (View All)
    Nivel 5 Sexto aniversario Usuario de Windows
Re:Python: Introducción.
« Respuesta #9 en: 20 de Noviembre de 2010, 07:50:32 pm »
Heeeeee, orientado a objetos significa que el programa se hace con "objetos", pero no de juegos, si no de código, un objeto consta de dos partes, el header, o cabecera, donde se declaran variables, se asignas valores, etc, y un cuerpo, donde ocurre todo el mollo y se ejecuta el programa.
No creo que pase mucho por Pokexperto, no hasta vacaciones....


sklsmly

  • Ayudante de Entrenador
  • **
  • Mensajes: 103
  • Karma: +0/-0
    • Ver Perfil

  • Total Badges: 16
    Badges: (View All)
    Súper combo Combo Democrático
Re:Python: Introducción.
« Respuesta #10 en: 20 de Noviembre de 2010, 08:05:06 pm »
Los objetos se crearon por varios motivos. En parte por ser más cómodo tener un código que sabes que funciona bien todo junto y listo para ser reutilizado, que volver a picarlo. En parte también por motivos comerciales. Si creas unas funciones que quieres vender, no puedes entregar el código fuente, porque te lo copian. Asi que entregas un objeto precompilado, y te ahorras problemas (también estaban los archivos .obj, y ahora las librerías [.dll], pero más fácil con el objeto).

Y por que todos los SO gráficos (que yo sepa) ahora se basan en objetos. Asi que los lenguajes se han dado prisa por adaptarse.
by Alliare

Alliare

  • Administrador
  • Pokéxperto Alpha
  • *
  • Mensajes: 7293
  • Karma: +4/-0
  • ...
    • Ver Perfil
    • Pokexperto
  • FC - 3DS: 2964-9235-9718

  • Total Badges: 47
    Badges: (View All)
    Noveno aniversario Octavo aniversario Séptimo aniversario
Re:Python: Introducción.
« Respuesta #11 en: 20 de Noviembre de 2010, 09:25:32 pm »
No me he enterado de nada... ^^U.

Muchas gracias a Pájaro por la fima y avatar *-*

Airblast

  • Gurú Pokémon
  • ****
  • Mensajes: 2969
  • Karma: +3/-0
    • Ver Perfil
    • Es una web buenísima

  • Total Badges: 28
    Badges: (View All)
    Nivel 5 Súper combo Combo
Re:Python: Introducción.
« Respuesta #12 en: 21 de Noviembre de 2010, 02:17:16 am »
Heeeeee, orientado a objetos significa que el programa se hace con "objetos", pero no de juegos, si no de código, un objeto consta de dos partes, el header, o cabecera, donde se declaran variables, se asignas valores, etc, y un cuerpo, donde ocurre todo el mollo y se ejecuta el programa.
Claro, ya lo sabía, pero los objetos "de código" son por ejemplo muy útiles para hacer juegos. Por ejemplo.

DusknoirMaster

  • Ayudante de Profesor
  • ****
  • Mensajes: 1043
  • Karma: +0/-0
  • DusknoirMaster Rules!
    • Ver Perfil

  • Total Badges: 27
    Badges: (View All)
    Nivel 5 Sexto aniversario Usuario de Windows
Re:Python: Introducción.
« Respuesta #13 en: 21 de Noviembre de 2010, 04:17:22 am »
Pensaba que te referias a objetos "de un juego", como una caja, un enemigo, o inluso tu propio personaje....
No creo que pase mucho por Pokexperto, no hasta vacaciones....


Alliare

  • Administrador
  • Pokéxperto Alpha
  • *
  • Mensajes: 7293
  • Karma: +4/-0
  • ...
    • Ver Perfil
    • Pokexperto
  • FC - 3DS: 2964-9235-9718

  • Total Badges: 47
    Badges: (View All)
    Noveno aniversario Octavo aniversario Séptimo aniversario
Re:Python: Introducción.
« Respuesta #14 en: 21 de Noviembre de 2010, 06:54:25 am »
Y yo pensaba que me lo estabais explicando a mí ^^U.

Para empezar, ¿qué diantres es un objeto?

Muchas gracias a Pájaro por la fima y avatar *-*

Anty

  • Profesor Pokémon
  • *
  • Mensajes: 1211
  • Karma: +2/-1
    • Ver Perfil

  • Total Badges: 25
    Badges: (View All)
    Súper combo Combo Alborotador
Re:Python: Introducción.
« Respuesta #15 en: 21 de Noviembre de 2010, 07:29:23 am »
Lo he buscado por el ordenata y no lo encuentro, lo tendré que descargar.
INTRODUJO
Vaya, borraron la firma del servidor y ahora me resulta imposible encontrarla…

Ihhani

  • Usuario de honor
  • Sabio Pokémon
  • *
  • Mensajes: 2369
  • Karma: +7/-0
  • Alto Mando Lance
    • Ver Perfil

  • Total Badges: 25
    Badges: (View All)
    Cinta Huella Cinta Clásica Nivel 5
Re:Python: Introducción.
« Respuesta #16 en: 21 de Noviembre de 2010, 08:21:23 am »
Y yo pensaba que me lo estabais explicando a mí ^^U.

Para empezar, ¿qué diantres es un objeto?
Todo lo que tienes a tu alrededor son objetos.
El típico ejemplo del coche: un coche es un objeto. Este objeto tiene propiedades (cantidad de kilómetros, número de ruedas, color...), funciones o métodos (arrancar el coche, frenarlo...), y tiene ciertas características:
-Herencia: imagínate las características que tienen todos los coches (4 ruedas, función de arrancar y frenar...). Pues bien, podemos crear muchos tipos diferentes de coche, y para evitar tener que repetir en todos que tienen 4 ruedas, se dice que heredan del modelo "básico" de coche. Básicamente, habrá coches con más funciones (poner música, poner radio...) o con más propiedades (color diferente, más o menos asientos), pero todos ellos se basan en lo mismo.
-Abstracción: esto es la primera regla de la informática: si algo funciona, no lo toques. Básicamente, cuando un coche arranca te importa tres pepinos si lo que hace es una chispa para quemar gasolina. Lo que te importa es que cuando tu le dices que arranque, arranque. Abstracción significa que las funciones simplemente funcionan.
-Encapsulamiento: esto es algo que creo que han comentado por arriba, y similar a la abstracción. Un coche tiene un procedimiento interno muy complejo, pero desde fuera lo único que puedes hacer con él es mirar ciertas propiedades (no todas), y hacer varias funciones (no todas). Esto significa que un objeto tiene varias funciones/propiedades que lo comunican con el exterior, pero por lo demás, lo que hay en su interior permanece oculto.
-Reutilización: un coche lo puedes usar para ir desde aquí a Rusia, luego para desguazarlo y venderlo como chatarra...

La POO es algo bastante similar: se crean entidades abstractas, objetos, con ciertas propiedades y métodos. Estos objetos se basan en otros objetos, heredando de ellos sus propiedades y métodos. Estos objetos tienen funciones que pueden ser muy complejas por dentro, pero que funcionan y no nos interesa cómo. Estos objetos sólo se relacionan con otros objetos mediante algunos métodos/propiedades. Estos objetos se pueden reutilizar en varios programas distintos.

Espero no haberme equivocado en nada (si lo he hecho, que alguien me corrija).

Volviendo al tema: he estado buscando, pero no he conseguido encontrar ningún IDE libre para python que me interese (de momento quiero huir de Eclipse, pero me temo que al final es lo que tocará). ¿Alguna sugerencia?
« Última modificación: 21 de Noviembre de 2010, 08:23:50 am por Ihhani »


Jamás pensé que llegaría este momento, pero supongo que nada es para siempre.

Hace cuatro años desde que me registré por primera vez en estos foros. Desde entonces han sido mi hogar. Gracias a ellos he aprendido muchísimo, me he metido en el mundillo de la estrategia pokémon, he disfrutado como un enano... Pero hace ya tiempo que todo esto no me atrae. La gente por la cual seguí en foros después de dejar de jugar competitivamente se ha ido. Cada vez me siento menos unido a Pokémon.

Así que creo que en este momento lo más sensato es anunciar mi retirada. Puede que de vez en cuando me pase por otros foros. Nada más. Nunca he sido hombre de muchas palabras. Quiero pensar que puede que en un futuro nos volvamos a ver.

Mil gracias por todos esos momentos, estos 4 años han sido inolvidables.

_Julián_

  • Ayudante de Entrenador
  • **
  • Mensajes: 63
  • Karma: +1/-0
  • Realmlist: logon.wow-colombia.com
    • Ver Perfil
    • PokéProyecto
    • Email

  • Total Badges: 21
    Badges: (View All)
    Cinta Descuido Cinta Huella Súper combo
Re:Python: Introducción.
« Respuesta #17 en: 21 de Noviembre de 2010, 02:17:53 pm »
Ya todo han explicado que es un lenguaje orientado a objetos, pero me parece que no han dicho lo que va al principio de la explicación:

 Orientado a Objetos es un paradigma de programación. Que haya muchos lenguajes con este paradigma, es precisamente porque esta es la forma más fácil de imaginar la soluciones (aplicaciones ya compiladas y funcionales) y exponerlas para los usuarios, ahí es donde entra UML (pero esto ya es otra cosa).

Pues con el IDE que da Python mismo en su web yo creo que va...
Se refiere al mismo que va con el instalador, cierto: "IDLE (Python GUI)". Pues sí, este es el IDE que ellos ofrecen, al menos tiene el debugger, pero le falta mucho para ser un IDE completo y amigable (me parece a mi). De todos modos con esto uno se defiende.....

Volviendo al tema: he estado buscando, pero no he conseguido encontrar ningún IDE libre para python que me interese (de momento quiero huir de Eclipse, pero me temo que al final es lo que tocará). ¿Alguna sugerencia?
Igual yo para NetBeans, no sé pero me fastidia trabajar con el plugin que ellos ofrecen (será falta de costumbre también, pero bue...). Si alguien sabe de otro, que lo comente por favor (aunque me imagino que si no hemos encontrado es porque no debe haber algo así como sí ocurre para Java).

Ale, todos a aprender Python  :lol:

Alliare

  • Administrador
  • Pokéxperto Alpha
  • *
  • Mensajes: 7293
  • Karma: +4/-0
  • ...
    • Ver Perfil
    • Pokexperto
  • FC - 3DS: 2964-9235-9718

  • Total Badges: 47
    Badges: (View All)
    Noveno aniversario Octavo aniversario Séptimo aniversario
Re:Python: Introducción.
« Respuesta #18 en: 21 de Noviembre de 2010, 05:05:46 pm »
Una cosa muy curiosa...

Siempre que he preguntado lo que es un objeto me han puesto el ejemplo del coche. ¿Es que es un estándar, o algo?

Muchas gracias a Pájaro por la fima y avatar *-*

Ihhani

  • Usuario de honor
  • Sabio Pokémon
  • *
  • Mensajes: 2369
  • Karma: +7/-0
  • Alto Mando Lance
    • Ver Perfil

  • Total Badges: 25
    Badges: (View All)
    Cinta Huella Cinta Clásica Nivel 5
Re:Python: Introducción.
« Respuesta #19 en: 21 de Noviembre de 2010, 07:45:06 pm »
Es lo que aparece en todos los libros de programacion. xD


Jamás pensé que llegaría este momento, pero supongo que nada es para siempre.

Hace cuatro años desde que me registré por primera vez en estos foros. Desde entonces han sido mi hogar. Gracias a ellos he aprendido muchísimo, me he metido en el mundillo de la estrategia pokémon, he disfrutado como un enano... Pero hace ya tiempo que todo esto no me atrae. La gente por la cual seguí en foros después de dejar de jugar competitivamente se ha ido. Cada vez me siento menos unido a Pokémon.

Así que creo que en este momento lo más sensato es anunciar mi retirada. Puede que de vez en cuando me pase por otros foros. Nada más. Nunca he sido hombre de muchas palabras. Quiero pensar que puede que en un futuro nos volvamos a ver.

Mil gracias por todos esos momentos, estos 4 años han sido inolvidables.