domingo, 22 de julio de 2012

Python ... ejemplos prácticos no. 5


5. 1. Ejemplo de clases y objetos:
#defino la clase y sus propiedades

class Heroe:
    def __init__(self,nombre,pais,poderes):
        self.nombre=nombre
        self.pais=pais
        self.poderes=poderes

    def getNombre(self):
        return self.nombre

    def getPais(self):
        return self.pais

    def getPoderes(self):
        return self.poderes


#main, defino las instancias
spiderman= Heroe("spiderman","USA",['sentido aracnido','fuerza de araña','super agilidad','trepar muros'])

#spiderman
#imprimo los datos
print type(spiderman)
print "\nHeroe: ",spiderman.getNombre()
print "\nPais: ",spiderman.getPais()
print "\nPoderes: " ## puede ser print "\nPoderes: ",spiderman.getPoderes  pero lo muestra como lista

for i in spiderman.getPoderes():
    print i



5.2 Horoscopoc chino mejorado:

#ahora uso diccionarios
animales={0:"mono",1:"gallo",2:"perro",3:"cerdo",4:"rata",5:"buey",6:"tigre",7:"conejo",8:"dragon",9:"serpiente",10:"caballo",11:"cabra"}
anyos=[1981,1990,1994,1998,2002,2006,2009,2012]
resto=0
print "\t[Horoscopo chino en Pyhton]"
for i in anyos:
    resto=i%12
    print "si naciste en: ",i,"  te correscpone el signo del: ",animales[resto]

5.3 Combinación y Permutación:

def factorial(x):
    if (x==0):
        return 1
    else:
        return x * factorial(x-1)

def permutacion(n,r):
    menor=0
    mayor=0
    if(n<r):
        menor=n
        mayor=r
    else:
        menor=r
        mayor=n

    return factorial(mayor)/factorial(mayor-menor)


def combinatorio(n,r):
    menor=0
    mayor=0
    if(n<r):
        menor=n
        mayor=r
    else:
        menor=r
        mayor=n

    return (factorial(mayor)/(factorial(mayor) * factorial(mayor-menor)))


print permutacion(10,9)
print combinatorio(10,9)


3 comentarios:

  1. Este comentario ha sido eliminado por el autor.

    ResponderEliminar
  2. mmm... blogger me está haciendo una broma y me duplicó comentario, que eliminé y de del duplicado no quedó ninguno... En fin.

    Solo para decirte que está muy bien esto que haces de dar el kick-off con otros lenguajes, pero, creo que te la has pasado de Javalero jejeje. Recuerda que en Python todo atributo/propiedad/método definido es público a no ser que le pongas "__" al principio, haciendo que en la clase de Heroe los getters y setters estén de sobra. Si te gusta seguir ese principio de usar getters y setters bien puedes nombrar a los atributos "self.__nombre = nombre", de esa manera necesitarás un método que pueda acceder o escribir dicha propiedad.

    Respecto al horóscopo, creo que se pasa de verborrea, ¿para qué definir un diccionario con índice siendo que con un arreglo tendrás los mismos índices?. Y en lugar de definir resto, ¿porqué no lo haces "al vuelo" algo como: "animales[i%2]"?

    Y pues ya XP... no lo digo en mal rollo Mister Negativo, lo digo en buen plan y todo, solo para sacar dudas y tratar de ayudar.

    ResponderEliminar