[Hilo Oficial] Python

-------

Todos sois libres de editarlo :)
Colaboro añadiendo el que para muchos es el mejor tutorial de este lenguaje, "Dive into python" (inmersión en python): http://www.gulic.org/almacen/diveintopython-5.4-es/index.html

El tutorial está en español y tiene licencia GNU-FDL [ok]
Gracias, me parece muy interesante el hilo.

Deberian de poner un subforo de programacion xD.
Bueno, he dejado explicado lo basico, si alguien me pudiera pasar una explicacion clara de como se compone la programacion orientada a objetos pues mejor, no se como explicarlo :s
lwordl escribió:Bueno, he dejado explicado lo basico, si alguien me pudiera pasar una explicacion clara de como se compone la programacion orientada a objetos pues mejor, no se como explicarlo :s


Te he pasado un pdf por pm.
lwordl escribió:Bueno, he dejado explicado lo basico, si alguien me pudiera pasar una explicacion clara de como se compone la programacion orientada a objetos pues mejor, no se como explicarlo :s

En un par de lineas, ventajas de la POO:
Ahorra código, aumenta el rendimiento, facilita la reutilización de código, facilita modificaciones/mejoras/modularidad de las aplicaciones, mejora la legibilidad de código y documentación del mismo, facilita el desarrollo de proyectos en grupo.
Buen hilo. Ahora con vistas a septiembre tendré que repasar hilos y sockets en python, así que lo mismo puedo aportar algo.
lworld escribió: ...

El tutorial que tienes enlazado de Antonia Arauzo, en realidad es de Antonio Arauzo (Es profesor mío [+risas] )
Korso10 escribió:Buen hilo. Ahora con vistas a septiembre tendré que repasar hilos y sockets en python, así que lo mismo puedo aportar algo.
lworld escribió: ...

El tutorial que tienes enlazado de Antonia Arauzo, en realidad es de Antonio Arauzo (Es profesor mío [+risas] )

O.o Perdon, no es la primera vez que cambio una o por una a , que mania -.- ... Actualizado ^^
En uno de los ejemplos se utiliza la función input en vez de raw_input, lo cual es bastante desaconsejable ya que input permite obtener variables en uso.

Ejemplo:
In [10]: a = 10

In [11]: input('>>')
>>a
Out[11]: 10

In [12]: raw_input('>>')
>>a
Out[12]: 'a'

http://docs.python.org/library/functions.html#input

Por otra parte hablaría de los comentarios, de las reglas para una sintaxis más clara como siempre identar con 4 espacios y no usar tabulaciones, que no es interpretado sino semiinterpretado, las diferencias entre Python 2.6/2.7 y 3.1, que todo en Python es un objeto, y hablaría de la POO, que es de lo más interesante en Python, además de los diferentes frameworks que existen.
In [13]: if isinstance('', object):
   ....:     print("Es un objeto!")
   ....:     
   ....:     
Es un objeto!

Además utilizaría print como función, para poder dar así el paso a Python 3.x, e incluir ejemplos con los módulos de red, que son realmente interesantes.

Saludos.
Sabia que mis preguntas acabarían dando el primer hilo oficial de python.

Imagen


