Google+ Seguidores

lunes, 16 de noviembre de 2015

Ejercicios de clases y objetos en python (parte 1)

    12

Buenas, la idea de esta entrada es comenzar a practicar con algunos ejercicios la programación orientada a objetos en python.
La programación orientada a objetos (POO) es un enfoque formal de programación que combina los datos y las acciones asociadas (métodos) en estructuras lógicas (objetos). Este enfoque mejora la capacidad de gestionar software complejos como también así el desarrollo y mantenimiento de aplicaciones de gran tamaño.

Puedes ver la entrada sobre Programación Orientada a Objetos en python que escribí ya hace algún tiempo. También puedes dar una vuelta por todo el repertorio de ejercicios que hemos ido publicando en el blog aquí: Ejercicios Python

Espero estos ejercicios te sean de ayuda.

Ejercicio 1
Escribir una clase en python que convierta un número entero a número romano

Ejercicio 2
Escribir una clase en python que convierta un número romano en un número entero

Ejercicio 3
Escribir una clase en python para encontrar la validez de una cadena de paréntesis, '(', ')', '{', '}', '['  ']. Los paréntesis deben aparecer en el orden correcto, por ejemplo "()" y "()[]{}" son validos, pero "[)", "({[)]" y "{{{" son inválidos.

Ejercicio 4
Escribir una clase en python que obtenga todos los posibles subconjuntos únicos de un conjunto de números enteros distintos.
Entrada: [4, 5, 6]
Salida: [[], [6], [5], [5, 6], [4], [4, 6], [4, 5], [4, 5, 6]]

Ejercicio 5
Escribir una clase en python que encuentre un par de elementos (índice de los números) de una matriz dada cuya suma es igual a un número de destino especifico.
Entrada: numeros = [10,20,10,40,50,60,70], objetivo=50
Salida: 3, 4

Ejercicio 6
Escribir una clase en python que encuentre los 3 elementos que sumen 0 a partir de números reales
Entrada: [-25, -10, -7, -3, 2, 4, 8, 10]
Salida: [[-10, 2, 8], [-7, -3, 10]]

Ejercicio 7
Escribir una clase en python que calcule pow(x, n)
x = es la base
n = es el exponente

Entrada: pow(2, -3)
Salida: 0.125

Entrada: pow(3, 5)
Salida: 234

Ejercicio 8
Escribir una clase en python que revierta una cadena de palabras
Entrada: "Mi Diario Python"
Salida: "Python Diario Mi"

Ejercicio 9
Escribir una clase en python con 2 métodos: get_string y print_string. get_string acepta una cadena ingresada por el usuario y print_string imprime la cadena en mayúsculas.

Ejercicio 10
Escribir una clase en python llamada rectangulo que contenga una base y una altura, y que contenga un método que devuelva el área del rectángulo.

Ejercicio 11
Escribir una clase en python llamada circulo que contenga un radio, con un método que devuelva el área y otro que devuelva el perímetro del circulo.


Las soluciones a los ejercicios pueden publicarlas en los comentarios.

Hasta acá los ejercicios, a meter código muchachos, nos vemos en las soluciones ;)

Saludos, Diego...

