viernes, 4 de noviembre de 2011

Inputs

sección de Inputs

import time
nombre=raw_input("Escriba nombre y presione enter:")
print "Hola "+nombre
time.sleep(5)

ingresas el nombre y presionas enter y te mostrara un saludo con tu nombre por 5 segundos.


Prints

Seccion para prints

import time
print "Hola Mundo"
time.sleep(5)

bueno el codigo no tiene mucho que explicar.


jueves, 3 de noviembre de 2011

Funciones de python

En este post colocare las descripciones de las diferentes funciones que iré aprendiendo de python.

Este listado lo saque de la siguiente página


Built-in Functions
abs() divmod() input() open() staticmethod()
all() enumerate() int() ord() str()
any() eval() isinstance() pow() sum()
basestring() execfile() issubclass() print() super()
bin() file() iter() property() tuple()
bool() filter() len() range() type()
bytearray() float() list() raw_input() unichr()
callable() format() locals() reduce() unicode()
chr() frozenset() long() reload() vars()
classmethod() getattr() map() repr() xrange()
cmp() globals() max() reversed() zip()
compile() hasattr() memoryview() round() __import__()
complex() hash() min() set() apply()
delattr() help() next() setattr() buffer()
dict() hex() object() slice() coerce()
dir() id() oct() sorted() intern()


str() = Pasa los valores numéricos a strings para poder acoplarlos a textos.

int() = Pasa los strings a valores enteros.

type() = Permite ver los tipos de datos que contiene una variable

Cálculos matematicos

En este post colocare los diferentes cálculos matematicos que se comentan en los distintos tutoriales para demostrar que python se puede usar como calculadora.

Elemplo : 3400/4.3*12



Algo importante que deben saber es lo siguiente cuando hagan calculos matematicos; si solo tiene numeros enteros (es decir, sin decimales) python dara el resultado tambien sin decimales, ejemplo: (10+1)/2


Cuando el resultado deberia ser 5.5, esto es una gran concha de mango para los que empiezan con python, asi que creo que es util que lo sepan desde el principio. Para que el resultado sea correcto, solo deben ponerle un "punto algo" (asi sea cero) a alguno de los valores, de esa manera python entiende que es una suma donde uno de los valores tiene mayor precision (10.0 es mas preciso que 10), y entonces da el resultado, tambien con precision, es decir con los decimales que corresponde:  (10.0+1)/2



Así en Python 3 si le dices a python 3/4 te responde 0.75

Hay una forma de que esto lo podamoshacer en  Python 2.5, 2.6 o 2.7


Existen también operaciones que se pueden realizar con strings como estas :



Elevar un numero es dela siguiente forma :
3**3



Variables en general

En este post iré colocando los ejemplos con variables en general de los diferentes tutoriales y ejemplos que sigo.

En programacion, las variables son palabras que utilizamos para almacenar cosas dentro de ellas. Por ejemplo, en Python podriamos meter la edad de 5 personas, dentro de variables que correspondan con
los nombres de esas 5 personas:

Luis = 24
Sasha = 21
Francisco = 28
Joaquin = 26
Neo = 29

De manera que si luego dijeramos;

Luis+Sasha+Francisco+Joaquin+Neo
Python entenderia:
24+21+28+26+29
y responderia: "128"

Si luego decimos
Neo = 30
y luego:
Luis+Sasha+Francisco+Joaquin+Neo
Python nos responderia ahora: "129"



porque todas las variables conservan siempre su valor, durante la ejecucion del programa, a menos que las borremos voluntariamente.

Como podemos ver en este ejemplo "Neo" y todos los demas nombres, no son mas que un "recipiente" en el cual metemos una informacion por un
momento.

Esto nos sirve para programar cosas estaticas, como por ejemplo darle la bienvenida a alguien, sin tener que escribir todo, sino solo reemplazando el nombre de la persona, mediante una variable;

Por ejemplo

nombre="Diego"
y luego le decimos a python:
"Hola, "+nombre+" como estas?"
Python responderia:
"Hola, Diego como estas?"


Otra cosa importante, no es lo mismo definir una variable asi:
Numero=20
que asi:
Numero="20"

En ambos casos Numero contiene un Veinte, pero una cosa es un Veinte escrito y otra cosa es un Veinte como numero. Quiza para nosotros es lo mismo, pero para una computadora, son cosas muy diferentes, y para saber que un veinte escrito, es decir, un caracter de Dos seguido de un caracter Cero, lo vas a usar como un numero para un calculo, tienes que decirselo expresamente, de lo contrario, son solo dos caracteres uno al lado del otro y no entiende que eso significa un numero.