xD gracias por hacerlo, yo no estaba por la labor, tu dices que estás aprendiendo, pero yo.. xD como que empecé hace 2 dias xd
Muy interesante, hace un tiempo que me llama la atención Python. Apenas voy empezando con esto de la programación (en Java/C#) así que espero poder aprender mucho por aquí XD
Heya, buen hilo sin duda.

Me parece bien esos pequeños resúmenes majetes que pones en el hilo principal, pero veo que estás pidiendo uno de Orientación a Objetos y no creo que sea algo que puedas poner en un solo hilo, quiero decir, es tema para decenas de páginas al menos para un resumen :P

Yo hace mil programaba Python y tal, es un buen lenguaje y permite hacer muchas cositas la verdad.

De hecho escribia cosillas, nah, 3-4 articulillos (me pilló cuando lo dejaba :P)

http://pyfox.zzl.org/ No es spam, total, ese blog lo rescaté de una muerte segura porque a un amigo le hacia falta leer algo.

Ahora me dedico más al lado oscuro de Microsoft.

Aun asi, si veo alguna dudilla y me acuerdo, os ayudaré.
Escribo para que me salga en "tus mensajes" el hilo más que nada XD .

Soy un novatillo en esto pero algo he jugado con Python y Pygame, hice un arkanoid y poco más, pero oye, funcionaba :p .

Pues eso, que mensaje que no aporta nada al hilo y que me pasaré por aquí.
Fox escribió:Heya, buen hilo sin duda.

Me parece bien esos pequeños resúmenes majetes que pones en el hilo principal, pero veo que estás pidiendo uno de Orientación a Objetos y no creo que sea algo que puedas poner en un solo hilo, quiero decir, es tema para decenas de páginas al menos para un resumen :P

Yo hace mil programaba Python y tal, es un buen lenguaje y permite hacer muchas cositas la verdad.

De hecho escribia cosillas, nah, 3-4 articulillos (me pilló cuando lo dejaba :P)

http://pyfox.zzl.org/ No es spam, total, ese blog lo rescaté de una muerte segura porque a un amigo le hacia falta leer algo.

Ahora me dedico más al lado oscuro de Microsoft.

Aun asi, si veo alguna dudilla y me acuerdo, os ayudaré.


Eso estaba pensando , podria ir en un pdf o en el propia wiki de eol y luego un link , haber que puedo hacer , faltan documentos de python en Español, con los metodos que hay y demas ( o yo no lo encuentro ) la verdad que se podria decir que estamos en el siglo de oro de python , bastantes personas se estan animando en varios foros y a vb le queda menos de vida uff
La idea es buena, yo mismo fomento la documentación en castellano, pero es bueno que todas y cada una de las personas que quieran estudiar programación, se mentalice que o aprende inglés (al menos a nivel técnico) o no llegarán a ningún lado.

Me vas a comparar los 3-4 libros de un lenguaje/libreria/xxx en castellano a los mas de 30 en inglés con algunas joyitas muy buenas.
Bueno aqui dejo un reto que tenia pendiente ^^

#Extractor de emails. Alpha 1.0
#...
#Primero recojemos datos
#
#Gracias por la ayuda Linkgl ^^
#
print """

Bienvenido, esta aplicacion sirve para poder filtrar los
emails que quieras. Saludos!!!

"""


log = raw_input("Directorio del log(Misma Carpeta Ej: emails.txt) --->")
filtrar = raw_input("Email a filtrar ej: @hotmail.com --->")
guardar = raw_input("Nombre del archivo final Ej: Filtrado.txt --->")



r = open(log,"r")
w = open(guardar, "a")
linea=r.readline()
while linea!="":
  if linea.find(filtrar)!=-1:
    w.write(linea)
  linea=r.readline()
r.close()
w.close()
print "Finalizado, el archivo es " , guardar   
 
#
#el if es
#if linea.find(filtrar)!=-1:
#porquee la funcion .find si no encuentra el parametro devuelve -1
#entonces hacemos que si devuelve -1  no lo escriba
#como vez es facil es cosa de saber que retorna cada funcion




Mas que nada es para cuando sacamos emails de una web y ejem queremos los hotmail para spamear por ejemplo pues aqui teneis.
Voy a reflotar (a estas horas [+risas] ) para añadir un chat sencillito echo en python. En unas horas me examino y acabo de terminarlo para practicar, se pueden ver entre otras cosas sockets e hilos (ni comparación en sencillez con C [mad] )

Cliente
import socket
import threading
import sys
import time

# Este hilo nos permite poder mostrar los mensajes del resto de usuarios
def hilo_escucha(socket_s):
    print "activada escucha"
    while(True):
        datos = socket_s.recv(1000)
        if datos == "exit":
            socket_s.close()
            exit(0)
        else:
            print datos       
       

# Comprobamos que hayamos especificado un nombre
if len(sys.argv) < 2:
    print "hay que indicar user"
    exit()
   
# Nos conectamos al servidor
socket_s = socket.socket()
if(len(sys.argv) == 3):
    socket_s.connect(("localhost",int(sys.argv[2])))
else:
    socket_s.connect(("localhost",9998))

# Comprobamos que el usuario no este repetido
socket_s.send(sys.argv[1])
conectado = socket_s.recv(1000)

if(conectado == "no"):
    print "usuario repetido"
    exit()
   
# Abrimos un hilo para recibir mensajes del resto
t = threading.Thread(target=hilo_escucha,args=(socket_s,))
t.start()

# Enviamos mensajes al servidor
while(True):
    datos = raw_input()
    socket_s.send(datos)
    # Si enviamos exit, esperamos al hilo que habiamos abierto y cerramos
    if(datos == "exit"):
        print("desconectando...")
        t.join()
        print("saliendo...")
        break
       
socket_s.close()


Servidor
import socket
import threading
import sys

# Lista de clientes
clientes = list()

# Con este hilo se gestiona un cliente del chat
def hilo_chat(socket_c,host_c):
    user = socket_c.recv(1000)
    print "<server> conectado cliente",user,"@",host_c
   
    # Comprobamos que el cliente no se repita y lo anadimos a la lista
    for cli in clientes:
        if(cli[1] == user):
            print "<server> cliente repetido"
            socket_c.send("no")
            socket_c.close()
            exit(0)
           
    clientes.append([socket_c,user,host_c])
    socket_c.send("si")
   
    # Informamos al resto
    for cli in clientes:
        recibido = "<server> conectado "+user
        cli[0].send(str(recibido))
   
    while(True):
        recibido = socket_c.recv(1000)
        print "<server> recibido",recibido,"de:",user
       
        # Si recibimos exit desconectamos al cliente
        if(recibido == "exit"):
            print "<server> desconectado cliente",user,"@",host_c
            # Eliminamos al cliente de la lista
            for cli in clientes:
                if(cli[1] == user):
                    cli[0].send(str("exit"))
                    clientes.remove(cli)
            # Informamos al resto
            for cli in clientes:
                recibido = "<server> "+user+" se desconecto..."
                cli[0].send(str(recibido))
                   
            socket_c.close()
            break
           
        # Si recibimos list mostramos la lista de clientes
        elif recibido == "list":
            recibido = "<server> Usuarios:\n"
            for cli in clientes:
                recibido += "\t+ "+cli[1]+"\n"
            socket_c.send(str(recibido))
       
        # En cualquier otro caso, mandamos el mensaje al resto   
        else:
            recibido = user+"> "+recibido
            for cli in clientes:
                if cli[1] != user:
                    cli[0].send(str(recibido))

# Parametros de conexion
socket_s = socket.socket()
if(len(sys.argv) > 1):
    socket_s.bind(("localhost",int(sys.argv[1])))
else:
    socket_s.bind(("localhost",9999))

socket_s.listen(1)

while(True):
    # Gestionamos cada cliente con un nuevo hilo
    socket_c, (host_c, puerto_c) = socket_s.accept()
    t = threading.Thread(target=hilo_chat, args=(socket_c,host_c))
    t.start()


Por si alguien quiere probarlo, primero se lanza el servidor con:
python server.py 1234

Donde server.py es el fichero (copiar y pegar) y 1234 el puerto de escucha (si se deja en blanco coge el 9999)

Y luego se lanzan tantos clientes como se quiera con:
python client.py pepe 1234

Donde client.py es el fichero (copiar y pegar), pepe es el nick del usuario y 1234 el puerto de escucha, que debe ser el mismo que el del servidor (si se deja en blanco coge el 9999)

A partir de ahora, en el cliente se pueden escribir mensajes y actuará a modo de chat. Si escribimos list saldra la lista de usuarios conectados, y si ponemos exit nos desconectaremos del servidor.

Hale, me voy a dormir [maszz]
Bueno he estado haciendo unas pruebas , me encontre con unos modulos, algo antiguos pero funcionales, antes de todo necesitamos
el modulo translate:
#!/usr/bin/python
#
# Peteris Krumins (peter@catonmat.net)
# http://www.catonmat.net  --  good coders code, great reuse
#
# http://www.catonmat.net/blog/python-library-for-google-translate/
#
# Code is licensed under MIT license.
#

from browser import Browser, BrowserError
from urllib import quote_plus
import  json


class TranslationError(Exception):
    pass

class Translator(object):
    translate_url = "http://ajax.googleapis.com/ajax/services/language/translate?v=1.0&q=%(message)s&langpair=%(from)s%%7C%(to)s"

    def __init__(self):
        self.browser = Browser()

    def translate(self, message, lang_to='en', lang_from=''):
        """
        Given a 'message' translate it from 'lang_from' to 'lang_to'.
        If 'lang_from' is empty, auto-detects the language.
        Returns the translated message.
        """

        if lang_to not in _languages:
            raise TranslationError, "Language %s is not supported as lang_to." % lang_to
        if lang_from not in _languages and lang_from != '':
            raise TranslationError, "Language %s is not supported as lang_from." % lang_from

        message = quote_plus(message)
        real_url = Translator.translate_url % { 'message': message,
                                                'from':    lang_from,
                                                'to':      lang_to }

        try:
            translation = self.browser.get_page(real_url)
            data = json.loads(translation)

            if data['responseStatus'] != 200:
                raise TranslationError, "Failed translating: %s" % data['responseDetails']

            return data['responseData']['translatedText']
        except BrowserError, e:
            raise TranslationError, "Failed translating (getting %s failed): %s" % (e.url, e.error)
        except ValueError, e:
            raise TranslationError, "Failed translating (json failed): %s" % e.message
        except KeyError, e:
            raise TranslationError, "Failed translating, response didn't contain the translation"

        return None

class DetectionError(Exception):
    pass

class Language(object):
    def __init__(self, lang, confidence, is_reliable):
        self.lang_code = lang
        self.lang = _languages[lang]
        self.confidence = confidence
        self.is_reliable = is_reliable

    def __repr__(self):
        return '<Language: %s (%s)>' % (self.lang_code, self.lang)

class LanguageDetector(object):
    detect_url = "http://ajax.googleapis.com/ajax/services/language/detect?v=1.0&q=%(message)s"

    def __init__(self):
        self.browser = Browser()

    def detect(self, message):
        """
        Given a 'message' detects its language.
        Returns Language object.
        """

        message = quote_plus(message)
        real_url = LanguageDetector.detect_url % { 'message': message }

        try:
            detection = self.browser.get_page(real_url)
            data = json.loads(detection)

            if data['responseStatus'] != 200:
                raise DetectError, "Failed detecting language: %s" % data['responseDetails']

            rd = data['responseData']
            return Language(rd['language'], rd['confidence'], rd['isReliable'])

        except BrowserError, e:
            raise DetectError, "Failed detecting language (getting %s failed): %s" % (e.url, e.error)
        except ValueError, e:
            raise DetectErrro, "Failed detecting language (json failed): %s" % e.message
        except KeyError, e:
            raise DetectError, "Failed detecting language, response didn't contain the necessary data"

        return None


_languages = {
  'af': 'Afrikaans',
  'sq': 'Albanian',
  'am': 'Amharic',
  'ar': 'Arabic',
  'hy': 'Armenian',
  'az': 'Azerbaijani',
  'eu': 'Basque',
  'be': 'Belarusian',
  'bn': 'Bengali',
  'bh': 'Bihari',
  'bg': 'Bulgarian',
  'my': 'Burmese',
  'ca': 'Catalan',
  'chr': 'Cherokee',
  'zh': 'Chinese',
  'zh-CN': 'Chinese_simplified',
  'zh-TW': 'Chinese_traditional',
  'hr': 'Croatian',
  'cs': 'Czech',
  'da': 'Danish',
  'dv': 'Dhivehi',
  'nl': 'Dutch',
  'en': 'English',
  'eo': 'Esperanto',
  'et': 'Estonian',
  'tl': 'Filipino',
  'fi': 'Finnish',
  'fr': 'French',
  'gl': 'Galician',
  'ka': 'Georgian',
  'de': 'German',
  'el': 'Greek',
  'gn': 'Guarani',
  'gu': 'Gujarati',
  'iw': 'Hebrew',
  'hi': 'Hindi',
  'hu': 'Hungarian',
  'is': 'Icelandic',
  'id': 'Indonesian',
  'iu': 'Inuktitut',
  'ga': 'Irish',
  'it': 'Italian',
  'ja': 'Japanese',
  'kn': 'Kannada',
  'kk': 'Kazakh',
  'km': 'Khmer',
  'ko': 'Korean',
  'ku': 'Kurdish',
  'ky': 'Kyrgyz',
  'lo': 'Laothian',
  'lv': 'Latvian',
  'lt': 'Lithuanian',
  'mk': 'Macedonian',
  'ms': 'Malay',
  'ml': 'Malayalam',
  'mt': 'Maltese',
  'mr': 'Marathi',
  'mn': 'Mongolian',
  'ne': 'Nepali',
  'no': 'Norwegian',
  'or': 'Oriya',
  'ps': 'Pashto',
  'fa': 'Persian',
  'pl': 'Polish',
  'pt-PT': 'Portuguese',
  'pa': 'Punjabi',
  'ro': 'Romanian',
  'ru': 'Russian',
  'sa': 'Sanskrit',
  'sr': 'Serbian',
  'sd': 'Sindhi',
  'si': 'Sinhalese',
  'sk': 'Slovak',
  'sl': 'Slovenian',
  'es': 'Spanish',
  'sw': 'Swahili',
  'sv': 'Swedish',
  'tg': 'Tajik',
  'ta': 'Tamil',
  'tl': 'Tagalog',
  'te': 'Telugu',
  'th': 'Thai',
  'bo': 'Tibetan',
  'tr': 'Turkish',
  'uk': 'Ukrainian',
  'ur': 'Urdu',
  'uz': 'Uzbek',
  'ug': 'Uighur',
  'vi': 'Vietnamese',
  'cy': 'Welsh',
  'yi': 'Yiddish'
};



Ahora, un ejemplo para utilizarlo

#Ejemplo de traducir un texto
from translate import Translator

traducir = Translator().translate

print """

Traductor, indique el texto que desea traducir
al ingles, se detecta el idioma automaticamente

"""

texto = raw_input("->")
print "-> " , texto
print """

-----------------
Traducido:
-----------------

"""

print traducir(texto, lang_to="en")
raw_input()




Ahora explicare unas cosas:

En el codigo vemos lang_to="en" , como se ve es al lenguaje que queremos traducir, en el modulo tenemos las iniciales, que pasa si no lo colocamos ? que por defecto se traducira al ingles.
Otras caracteristicas que no se ha añadido es lang_from="", si no colocamos el lenguaje que es, lo detectara automaticamente ( si el texto es largo no suele fallar )
Si se encuentra algun error , podemos utilizar TranslationError
Nota: Si se traduce algun lenguaje con caracteres extraños hay que añadir .encode('utf-8'), ej:
print traducir(texto, lang_to="en").encode('utf-8') (En este caso no)


Saludos podeis pasaros por zonaperezosos.eu para mas ejemplos
Alguien sabe añadir funciones en pyqt ? no lo encuentro por ningun lado Imagen
A qué te refieres con añadir funciones? que hagas click y éste haga algo? , si es así es mediante Signals .
http://www.commandprompt.com/community/pyqt/c1267
Hola a todos ,soy novato en python y es mi primer lenguaje de programación.
Ahora estoy empezando por las cosas mas facilitas y logicas,pero he llegado a un ejemplo de programa que no sé como hacer para que haga la operacion que le digo.
Os explico:
pido que el programa me pregunte un numero por ejemplo:
numero =raw_input
despues yo creo una variable con un valor:
variable = 12
entonces creo la formula:
resultado =numero*variable
Y aquí está el problema,que en vez de multiplicarme el número que yo entroduzco por 12 lo que hace el programa es repetime el numero 12 veces.
si fuera el 7 seria:
777777777777
Podriais decirme como seria el planteamiento correcto?
Gracias.
TRITONMSX escribió:Hola a todos ,soy novato en python y es mi primer lenguaje de programación.
Ahora estoy empezando por las cosas mas facilitas y logicas,pero he llegado a un ejemplo de programa que no sé como hacer para que haga la operacion que le digo.
Os explico:
pido que el programa me pregunte un numero por ejemplo:
numero =raw_input
despues yo creo una variable con un valor:
variable = 12
entonces creo la formula:
resultado =numero*variable
Y aquí está el problema,que en vez de multiplicarme el número que yo entroduzco por 12 lo que hace el programa es repetime el numero 12 veces.
si fuera el 7 seria:
777777777777
Podriais decirme como seria el planteamiento correcto?
Gracias.


Prueba esto:

numero=raw_input()
type(numero)


Multiplicar una cadena por un entero resulta en la cadena repetida <entero> veces.

raw_input() siempre devuelve una cadena. No estoy muy puesto en python, pero diría que tienes 2 opciones, convertir el resultado del raw_input a int ( int(raw_input()) ) o usar input(). En ambos casos, si no meten un entero, saltará una excepción (para input no es exáctamente así).

Una forma usando raw_input de controlar si se ha introducido un entero podría ser ésta:

try:
   entero=int(raw_input("Entero: "))
   print "Has introducido el entero %d" % entero
except:
   print "NO has introducido un entero"


Pero ya te digo, desconozco el lenguaje así que seguramente habrá opciones mejores.
TRITONMSX escribió:Hola a todos ,soy novato en python y es mi primer lenguaje de programación.
Ahora estoy empezando por las cosas mas facilitas y logicas,pero he llegado a un ejemplo de programa que no sé como hacer para que haga la operacion que le digo.
Os explico:
pido que el programa me pregunte un numero por ejemplo:
numero =raw_input
despues yo creo una variable con un valor:
variable = 12
entonces creo la formula:
resultado =numero*variable
Y aquí está el problema,que en vez de multiplicarme el número que yo entroduzco por 12 lo que hace el programa es repetime el numero 12 veces.
si fuera el 7 seria:
777777777777
Podriais decirme como seria el planteamiento correcto?
Gracias.

Como te han dicho deberias de hacerlo de la siguiente forma:

variable=12
numero=raw_input("->")
num = int(numero)
solucion = variable*num
Muchas gracias esa era la respuesta que estava buscando.
Un saludo
Bueno aprovecho para que veais un proyecto de unos Eolianos en python

hilo_desarrollo-pydd-alternativa-a-jdownloader-y-tucan_1532740_s10

Y asi de parte subo el post :)
Hola a todos ,ya solucioné el problema anterior ,solo tuve que decir que el resultado era un numero entero (int ),pero ahora tengo un problema parecido.
Estoy haciendo un calendario en el cual escribes un mes del año y tienen que salirte cosas relacionadas con ese mes como por ejemplo si escribes agosto te ponga que te vas de vacaciones...
Pues mirad:
print " seleccione un mes : "
mes = raw_input()
if mes == " enero " :
print " hace frio "