12 comentarios:
Write comentarios
  1. Un intento de los numeros romanos :



    categorias = [['I','V','X'],['X','L','C'],['C','D','M']]
    popurri = {0:'',1:'0',2:'00',3:'000',4:'01',5:'1',6:'10',7:'100',8:'1000',9:'02'}


    class Romano(object):
    def __init__(self, numero):
    self.number = str(numero)
    self.largo = len(self.number)


    def romanizar (self):

    respuestafinal = ''
    for x in range(0,self.largo):

    respuestafinal = respuestafinal + self.romanizardig(self.number[x],self.largo-x-1)

    return respuestafinal

    def romanizardig(self,digito,categoria):


    logica = categorias[categoria]
    respuesta = ''

    dig_a_procesar = [x for x in popurri[int(digito)]]

    for x in dig_a_procesar:

    respuesta = respuesta + logica[int(x)]

    return respuesta




    Prueba = Romano(950)
    print Prueba.romanizar()

    ResponderEliminar
  2. Ejercicio 2



    popurri = {'I':1,'V':5,'X':10,'L':50,'C':100,'D':500,'M':1000}


    class Normalizador(object):
    def __init__(self, numero):
    self.number = numero
    self.largo = len(numero)

    def normalizar(self):

    sumatotal = 0

    for x in range(0,self.largo):

    valor = popurri[self.number[x]]

    if x != self.largo-1:
    if valor < popurri[self.number[x+1]]:
    valor = -valor

    sumatotal += valor

    return sumatotal



    Prueba = Normalizador('DCXCII')
    print Prueba.normalizar()

    ResponderEliminar
    Respuestas
    1. Excelente Lucas. Gracias por visitar y participar en el blog. saludos

      Eliminar
  3. Este comentario ha sido eliminado por el autor.

    ResponderEliminar
  4. Respuestas
    1. Excelente Victor. Gracias por visitar y participar en el blog. saludos

      Eliminar
  5. Este comentario ha sido eliminado por el autor.

    ResponderEliminar
  6. # -*- coding: utf-8 -*-

    class Dec_Rom:

    ....def __init__(self,n):
    ........self.n=n
    ........self.numero=[]
    ........if int(self.n)<=100000:
    ............self.numero += n
    ........else:
    ............print 'El numero debe ser menor o igual a 100000'

    ....def check(self):
    .........self.nums={1:'I',5:'V',10:'X',50:'L',100:'C',500:'D',1000:'M',4000:'ÏǗ',5000:'Ǘ',6000:'ÜÏ',7000:'ÜÏÏ',8000:'ÜÏÏÏ',9000:'ÏẌ',10000:'Ẍ',20000:'ẌẌ',30000:'ẌẌẌ',40000:'ẌĹ',50000:'Ĺ',60000:'ĹẌ',70000:'ĹẌẌ',80000:'ĹẌẌẌ',90000:'ẌĆ',100000:'Ć'}
    ........roma,resul,indice,pase='',0,0,False
    ........if len(self.numero)==6:
    ............roma += self.nums[100000]
    ............return roma
    ........elif len(self.numero)==5:
    ............conv=int(self.numero[indice])*10000
    ............resul=self.nums[conv]
    ............roma += resul
    ............indice += 1
    ............pase=True
    ........else:
    ............pass
    ........if len(self.numero)==4 or pase:
    ............base,medinf,med,sup,sups=100,400,500,900,1000
    ............if int(self.numero[indice])<4:
    ................conv=int(self.numero[indice])*self.nums[1000]
    ................roma += conv
    ................indice += 1
    ............else:
    ................conv=int(self.numero[indice])*1000
    ................resul=self.nums[conv]
    ................roma += resul
    ................indice += 1
    ........elif len(self.numero)==3:
    ............base,medinf,med,sup,sups=100,400,500,900,1000
    ........elif len(self.numero)==2:
    ............base,medinf,med,sup,sups=10,40,50,90,100
    ........elif len(self.numero)==1:
    ............base,medinf,med,sup,sups=1,4,5,9,10
    ........while indice<len(self.numero):
    ............conv=int(self.numero[indice])*base
    ............if conv<medinf:
    ................conv=int(self.numero[indice])*self.nums[base]
    ................roma += conv
    ............elif conv==med:
    ................resul=self.nums[conv]
    ................roma += resul
    ............elif conv==sup:
    ................roma += self.nums[base]
    ................roma += self.nums[sups]
    ............else:
    ................resul=conv-med
    ................if resul<0:
    ....................resul *= -1
    ....................roma += self.nums[resul]
    ....................roma += self.nums[med]
    ................else:
    ....................resul /= base
    ....................roma += self.nums[med]
    ....................conv=resul*self.nums[base]
    ....................roma += conv
    ............if len(self.numero)==5 and indice ==2 or len(self.numero)==4 and indice ==1 or len(self.numero)==3 and indice == 0:
    ................base,medinf,med,sup,sups=10,40,50,90,100
    ............elif len(self.numero)==5 and indice ==3 or len(self.numero)==4 and indice ==2 or len(self.numero)==3 and indice == 1 or len(self.numero)==2 and indice==0:
    ................base,medinf,med,sup,sups=1,4,5,9,10
    ............indice += 1
    ........return roma

    while True:
    ....entrada=raw_input()
    ....num=Dec_Rom(entrada)
    ....print num.check()

    ResponderEliminar
  7. Seguiré con los demás ejercicios, por lo pronto ahí esta el primero. Excelente pagina, Dios les bendiga.

    ResponderEliminar
    Respuestas
    1. Excelente Victor. Saludos y gracias por visitar el blog :)

      Eliminar
  8. Hola aquí dejo mi versión. Son el ejercicio 1 y 2 juntos.
    Está colgado en https://github.com/Didweb/R-mer/blob/master/romanos.py

    He mirado de ponerlo aquí pero era muy largo.

    Gracias por la web es muy motivadora y me esta ayudando mucho. Saludos.

    ResponderEliminar
    Respuestas
    1. Hola Edu, gracias a ti por visitar el blog... a seguir metiendo código ;). Saludos

      Eliminar

Tu comentario es importante y nos motiva a seguir escribiendo...

Entradas más recientes

© 2014 Mi diario Python. Designed by Bloggertheme9 | Distributed By Gooyaabi Templates
Powered by Blogger.