Una gran ventaja de python es que no tienes que decirle expresamente que tipo de informacion vas a meter inicialmente en cada variable, el automaticamente lo sabe, segun lo escribas. En el primer caso sabe que es un numero con el que puede hacer calculos matematicos con gran facilidad, porque no tenia comillas, mientras en el segundo caso, son dos letras, primero un dos y luego un cero, porque tenia comillas, asi
que no sirve para hacer calculos matematicos, pero si sirve para sumarlo con otras letras y palabras para formar oraciones o hasta canciones.

Si haces esto:
>>> Numero = 26
>>> "Mi edad es: "+Numero



Python te dira que tiene un error, porque no puede sumar una cadena de texto con una variable que sirve es para hacer calculos matematicos.
De hecho te responde con:
TypeError: cannot concatenate 'str' and 'int' objects
lo que significa que tienes un error, solo puedes sumar cosas del mismo tipo, y ahi estas intentando sumar una palabra (str) con un numero (int)

Pero la solucion es simple, python solo tienes que ponerlo asi:
>>> Numero = 20
>>> "Mi edad es: "+str(Numero)



bueno en este tutorial nos dejan la siguiente tarea :

Investigar; como hacer lo contrario a lo ultimo, en vez de convertir un numero a su representacion en caracteres, como convertir un "20" a un 20 con el cual se puedan hacer operaciones matematicas.

bueno lo primero es mostrar el error que muestra al hacer el proceso erroneo :


bueno mirando el listado de las funciones encontre la solición :



describieron la función type() que es interesante para ver que tipo de dato tiene una variable.


martes, 25 de octubre de 2011

Un paso adelante

Bueno en el post anterior hable de un tutorial que enseña a hacer un juego y ahora lo que haré es mostrar los pasos que a mi por lo menos me interesa seguir después de eso.

Espero me puedan ayudar con algunas dudas que tendré y si estoy haciendo algo mal me avisan :D

SL2


Bueno siempre e soñado con tener un juego mio :D

y esta es la gran oportunidad después de seguir el tutorial anterior.

pero ahora lo que me interesa es hacer modificaciones en una base de datos para poder tener un juego más estable :)

Según lo que he leido por ahi por lo general en mython los tutoriales usan SQLite pero la verdad es que yo la use en mis proyectos con AIR de FLEX y la verdad es que no me gusto la base de datos por que la encontre un poco limitada, tonteras mias :)

Por lo que me interesa usar Mysql y para esto busque en google como instalar e intente instalar de varias formas y en todas tenia errores y en una me funciono supuestamente pero la verdad es que según creo una de als instalaciones erroneas es la que está funcionando :P esto debido a que despues de estos intentos fallidos se me ocurrio probar si avia tenido suerte con algúno y me funciono :P el problema es que no se con cual :D


pero bueno si alguno de ustedes encuentra cual era definitivamente me avisa si no una vez que formatee en unos 4 meses más lo intentare de nuevo y les aviso :D.

Estas dos versiones instale en esta me aparece un par de errores pero según lo que entiendo esta es la que está funcionando.

mysql-python



Está dice que instalo bien pero no estoy seguro de que haga algo :S





Bueno espero que a ustedes también les resulte :D

ya que a mi si me funciono :D



lunes, 24 de octubre de 2011

Crear un juego

Hola a todos .

los salud nuevamente y esta vez para contarles que encontré un tutoríal en el que se puede crear un juego en python de forma muy simple :D

la verdad es que me sorprendió lo simple que es :)

por lo que seguí el tutorial este es el enlace :

http://www.youtube.com/watch?v=ejodLulpowI&feature=related

En este post tiene el código de todo el juego que se desarrollo en el tutorial :


import random
class Jugador(object):
    def __init__(self, nombre="Jugador" ):
        self.nombre= nombre
        self.hp_max=random.randrange(45,55)
        self.mp_max=random.randrange(40,50)
        self.fuerza=random.randrange(3,7)
        self.inteligencia=random.randrange(2,5)
        self.hp=self.hp_max
        self.mp=self.mp_max
        self.habilidades=[Bola_de_fuego(),Golpe_letal(),Golpiar()]
    def __str__(self):
        return str(self.nombre)+" HP" +str(self.hp_max)+"/"+str(self.hp)

    def stats(self):
        print self.nombre
        print "Hp: ",self.hp_max,"(max) / ",self.hp
        print "Mp: ",self.mp_max, "(max)/ ", self.mp
        print "Fuerza:",self.fuerza
        print "Inteligencia:",self.inteligencia

    def eleccion(self):
        print "Elija una habilidad"
        print "0-Bola de fuego **10mp"
        print "1-Golpe Letal **5mp"
        print "2-Golpiar **no requiere mp)"
        x= input("? ")
        return x