al ejecutar el programa me pregunta por el mes y al escrivir enero me dá error .
Como deveria escrivirlo de forma correcta para hacer lo que quiero ?.
Un saludo y gracias.
TRITONMSX escribió:Hola a todos ,ya solucioné el problema anterior ,solo tuve que decir que el resultado era un numero entero (int ),pero ahora tengo un problema parecido.
Estoy haciendo un calendario en el cual escribes un mes del año y tienen que salirte cosas relacionadas con ese mes como por ejemplo si escribes agosto te ponga que te vas de vacaciones...
Pues mirad:
print " seleccione un mes : "
mes = raw_input()
if mes == " enero " :
print " hace frio "



al ejecutar el programa me pregunta por el mes y al escrivir enero me dá error .
Como deveria escrivirlo de forma correcta para hacer lo que quiero ?.
Un saludo y gracias.

Por partes.

Trata de escribir algo mejor, a veces me dan ganas de pegarme cabezazos con la pared más cercana.

Después, nunca, en tu vida, digas "me da error" sin decir qué error te da. Si quieres que te ayuden por lo menos expón la única información que tienes, si no tenemos que ir adivinando y molestarnos en preguntarte lo que ya deberías haber explicado.

Con la información que das, no hay nada que podamos hacer. Si el código está bien indentado, el código es correcto.
Totalmente de acuerdo contigo,perdona mis faltas de ortografïa y por no ponerte el mensaje de error .
Lo que me ponia en el otro codigo era que " mes " no estaba definido .
He cambiado un poco el codigo y no me dá error pero no lo entiendo ,mirad :

print " elige un mes :"
mes = raw_input()
if mes == " enero " :
print " hola "
else :
print " hello "

Lo normal seria que el mensaje que apareciera en pantalla fuera " hola " ,no?.
En cambio lo que aparece es " hello ".
Que hago mal?
buenas, tengo curiosidad por aprender algo de python. por lo que voy viendo por ahí, hay dos versiones "funcionando", la 2.7 y la 3.1. cual me aconsajais que tome como referencia para ir empezando? por lógica debería ser la 3, no? pero bueno, por lo que leí la 2.7 aún está bastante más extendida, no?
gracias, salu2
mendorro escribió:buenas, tengo curiosidad por aprender algo de python. por lo que voy viendo por ahí, hay dos versiones "funcionando", la 2.7 y la 3.1. cual me aconsajais que tome como referencia para ir empezando? por lógica debería ser la 3, no? pero bueno, por lo que leí la 2.7 aún está bastante más extendida, no?
gracias, salu2

Yo empezaría por la 3. Siempre puedes tener ambas instaladas para ver las diferencias.
TRITONMSX escribió:Totalmente de acuerdo contigo,perdona mis faltas de ortografïa y por no ponerte el mensaje de error .
Lo que me ponia en el otro codigo era que " mes " no estaba definido .
He cambiado un poco el codigo y no me dá error pero no lo entiendo ,mirad :