class AI(object):
     def __init__(self):
        self.hp_max=random.randrange(45,55)
        self.mp_max=random.randrange(40,50)
        self.fuerza=random.randrange(3,7)
        self.inteligencia=random.randrange(2,5)
        self.hp=self.hp_max
        self.mp=self.mp_max
        self.habilidades=[Bola_de_fuego(),Golpe_letal(),Golpiar()]
     def __str__(self):
        return "AI: " + " HP" +str(self.hp_max)+"/"+str(self.hp)
     def stats(self):
        print "Hp: ",self.hp_max,"(max) / ",self.hp
        print "Mp: ",self.mp_max, "(max)/ ", self.mp
        print "Fuerza",self.fuerza
        print "Inteligencia",self.inteligencia
     def eleccion(self):
         x=random.randrange(0,3)
         return x

class Bola_de_fuego(object):
    def __init__(self):
        self.dano=0
        self.nombre="BOLA DE FUEGO"
    def devolver_ataque(self,origen):
        if origen.mp<10:
            return 0
        else:
            self.dano=random.randrange(13,19)+origen.inteligencia
            origen.mp+= -10
            return self.dano


class Golpe_letal(object):
    def __init__(self):
        self.nombre="GOLPE LETAL"
        self.dano=0
    def devolver_ataque(self,origen):
        if origen.mp<5:
            return 0
        else:
            self.dano=random.randrange(7,15)+origen.fuerza
            origen.mp-=5
            return self.dano


class Golpiar(object):
    def __init__(self):
        self.nombre="Golpiar"
        self.dano=0
    def devolver_ataque(self,origen):
        self.dano=origen.fuerza+origen.inteligencia
        return self.dano






def main():
    print " BIENVENIDOS A CHELINGAME\n"
    print "Modo de juego"
    print "1-Single Player"
    print "2-Multiplayer"
    modo=input("? ")
    if modo==1:
        j2=AI()

    if modo==2:
        print "ingrese su nombre j2"
        name=raw_input("? ")
        j2=Jugador(name)

    print "ingrese su nombre j1"
    name=raw_input("? ")
    j1=Jugador(name)
    print"STATS J1"
    j1.stats()
    tiempo=raw_input("..,.")
    print "STATS J2"
    j2.stats()
    tiempo=raw_input(".....")
    while j1.hp>0 and j2.hp>0:

        print "Turno J1"
        print j1
        print "mp",j1.mp
        print j2
        elec1=j1.eleccion()
        print "Se utilizo la hablidad",j1.habilidades[elec1].nombre
        dano1=j1.habilidades[elec1].devolver_ataque(j1)
        print "dano efectuado",dano1
        j2.hp-=dano1
        if j1.hp<=0 or j2.hp<=0:
            break
        tiempo=raw_input(".....")
        print "...."
        print "Turno J2"
        print j1
        print j2
        print "mp",j2.mp
        elec2=j2.eleccion()
        print "Se utilizo la hablidad",j2.habilidades[elec2].nombre
        dano2=j2.habilidades[elec2].devolver_ataque(j2)
        print "dano efectuado",dano2
        j1.hp-=dano2
        tiempo=raw_input(".....")
    if j1.hp>0:
        print "Gano j1"
    else:
        print "Gano j2"

main()





En los próximos post iré explicando como seguí desarrollando este juego.


Esto lo además de otro tutorial que sigo por lo que tendré varios post medios intercalados.


SL2

viernes, 14 de octubre de 2011

Nuevo desafio Google App Engine

Hola a todos

Después de seguir este primer tutorial de python la verdad es que me gusto mucho pero encontré gusto a poco.

Quería seguir viendo la segunda parte que es la que se dicto en Mejorandolaconferencia pero antes de seguir ese tutorial quería colocar los ejemplos funcionales de esto.

Leyendo por ahí recordé que google tiene un servicio donde nos presta sus servidores para efectuar desarrollos en python así que dije esta es la mía.