print " elige un mes :"
mes = raw_input()
if mes == " enero " :
print " hola "
else :
print " hello "

Lo normal seria que el mensaje que apareciera en pantalla fuera " hola " ,no?.
En cambio lo que aparece es " hello ".
Que hago mal?


Seria:


print "elige un mes:"
mes = raw_input("->")
if mes == "enero":
   print " hola "
else :
   print " hello "


Cuida los espacios :)

Empieza con la 2.7 , hay mas documentación que la 3.0 , aunque si es la primera vez que programas tal vez html-php-El que quieras
no es la primera vez que programo, no soy experto ni mucho menos pero ya trabajé con C, algo de Java y sobre todo Visual Basic.
aunque haya más documentación, no merece la pena empezar ya con la última versión? sobre todo si cambia la sintaxis y alguna otra cosa más.

edito. no me había fijado en el mensaje de amuchmu, buscaré algún tutorial de la 3, gracias.
salu2
buenas, vuelvo otra vez por aquí a preguntar. sigo con python en la cabeza pero ahora si que me voy a poner con él porque me acaba de surgir un proyecto y ya aprovecho.
es una aplicación bastante sencilla, conectarme a una página web periódicamente, descargar datos y luego hacerles cuatro cuentas y representarlos gráficamente.
en principio es un proyecto personal que haré para linux, pero ya aprovechando la ocasión también querría que fuera portable a windows o por lo menos que me sirva para aplicaciones windows, y mi duda está en que interfaz gráfica usar. buscando por ahí lo que más encuentro son gtk y qt, cuál me recomendais? también me valen otras opciones si las veis mejores.
y como ide ahora mismo tengo eclipse con el plugin de python, tiro por ahí o me recomendais otra?
gracias, un saludo.
mendorro escribió:buenas, vuelvo otra vez por aquí a preguntar. sigo con python en la cabeza pero ahora si que me voy a poner con él porque me acaba de surgir un proyecto y ya aprovecho.
es una aplicación bastante sencilla, conectarme a una página web periódicamente, descargar datos y luego hacerles cuatro cuentas y representarlos gráficamente.
en principio es un proyecto personal que haré para linux, pero ya aprovechando la ocasión también querría que fuera portable a windows o por lo menos que me sirva para aplicaciones windows, y mi duda está en que interfaz gráfica usar. buscando por ahí lo que más encuentro son gtk y qt, cuál me recomendais? también me valen otras opciones si las veis mejores.
y como ide ahora mismo tengo eclipse con el plugin de python, tiro por ahí o me recomendais otra?
gracias, un saludo.


En cuanto a IDE yo no he usado mucho PyDev, pero he oído buenas cosas de él.
Y en cuanto a librerías de interfaz, tienes las Tk incluidas en Python (vienen a ser como swing en Java), aunque yo prefiero PyQt, que las he usado y me parecen bastante cómodas y potentes.

Ya que el hilo vuelve a tener vida, este año como trabajo para mi asignatura de Redes he hecho un reproductor de música web en Python (web.py), HTML5 y Javascript. Dejo por aquí un pantallazo y espero poder compartir el código después de exámenes. A ver si este verano lo pulo un poco (aunque funciona bastante bien).

Imagen
Que buena pinta tiene eso, me gustaría probarlo, esta disponibles, tengo ganas de echarle un ojo, lo has hecho a pelo o has usado algún framework tipo Django?

Ahora que me fijo, Korso10 eres de la UGR no? Aquí otro compañero más :)
Si, la verdad es que está bastante bastante guapo, visualmente sencillo pero a la vez chulo chulo.
Korso10 escribió:
mendorro escribió:buenas, vuelvo otra vez por aquí a preguntar. sigo con python en la cabeza pero ahora si que me voy a poner con él porque me acaba de surgir un proyecto y ya aprovecho.
es una aplicación bastante sencilla, conectarme a una página web periódicamente, descargar datos y luego hacerles cuatro cuentas y representarlos gráficamente.
en principio es un proyecto personal que haré para linux, pero ya aprovechando la ocasión también querría que fuera portable a windows o por lo menos que me sirva para aplicaciones windows, y mi duda está en que interfaz gráfica usar. buscando por ahí lo que más encuentro son gtk y qt, cuál me recomendais? también me valen otras opciones si las veis mejores.
y como ide ahora mismo tengo eclipse con el plugin de python, tiro por ahí o me recomendais otra?
gracias, un saludo.