en tema no fue tan fácil por que yo estaba acostumbrado que en los servicios de google por lo general solicitando solo la cuenta gmail uno puede acceder a ellos. Pero en este caso no es así :S

El App Engine te pide tu numero de teléfono y te envía un cms con un código y una vez que tienes eso te permite el acceso. Pero esto al parecer no funciona para chile por lo que después de pasar muchas rabies y decepcionarme un poco de google comencé a buscar soluciones al tema por Internet ya que no hay que echarse a morir tan rápido.

:D

La cosa es que en un foro leí que google responde a los correos solicitando permiso en un formulario que está donde te pide el código que es para la gente que tiene problemas.

Envié un mensaje donde di mis datos y explique mi problema ( pude escribir un texto resumido en ingles describiendo el problema en breves palabras y después lo chequee en el traductor de google y tenia un solo error lo cual no es malo ara mi por lo menos).

Bueno espere que en algún momento alguien lo leyera "no sabia cuando claro". pero para mi agrado todo salio bien y me respondieron después de un rato  :D  ESE ES GOOGLE :D.

en el correo me indicaban que la cuanta ya estaba habilitada :D

bueno baje la aplicación de google app y la instale la ruta para descargarla es la siguiente :

http://googleappengine.googlecode.com/files/GoogleAppEngine-1.5.5.msi

Una vez instalado hay que pi char en file new aplication :


Colocamos el nombre de la aplicación que creamos en google app engine y le damos la ruta donde almacenarlo. esto nos creara los archivos necesarios para realizar un Hola Mundo :D

después vamos a edit preferences y realizamos la siguiente configuración :


Con esto lo seleccionamos y pinchamos Run. y nos montara un server de desarrollo en el localhost.

después seleccionamos el proyecto y pinchamos en browser y nos aparecerá la página como está quedando.

bueno eso por hoy y espero en estos días dedicarle más tiempo.

SL2



viernes, 30 de septiembre de 2011

Corres la primera aplicación web con Python

Bueno esta parte fue un poco compleja pero no es para morirse tampoco :D

primero tenemos que crear un proyecto nuevo :

C:\test>c:\Python27\python c:\Python27\Lib\site-packages\django-1.3.1-py2.7.egg\django\bin\django-admin.py startproject guykert_test


una vez que se crea el proyecto nos aparecerán los archivos en la carpeta :

después de esto usaremos el manager del proyecto para que vean los distintos comandos que contiene este programa :

C:\test\guykert_test>c:\Python27\python manage.py



esto es solo en caso de que quieran investigar más de las diferentes funciones.

iniciamos el proyecto para iniciar la aplicación :

C:\test\guykert_test>c:\Python27\python manage.py startapp newapp


Esto creara archivos adicionales en la carpeta del proyecto.

levantamos el servidor web para poder acceder a la aplicación.

C:\test\guykert_test>c:\Python27\python manage.py runserver


Si ven la url que les entrega este comando podrán ver e. servidor funcionando también pueden cambiar la ip por localhost y funciona.




configuraremos unas urls para tener unas vistas para realizar los ejercicios.

En el archivo urls.py que se encuentra en su proyecto  hay que dejarlo de esta forma :


from django.conf.urls.defaults import patterns, include, url

# Uncomment the next two lines to enable the admin:
# from django.contrib import admin
# admin.autodiscover()

urlpatterns = patterns('',
    # Examples:
    # url(r'^$', 'guykert_test.views.home', name='home'),
    # url(r'^guykert_test/', include('guykert_test.foo.urls')),

    # Uncomment the admin/doc line below to enable admin documentation:
    # url(r'^admin/doc/', include('django.contrib.admindocs.urls')),

    # Uncomment the next line to enable the admin:
    # url(r'^admin/', include(admin.site.urls)),

    (r'^newapp/$', 'newapp.views.index'),

)



En la carpeta newapp vemos el archivo view.py : 

# Create your views here.
from django.http import HttpResponse

def index(request):
    return HttpResponse("Hello, world. You're at the poll index.")



Lo guardamos y revisamos el en internet la url para revisarlo :

http://localhost:8000/newapp/

esto es en mi caso 

ahora haremos correr los ejemplos de los post anteriores :


# Create your views here.
from django.http import HttpResponse
from twython import Twython

def index(request):
    screen_name= "@MaestroRoshi"
    twitter = Twython()
    followers = twitter.getFollowersIDs( screen_name = screen_name )
    return HttpResponse(followers)





lo que nos entrega los ids.



ahora el public time line.


# Create your views here.
from django.http import HttpResponse
from twython import Twython

def index(request):
    screen_name= "@MaestroRoshi"
    twitter = Twython()
    tweets = twitter.getPublicTimeline( screen_name = screen_name )
    return HttpResponse(tweets)



este es el resultado  yo no me manejo mucho en Twitter por lo que si alguien me explica en twitter donde encuentro esto serìa ideal :D



bueno esto es lo que corresponde al curso de @ajamaica que se dicto en mejorando.la.

la verdad es que es un tutorial muy entretenido :D

espero que lo vean.

SL2

viernes, 16 de septiembre de 2011

Como sacar los Trends del día de hoy

Siguiendo  con el curso de python que estaba viendo en mejorando.la que está cursando @ajamaica en esta oportunidad veremos como sacar los Trends del día de hoy.

Lo primero que hacemos es llamar a la librería de Twython

from twython import Twython

Luego asignamos el usuario de twitter que queremos ver a la variable usuario :

usuario = "GuykertPlc"

Asignamos el Twython al objeto twitter :

twitter = Twython()


Asignamos los trends a la variable results

results = twitter.getDailyTrends()

creamos el siclo que lo seguira

for time, trend_list in results['trends'].iteritems() :

imprimimos la fecha

  print time

y por cada día creamos un nuevo siclo que recorrera los trends

for trend in trend_list :

y luego imprimimos los trends

print trend['query']



SL2

jueves, 15 de septiembre de 2011

Desplegar el Public Time Line

esta vez publicaremos el Public Time Line y para esto seguiremos los siguientes pasos :

Lo primero que hacemos es llamar a la librería de Twython

from twython import Twython

Luego asignamos el usuario de twitter que queremos ver a la variable usuario :

usuario = "GuykertPlc"

Asignamos el Twython al objeto twitter :

twitter = Twython()



En la variable tweets asignamos nuestro time line :


tweets = twitter.getPublicTimeline( screen_name = usuario )


luego hacemos un siclo for que recorrerá tweets y un print que desplegara la información


for tweet in tweets :
     print tweet['user']['name'].encode('utf-8')
print tweet['text'].encode('utf-8')










bueno esto supuestamente me funciono pero la verdad es que no estoy seguro de lo que me tenía que mostrar :S


según lo que averigüé es que debería mostrarme lo mismo que tengo en mi bandeja del twitter pero no es lo mismo :S


si alguien sabe que onda me avisa por favor.


SL2

Saber que usuarios nos están siguiendo

En esta ocasión listaremos los usuarios que nos siguen :D

Es interesante saber que la información de twitter se puede obtener de una forma tan facil :D

Lo primero que hacemos es llamar a la librería de Twython

from twython import Twython

Luego asignamos el usuario de twitter que queremos ver a la variable usuario :

usuario = "GuykertPlc"

Asignamos el Twython al objeto twitter :

twitter = Twython()

En la variable followers asignamos los id de los followers y le pasamos como dato el nombre de usuario :

followers = twitter.getFollowersIDs( screen_name = usuario )

luego hacemos un siclo for que recorrerá followers y un print que desplegara la información  :


for follower_id in followers :
print "Usuario %d sigue a %s " % (follower_id,usuario)




esto fue muy fácil y espero que no les cueste :D

Listar de 1 a 10

Bueno en el tutorial de MEJORANDO.LA @ajamaica nos muestra un comando de como se manejan los for para ver lo fácil que es :

for i in range(0,10) :
     print i



esto es super fácil :P

Instalando Twython

Esta es una librería que nos ayudará a trabajar con Twiter para los ejemplos que realizaremos más adelante.

para instalarlo hay que ir en la consola a la carpeta donde está python y colocar lo siguiente :

pip install twithon


En caso de que no les funcione el comando ejecútenlo dentro de la carpeta Script.


Y eso sería todo :)

miércoles, 14 de septiembre de 2011

Instalar pip

instalaremos pip que es un manejador de paquetes como easy_install pero maneja mucho más paquetes y está mucho más actualizado.

una vez en la carpeta Python hay que ejecutar el comando :

easy_install pip






Esto fue fácil :D




Después de formatear seguí estos pasos y no me funciono y averiguando por ahí encontre que hay que ejecutar el comando dentro de la carpeta Scripts. 


Después de eso no tuve problemas.




SL2