En cuanto a IDE yo no he usado mucho PyDev, pero he oído buenas cosas de él.
Y en cuanto a librerías de interfaz, tienes las Tk incluidas en Python (vienen a ser como swing en Java), aunque yo prefiero PyQt, que las he usado y me parecen bastante cómodas y potentes.

Ya que el hilo vuelve a tener vida, este año como trabajo para mi asignatura de Redes he hecho un reproductor de música web en Python (web.py), HTML5 y Javascript. Dejo por aquí un pantallazo y espero poder compartir el código después de exámenes. A ver si este verano lo pulo un poco (aunque funciona bastante bien).

Imagen


ok gracias. buscaré a ver si lo que quiero es más fácil con gtk o qt. básicamente quiero poner en un formulario unas cuantas gráficas en las que pongo la evolución de unos datos, con matlab no tiene problema ninguno, pero así aprendo esto que le tenía ganas.

tú reproductor pinta bien :)
bueno chavales, después de andar buscando información me voy a meter con este lenguaje...me he bajado unos manuales y ya veré que tal se me da :)
Seguramente me pase por aquí muy a menudo.
Refloto el hilo!

Vengo a por una duda. Estoy utilizando el PYGAME para hacer unas pruebas de colisiones. Me lo estado mirando y creo que el problema esta en que no utilizo la función adecuada, hasta hace un rato estaba probando la "pygame.sprite.RenderUpdates" para definir los grupos de Sprites, pero luego he leído que sólo se puede utilizar con fondos sin animación, asi que he pasado a utilizar la "pygame.sprite.OrderedUpdates". Al lío, este es el código:
fons = Fons(0,0)
fons2 = Fons(0,-ALT)
prota = Protagonista(ANCHO/2,ALTO-30)
enemigo1 = Enemigo1(100,100)
marcador = Marcador(10,10)

#Creamos los grupos de Sprites
enemigos = pygame.sprite.OrderedUpdates(enemigo1)
jugador = pygame.sprite.OrderedUpdates(prota)

#Ponemos el reloj
reloj = pygame.time.Clock()

#Bucle principal del programa
jugando = True

while jugando:
#FPS (frames por segundo)
reloj.tick(60)
#Registro de eventos
for event in pygame.event.get():
if event.type == QUIT or ((event.type == KEYDOWN)and(event.key == K_ESCAPE)):
jugando = False

#Control de colisiones
if pygame.sprite.spritecollideany(prota, enemigos):             
print "Colisionan!"

#Guardamos las teclas pulsadas a la variable:
teclasPulsadas = pygame.key.get_pressed()

#Invocamos las iteraciones de los Sprites para habilitar el movimiento
jugador.update()
enemics.update()
fons.update()
fons2.update()

#Dibujamos los sprites en pantalla
pantalla.blit(fondo.image,(fondo.x,fondo.y))
pantalla.blit(fondo2.image,(fondo2.x,fondo2.y))
enemigos.draw(pantalla)
jugador.draw(pantalla)
#pantalla.blit(prota.image,(prota.x,prota.y))
#pantalla.blit(enemigo1.image,(enemigo1.x,enemigo1.y))
pantalla.blit(marcador.textoVida,(marcador.x,marcador.y))
pantalla.blit(marcador.textoPuntos,(marcador.x+180,marcador.y))

#Actualizamos la pantalla
pygame.display.update()

Con este código el juego funciona pero no se detectan entre el protagonista y el enemigo. Alguién que controle de PYGAME puede ver algun error?? A estas horas yo ya no veo un pijo.

Si quereis el código completo del juego os lo puedo pasar por MP, que lo tengo en catalan y he pasado de traducirlo todo [+risas]

Gracias!

EDIT: Por si quereis el código completo --> Archivo
Veo que el hilo esta bastante muerto... Vengo a por una duda, a ver si lo reanimo un poco [+risas].

Sobre la modulación del programa. Tengo un código que consta de unas constantes, una función, unos diccionarios definidos, varias clases y el bucle. Mi intención es dividir cada uno de ellos en archivos para un mejor entorno de trabajo, pero...

Me encuentro el problema de que una clase toma como referencia una variable de otra, de forma que al ejecutar el código no encuentra la referencia a ésta.

Para que me entendáis mejor, utilizo pygame y las dos clases son la del sprite del jugador y la del sprite del fondo (o scroll). A la segunda clase le digo que se empieza a mover cuando el sprite del protagonista esté en un punto determinado, pero el programa peta porque no tiene referencia entre las dos clases.

He probado de meter en cada archivo los "import" de cada clase y la del bucle pero me salen nuevos errores. Alguna sugerencia?

Gracias!
40 respuestas