Underc0de

Programación Scripting => Python => Mensaje iniciado por: blozzter en Agosto 11, 2011, 12:35:47 PM

Título: Análisis de ejercicios
Publicado por: blozzter en Agosto 11, 2011, 12:35:47 PM
Hola comunidad,
que visto que muchos están empezando en la programación en Python,
creo que la mejor manera de aprender, es practicar.

mi sugerencia es que vayamos posteando ejercicios. comenzar con cosas simples, secuenciales y decisiones, luego ciclos, despues listas y cosas asi.

para mantener también así mas activo esta parte del foro.



partir con cosas como:

Citar
En el consultorio del barrio, el doctor que atiende a Pepito tiene problemas para calcular la
edad de los pacientes. Por ello necesitamos un algoritmo que dad la fecha actual y la de
nacimiento de una persona determine la edad de estos



asi son los ejercicios que nos daban al comienzo en mi universidad.
entonces vamos planteando las soluciones y ayudando a quienes les cueste encontrar el algoritmo.



es solo una idea,, opinen.

saludos.
Título: Re:análisis de ejercicios
Publicado por: emirg en Agosto 11, 2011, 10:25:42 PM
Muy buena propuesta :D
En el caso del doctor hice el siguiente code:

Código (python) [Seleccionar]
print 'Hola doctor/a!!!'
print 'Bienvenido, con este programa podra calcular la edad de sus pacientes'
def edad():
    nac = int(raw_input('Introduzca el año de nacimiento del paciente--->'))
    actual = int(raw_input('Introduzca el año actual---> '))
    edadpac = actual - nac
    print 'La edad del paciente es de',edadpac

edad()

Título: Re:análisis de ejercicios
Publicado por: blozzter en Agosto 11, 2011, 10:43:46 PM
No tienes permitido ver enlaces. Registrate o Entra a tu cuenta
Muy buena propuesta :D
En el caso del doctor hice el siguiente code:

Código (python) [Seleccionar]
print 'Hola doctor/a!!!'
print 'Bienvenido, con este programa podra calcular la edad de sus pacientes'
def edad():
    nac = int(raw_input('Introduzca el año de nacimiento del paciente--->'))
    actual = int(raw_input('Introduzca el año actual---> '))
    edadpac = actual - nac
    print 'La edad del paciente es de',edadpac

edad()



que bueno haber captado la atención de alguien xD

me parece bien el code. pero te haré un cuestionamiento:
que pasaría si el paciente nació en diciembre del 2000 y actualmente estamos en agosto del 2011?
tu code tiraría como edad "11 años", cuando el paciente solo tiene 10 (porque todavía no llegamos al mes en el que está de cumpleaños). imagínate que el doctor le receta una medicina no apta pora su edad, podemos terminar con el paciente muerto por culpa del programa  :o   (jaja, sé que exagero  ::) )

te hago la invitación para que corrijas ese error. pero vas bien.
saludos, cualquier duda solo postea.
Título: Re:análisis de ejercicios
Publicado por: JaAViEr en Agosto 11, 2011, 11:26:24 PM
Mi humilde código:
Código (python) [Seleccionar]

# -*- coding: utf-8 -*-
import datetime,re
guarda = []
fecha_actual = datetime.date.today()
guarda.append(fecha_actual)
ano=0
mes=0
dia=0
for i,s,d in re.findall("(.*)\-(.*)\-(.*)",str(guarda[0])):
  ano = i
  mes = s
  dia = d
print ano,mes,dia
fecha_nace=raw_input("Fecha Nacimiento(AA-MM-DD):")
ano_paciente=0
mes_paciente=0
for i,s,d in re.findall("(.*)\-(.*)\-(.*)",fecha_nace):
  ano_paciente = i
  mes_paciente = s
calculo=int(ano)-int(ano_paciente)
if mes > mes_paciente:
  print calculo
else:
  print "Edad del Paciente:",calculo-1


Saludos.
Título: Re:análisis de ejercicios
Publicado por: blozzter en Agosto 11, 2011, 11:39:29 PM
JaAViEr, agradezco tu participacion tambien.


me parece una buena idea lo que estas haciendo. muy bueno eso de usar el modulo datetime para ver la fecha actual y re para buscar los datos ingresados.


pero observa lo mio que estuve de cumpleaños hace poco:



2011 08 11
Fecha Nacimiento(AA-MM-DD):1992-08-09
Edad del Paciente: 18


que yo sepa, cumplí 19  ::)  jajja.


saludos, te invito a revisar el código.
Título: Re:análisis de ejercicios
Publicado por: emirg en Agosto 11, 2011, 11:48:21 PM
No tienes permitido ver enlaces. Registrate o Entra a tu cuenta
No tienes permitido ver enlaces. Registrate o Entra a tu cuenta
Muy buena propuesta :D
En el caso del doctor hice el siguiente code:

print 'Hola doctor/a!!!'
print 'Bienvenido, con este programa podra calcular la edad de sus pacientes'
def edad():
    nac = int(raw_input('Introduzca el año de nacimiento del paciente--->'))
    actual = int(raw_input('Introduzca el año actual---> '))
    edadpac = actual - nac
    print 'La edad del paciente es de',edadpac

edad()



que bueno haber captado la atención de alguien xD

me parece bien el code. pero te haré un cuestionamiento:
que pasaría si el paciente nació en diciembre del 2000 y actualmente estamos en agosto del 2011?
tu code tiraría como edad "11 años", cuando el paciente solo tiene 10 (porque todavía no llegamos al mes en el que está de cumpleaños). imagínate que el doctor le receta una medicina no apta pora su edad, podemos terminar con el paciente muerto por culpa del programa  :o   (jaja, sé que exagero  ::) )

te hago la invitación para que corrijas ese error. pero vas bien.
saludos, cualquier duda solo postea.

jajajaja habia pensado eso de la fecha pero andaba con prisa :/
Voy a ver si lo puedo solucionar
Gracias :D
Título: Re:análisis de ejercicios
Publicado por: JaAViEr en Agosto 11, 2011, 11:50:37 PM
Mañana lo reviso, ahora voy a comer y luego tengo un torneo en Wii.

Saludos.
Título: Re:análisis de ejercicios
Publicado por: blozzter en Agosto 11, 2011, 11:51:37 PM
No tienes permitido ver enlaces. Registrate o Entra a tu cuenta
Mañana lo reviso, ahora voy a comer y luego tengo un torneo en Wii.

Saludos.

jaja, ok. suerte en ese torneo ;)
Título: Re:análisis de ejercicios
Publicado por: Sensei en Agosto 12, 2011, 05:22:33 AM
Hola!

Yo acabo de hacerlo recién levantado y justo antes de irme xD, el algoritmo creo que está bien, pero no me hace bien el cálculo, da error y salta a la excepción. Alguna solución?

Código (python) [Seleccionar]
#!/usr/bin/python

###################
#Cálculo de edad  #
#by sensei        #
#to underc0de.org #
###################

def edad():
    try:
        diaN=int(input('Que dia nacio?'))
        mesN=int(input('Que mes nacio?'))
        anhoN=int(input('Que anho nacio?'))

        if anhoN==anho:
            if mesN==mes:
                if diaN<dia:
                    print 'su edad es: ', anho-anhoN-1
                else:
                    print 'su edad es: ', anho-anhoN
            elif mesN<mes:
                print 'su edad es: ', anho-anhoN-1

            else:
                print 'su edad es: ', anho-anhoN
        elif anhoN<anho:
            print 'su edad es: ', anho-anhoN-1
        else:
            print 'su edad es: ', anho-anhoN
    except:
        print 'Ingrese datos validos'


def main():
    print 'Configuracion'
    dia=int(input('Que dia es hoy?'))
    mes=int(input('En que mes estamos?'))
    anho=int(input('En que anho?'))
    while True:
        print '''Hola, bienvenido a calculo de edad. Que desea hacer?
                 1. Calcular mi edad para la receta.
                 2. Salir
                 '''

        opc=raw_input('Elija su opcion y pulse [INTRO]: ')

        if opc=='1':
            edad()
        elif opc=='2':
            break
            exit()
        else:
            print 'Introduzca una opcion valida'
       

main()
Título: Re:análisis de ejercicios
Publicado por: blozzter en Agosto 12, 2011, 06:40:15 PM
hola, Sensei.

te explico: el try funciona mientras todo es True; en caso que alguna de las comparaciones sea False, pasará al except.


en tu caso, en la linea 15, al no cumplirse   if anhoN==anho:   , se salta de inmediato al except.

te recomiendo que primero hagas que funcione sin validar los datos, supondremos que el doctor nunca se equivocará en ingresarlos. luego revisamos la validación de entradas.


saludos!
espero ver el segundo intento ;)
Título: Re:análisis de ejercicios
Publicado por: Sensei en Agosto 12, 2011, 09:20:21 PM
Hola de nuevo,

Acabo de llegar y lo he modificado rápido. Primer error el algoritmo, lo hice al revés, cosas de las prisas, como no me calculaba pues no me di cuenta y no puede evaluarlo correctamente. Luego decir que ya lo he arreglado y funciona, pero queda menos "elegante". El código es este:

Código (python) [Seleccionar]
#!/usr/bin/python

###################
#Cálculo de edad  #
#by sensei        #
#to underc0de.org #
###################

def main():
    print 'Configuracion'
    dia=int(input('Que dia es hoy?'))
    mes=int(input('En que mes estamos?'))
    anho=int(input('En que anho?'))
    while True:
        print '''Hola, bienvenido a calculo de edad. Que desea hacer?
                 1. Calcular mi edad para la receta.
                 2. Salir
                 '''

        opc=raw_input('Elija su opcion y pulse [INTRO]: ')

        if opc=='1':
            diaN=int(input('Que dia nacio?'))
            mesN=int(input('Que mes nacio?'))
            anhoN=int(input('Que anho nacio?'))
           
            if mesN==mes:
                if diaN<=dia:
                    print 'su edad es: ', anho-anhoN
                else:
                    print 'su edad es: ', anho-anhoN-1
            elif mesN<mes:
                print 'su edad es: ', anho-anhoN
            else:
                print 'su edad es: ', anho-anhoN-1
               
        elif opc=='2':
            break
            exit()
           
        else:
            print 'Introduzca una opcion valida'
       

main()


Ahora bien, por falta de conocimiento del lenguaje tengo dos dudas:
1- Cómo podria hacer para que me evalue en el ejemplo anterior en la función edad las variables de la funcion main? He probado y digamos que "no las guarda"
2- Cómo podemos hacer para utilizar excepciones de forma correcta con un algoritmo así?

Un saludo!
Título: Re:análisis de ejercicios
Publicado por: blozzter en Agosto 12, 2011, 10:35:25 PM
CitarAhora bien, por falta de conocimiento del lenguaje tengo dos dudas:
1- Cómo podria hacer para que me evalue en el ejemplo anterior en la función edad las variables de la funcion main? He probado y digamos que "no las guarda"
2- Cómo podemos hacer para utilizar excepciones de forma correcta con un algoritmo así?


Sensei,
tu primera duda creo que se relaciona con lo que el uso de las funciones, pasar y recibir parámetros.
te dejo un ejemplo haber si te sirve:


Código (python) [Seleccionar]

def evaluar(variable):  #funcion que nos muestra si la variable es de tipo numerica o de tipo cadena
    if type(variable) == int:
        print 'numerica'
    elif type(variable) == str:
        print 'cadena'

def variable():
    var = "blozzter"
    return var
   
var = variable()  # "var" ahora vale "aqui un texto"
evaluar(var) #llamamos  a la funcion "evaluar" con el parametro "var"


cualquier duda, pregunta.
y con respecto a la segunda duda, no veo la necesidad de utilizar el try-except para este caso. quizás podría ser para validar mejor, pero considero que es un detalle.


ahora bien, tu code anda cerca, pero tiene algunas falencias.
si lo pruebo con esta fecha mira lo que pasa:

Que dia es hoy?12
En que mes estamos?8
En que anho?2011
Hola, bienvenido a calculo de edad. Que desea hacer?
                1. Calcular mi edad para la receta.
                2. Salir
               
Elija su opcion y pulse [INTRO]: 1
Que dia nacio?9
Que mes nacio?8
Que anho nacio?1992
su edad es:  18


en este caso, la edad seria 19  ;D

edito: acabo de implementar el try-except para validar que el usuario coloca un formato de fecha válido.


saludos.
Título: Re:análisis de ejercicios
Publicado por: Sensei en Agosto 13, 2011, 04:10:43 AM
Edito, efectivamente, has usado el código antes del ninja edit, jeje. Ahora acabo de probarlo en el movil (menudo curro pasarlo xDD) y si funciona. Mañana cuando llegue a casa y tenga un rato pruebo lo que has comentado de las variables.

Un saludo!
Título: Re:análisis de ejercicios
Publicado por: blozzter en Agosto 16, 2011, 11:07:02 PM
bueno, retomo el tema, ahora dejo mi versión de como resolví el problema.


Código (python) [Seleccionar]

from datetime import*

def fecha_actual():   
    fecha = str(date.today())
    dia = int(fecha[8:10])
    mes = int(fecha[5:7])
    anho = int(fecha[0:4])
    return dia, mes, anho

dia_actual, mes_actual, anho_actual = fecha_actual()

nacimiento = raw_input("fecha de nacimiento (DD-MM-AA): ")

edad = -1

try:
    dia_nacimiento = int(nacimiento[0:2])
    mes_nacimiento = int(nacimiento[3:5])
    anho_nacimiento = int(nacimiento[6:10])
except:
    print "[+] haz de introducir una fecha valida"
    exit()

if anho_actual >= anho_nacimiento:
  if mes_actual > mes_nacimiento:  #ya cumpli0 en este anho
    edad = anho_actual - anho_nacimiento
  elif mes_actual == mes_nacimiento: #dependerA del dIa
    if dia_actual < dia_nacimiento:
      edad = anho_actual - anho_nacimiento - 1
    else:
      edad = anho_actual - anho_nacimiento
  elif mes_actual < mes_nacimiento:  #todavia no cumple
    edad = anho_actual - anho_nacimiento - 1

if edad <= -1:
    print "[+] el paciente todavia no nace xD"

else:
    print "edad del paciente: ", edad



saludos  :)
Título: Re:análisis de ejercicios
Publicado por: horrorc0re en Agosto 18, 2011, 03:31:00 PM
buenas!

xDD me habeis picado ami tambien .. aqui mi code (no compruebo que los datos sean correctos)

Código (python) [Seleccionar]

#!/usr/bin/python

import datetime

## Obtenemos la fecha actual y la devolvemos en una lista   
def fechaActual():
    fecha = str(datetime.date.today())
    fecha = fecha.split('-')
    return fecha

## Calculamos la edad
def calcularEdad(fechaUsuario):
    fechaHOY = fechaActual()
    fechaUsuario = fechaUsuario.split('-')
    edad = int(fechaHOY[0]) - int(fechaUsuario[0])
    if int(fechaUsuario[1]) > int(fechaHOY[1]):
edad -= 1
    elif int(fechaUsuario[2]) > int(fechaHOY[2]):
          edad -= 1
    return edad

print "###########################"
print "# Code de ZomWeed -PYTHON #"
print "#-------------------------#"
print "#    (Calculo-de-Edad)    #"
print "###########################"
fechaUsuario = raw_input("-> Porfavor, indique una fecha (AA-MM-DD)")
print "La edad es -> ",calcularEdad(fechaUsuario)


por cierto blozzter, la forma en la que compruebas la fecha deberias revisarla porque no funcá correctamente, si introduces 155-12-06 te calcula la edad  :)

Editado: oye una pregunta como podria llamar con import a un fichero que tiene la estructura de una clase en python. Estoy probando con import y el fichero pero no me funciona.

Saludos
Título: Re:análisis de ejercicios
Publicado por: blozzter en Agosto 18, 2011, 05:47:57 PM
horrorc0re, me gustó mucho tu code  ;D

y con respecto a tu pregunta, no sé como trabajar con clases. lo siento.



saludos.


edito: 


###########################
# Code de ZomWeed -PYTHON #
#-------------------------#
#    (Calculo-de-Edad)    #
###########################
-> Porfavor, indique una fecha (AA-MM-DD)1969-02-19
La edad es ->  41



si te fijas, en ese caso el paciente tendría 42 años, no 41.  :P


espero la corrección ;)
Título: Re:análisis de ejercicios
Publicado por: horrorc0re en Agosto 20, 2011, 09:41:21 AM
gracias blozzter, me alegro de que te guste.

He mirado la fecha y ami si que me sale 42 :D nose porque te habrá salido 41...

Citar
Editado: oye una pregunta como podria llamar con import a un fichero que tiene la estructura de una clase en python. Estoy probando con import y el fichero pero no me funciona.
me contesto yo mismo xDD
from <Fichero> import <NombredelaClase>   

En fichero solo ponemos el nombre, nose si habra otro metodo para invocar la clase.

ahora estoy tirando de otro de los programas mas trillados para aprender ... agenda PYTHON  :D mas que nada para practicar con clases y funciones, dentro de poco lo cuelgo y le hechais un vistazo

Saludos
Título: Re:análisis de ejercicios
Publicado por: horrorc0re en Agosto 20, 2011, 04:06:35 PM
buenas!

acabo de terminar la agenda en python, no tiene mucha utilidad mas que la de aprender con el codigo  ;D peroo bueno me sirvio para mas o menos ir entrando en las clases de python.

Son dos ficheros ClasesAgenda.py que contiene las clases y agenda.py, el main.
No comprueba los datos introducidos aunque si he comprobado que los indices esten dentro del rango del array.
Solo he trabajado con una agenda porque no he visto necesario meterle mas, cuando aprenda ficheros lo mismo ya me dejo llevar un poco mas y la perfilo xDD se que es un aporte muy simplón pero si a alguien le sirve para aprender un poco mas de python de una forma mas basica, perfecto!.

ClasesAgenda.py
Código (python) [Seleccionar]

#/usr/bin/python


## Clase para gestionar los contactos ##
class Contacto():
def __init__(self, nombre, direccion, telefono, email):
        self.nombreContacto = nombre
self.dirContacto = direccion
self.tlfnContacto = telefono
self.emailContacto = email

## setters - Funciones para cambiar el valor de las variables ##
def setNombre(self, nombre):
self.nombreContacto = nombre

def setDireccion(self, direccion):
self.dirContacto = direccion

def setTelefono(self, telefono):
self.tlfnContacto = telefono

def setEmail(self, email):
self.emailContacto = email

## getters - Funciones para conseguir el valor de las variables ##
def getNombre(self):
return self.nombreContacto

def getDireccion(self):
return self.dirContacto

def getTelefono(self):
return self.tlfnContacto

def getEmail(self):
return self.emailContacto

## Clase para gestionar la agenda ##
class Agenda():
lstContactos = []

def getContactos(self):
return self.lstContactos

def setContactos(self, lstContactos):
self.lstContactos = lstContactos

def nuevoContacto(self,contacto):
self.lstContactos.append(contacto)

def borrarContacto(self,indice):
del self.lstContactos[indice]


Agenda.py
Código (python) [Seleccionar]

#!/usr/bin/python

from ClasesAgenda import Agenda, Contacto
import os

##---> VARIABLES <---##
agenda = Agenda()

##---> FUNCIONES <---##

def imprimirContactos(lstContactos): ## Mostramos todos los contactos ##
for indice in range(len(lstContactos)):
print "-> ",indice,"- Nombre:",lstContactos[indice].getNombre(),"-- Direccion:",lstContactos[indice].getDireccion(),"-- Telefono:",lstContactos[indice].getTelefono(),"-- Email:",lstContactos[indice].getEmail()

## MENU ##
while True:
os.system("clear") ## Nos ayuda a limpiar la pantalla
print "#! - ###################### - !#"
print "#! Code por ZomWeed - PYTHON  !#"
print "--------------------------------"
print "#!     Agenda de Contactos    !#"
print "--------------------------------"
print "[1] -> Nuevo Contacto "
print "[2] -> Borrar Contacto "
print "[3] -> Listar Contacto "
print "[4] -> Modificar Contacto "
print "[0] -> Salir "
opcion = input("-><- Elija una opcion...")
if opcion != 0:
if opcion == 1:
## Recogemos los datos necesario para crear un nuevo contacto ##
os.system("clear")
print "[+] Nuevo Contacto: Informacion ->"
print ". ------------------------------ ."
nombre = raw_input("-> Cual es su nombre?")
direccion = raw_input("-> Cual es su direccion?")
telefono = raw_input("-> Cual es su telefono?")
email = raw_input("-> Cual es su email?")
contacto = Contacto(nombre,direccion,telefono,email)
agenda.nuevoContacto(contacto)
elif opcion == 2 and len(agenda.getContactos()) > 0:
## Mostramos todos los contactos y eliminamos segun nos indique el usuario ##
while True:
os.system("clear")
print "[+] Eliminar Contacto: Lista de Contactos ->"
print ". ---------------------------------------- ."
imprimirContactos(agenda.getContactos()) ## Mostramos los contactos
print "-> (s) : Salir"
indiceEliminar = raw_input("-><- Elija un contacto... ")
if indiceEliminar == 's' or indiceEliminar == 'S': ## Comprobamos la opcion elegida por el usuario
break
if int(indiceEliminar) >= len(agenda.getContactos()):
raw_input("U_u ERROR: indice incorrecto, pulse una tecla para continuar")
else:
agenda.borrarContacto(int(indiceEliminar)) ## Hacemos un casting a entero ya que raw_input nos devuelve string
elif opcion == 3:
## Mostramos todos los contactos ##
os.system("clear")
print "[+] Listar Contactos: Lista de Contactos ->"
print ". --------------------------------------- ."
imprimirContactos(agenda.getContactos())
raw_input("-><- Listados de los contactos actuales almacenados,pulse una tecla para continuar")
elif opcion == 4:
## Mostramos todos los contactos, el usuario indicara el contacto y registro a modificar ##
while True:
os.system("clear")
print "[+] Modificar Contacto: Seleccion del contacto ->"
print ". --------------------------------------------- ."
imprimirContactos(agenda.getContactos()) ## Mostramos los contactos
print "-> (s) : Salir"
indiceContacto = raw_input("-><- Elija un contacto... ")
if indiceContacto == 's' or indiceContacto == 'S':
break
os.system("clear")
if int(indiceContacto) > len(agenda.getContactos()):
raw_input("U_u ERROR: indice incorrecto, pulse una tecla para continuar")
else:
print "[+] Modificar Contacto: Registros a modificar ->"
print ". -------------------------------------------- ."
print "-> 1 - Nombre"
print "-> 2 - Direccion"
print "-> 3 - Telefono"
print "-> 4 - Email"
opcionRegistro = input("-><- Elija un contacto... ")
if opcionRegistro == 1:
nombre = raw_input("\nEscriba el nuevo nombre: ")
lstContactos = agenda.getContactos()
lstContactos[int(indiceContacto)].setNombre(nombre) ## Hacemos un casting ya que raw_input nos devuelve string
agenda.setContactos(lstContactos)
elif opcionRegistro == 2:
direccion = raw_input("\nEscriba la nueva direccion: ")
lstContactos = agenda.getContactos()
lstContactos[int(indiceContacto)].setDireccion(direccion)
agenda.setContactos(lstContactos)
elif opcionRegistro == 3:
telefono = raw_input("\nEscriba el nuevo telefono: ")
lstContactos = agenda.getContactos()
lstContactos[int(indiceContacto)].setTelefono(telefono)
agenda.setContactos(lstContactos)
elif opcionRegistro == 4:
email = raw_input("\nEscriba el nuevo nombre")
lstContactos = agenda.getContactos()
lstContactos[int(indiceContacto)].setEmail(email)
agenda.setContactos(lstContactos)
elif opcion == 0:
print "\nSaludos Terricola [^_^]"
break


Saludos
Título: Re:análisis de ejercicios
Publicado por: yuqmettal en Noviembre 02, 2011, 11:13:18 AM
Lo acabo de terminar espero este bien claro no considere años bisiestos y considere solo meses de 30 dias pero vale denme viendo si sirve
saludos....

Código (python) [Seleccionar]

import datetime
class Edad:
    def __init__(self,dia,mes,ano):
        self.dia=int(dia)
        self.mes=int(mes)
        self.ano=int(ano)

    def calcular(self):
        hoy=datetime.datetime.now()
        hoy=str(hoy)
        hoy=hoy.split('-')
        anohoy=hoy[0]
        meshoy=hoy[1]
        x=hoy[2].split(" ")       
        diahoy=x[0]
        anohoy=int(anohoy)
        meshoy=int(meshoy)
        diahoy=int(diahoy)
        if self.ano<anohoy:
            anoactual=anohoy-self.ano
        #else:
            #print "Ingresa bien los datos..."
        if self.mes<meshoy:
            mesactual=meshoy-self.mes
        else:
            y=meshoy+12
            mesactual=y-self.mes
        if diahoy>self.dia:
            diaactual=diahoy-self.dia
        else:
            z=diahoy+30
            diaactual=z-self.dia
        print "tiene", anoactual,"años",mesactual,"meses",diaactual,"dias"

ano=raw_input(u'Ingrese año de nacimiento: ')
mes=raw_input(u'Ingrese mes de nacimiento: ')
dia=raw_input(u'Ingrese dia de nacimiento: ')

objPaciente=Edad(dia,mes,ano)
objPaciente.calcular()



pd: muy buena la agenda del compañero voy aver si desarrollo una para ver que tal... en algunos dias la subire...
Título: Re:análisis de ejercicios
Publicado por: blozzter en Noviembre 02, 2011, 07:10:07 PM
No tienes permitido ver enlaces. Registrate o Entra a tu cuenta
Lo acabo de terminar espero este bien claro no considere años bisiestos y considere solo meses de 30 dias pero vale denme viendo si sirve
saludos....

Código (python) [Seleccionar]

import datetime
class Edad:
    def __init__(self,dia,mes,ano):
        self.dia=int(dia)
        self.mes=int(mes)
        self.ano=int(ano)

    def calcular(self):
        hoy=datetime.datetime.now()
        hoy=str(hoy)
        hoy=hoy.split('-')
        anohoy=hoy[0]
        meshoy=hoy[1]
        x=hoy[2].split(" ")       
        diahoy=x[0]
        anohoy=int(anohoy)
        meshoy=int(meshoy)
        diahoy=int(diahoy)
        if self.ano<anohoy:
            anoactual=anohoy-self.ano
        #else:
            #print "Ingresa bien los datos..."
        if self.mes<meshoy:
            mesactual=meshoy-self.mes
        else:
            y=meshoy+12
            mesactual=y-self.mes
        if diahoy>self.dia:
            diaactual=diahoy-self.dia
        else:
            z=diahoy+30
            diaactual=z-self.dia
        print "tiene", anoactual,"años",mesactual,"meses",diaactual,"dias"

ano=raw_input(u'Ingrese año de nacimiento: ')
mes=raw_input(u'Ingrese mes de nacimiento: ')
dia=raw_input(u'Ingrese dia de nacimiento: ')

objPaciente=Edad(dia,mes,ano)
objPaciente.calcular()



pd: muy buena la agenda del compañero voy aver si desarrollo una para ver que tal... en algunos dias la subire...


gracias por participar, me gustó mucho tu code.
Saludos.

(te edité tu mensaje, para la proxima utiliza las etiquetas para poner código, y evita el doble post)
Título: Re:análisis de ejercicios
Publicado por: yuqmettal en Noviembre 03, 2011, 09:28:12 PM
No tienes permitido ver enlaces. Registrate o Entra a tu cuenta
No tienes permitido ver enlaces. Registrate o Entra a tu cuenta

gracias por participar, me gustó mucho tu code.
Saludos.

(te edité tu mensaje, para la proxima utiliza las etiquetas para poner código, y evita el doble post)

Bueno muchas gracias lo tomare muy en cuenta  :P
Espero nos pongas mas ejercicios para ir practicando
Título: Re:análisis de ejercicios
Publicado por: yuqmettal en Noviembre 07, 2011, 03:23:07 PM
Hola bueno les dejo el codigo de la agenda:
Código (python) [Seleccionar]

#-------------------------------------------------------------------------------------------------------------------------------------------#
#Fecha de creacion: martes 1 de novoembre del 2011              Fecha de modificacion: Lunes 7 de noviembre del 2011                        #
#Archivo: Agenda                                                # de modificaciones: 1                                                      #
#Version:1.0.0                                                                                                                              #
#Autor: Marco Yuquilima                                         Observaciones: Terminado                                                    #
#-------------------------------------------------------------------------------------------------------------------------------------------#

class Elemento:
    def __init__(self,nombre,apellido,*otros):# inicializamos con 2 o mas parametros xq guardar necesita 5 parametros y buscar 2
        self.nombre=nombre
        self.apellido=apellido
        self.otros=otros
        self.f=open('/home/cencalada/Escritorio/python/Ejercicios marco/nombres.txt','a+')       

    def guardar(self): 
        nuevo=True               #variable que nos indica si existe el contacto para que los datos el txt no se repitan
        hoja=open('/home/cencalada/Escritorio/python/Ejercicios marco/nombres.txt','r')
        for linea in hoja:
            if linea.find(self.nombre+"\t"+self.apellido)>=0:
                nuevo=False
                break
        hoja.close()
        if nuevo:
            valor=(self.nombre+"\t"+self.apellido+"\t"+self.otros[0]+"\t"+self.otros[1]+"\t"+self.otros[2])
            self.f.write("\n%s" %valor)          #escribimos los datos en el archivo
            self.f.close()
        else:
            print "#####################\nYa existe el contacto \n"           

    def listar(self):#metodo que nos lista todos los contactos
        self.f=open('/home/cencalada/Escritorio/python/Ejercicios marco/nombres.txt','r')
        print self.f.read()
        self.f.close()

    def buscar (self):#metodo que nos muestra un contacto en caso de existir
        hoja=open('/home/cencalada/Escritorio/python/Ejercicios marco/nombres.txt','r')
        for linea in hoja:
            if linea.find(self.nombre+"\t"+self.apellido)>=0:
                print linea
        hoja.close()

    def modificar(self):#metodo con el cual podemos modificar un contacto
        hoja=open('/home/cencalada/Escritorio/python/Ejercicios marco/nombres.txt','r')
        cadena="cadena vacia"
        for linea in hoja:
            if linea.find(self.nombre+"\t"+self.apellido)>=0:
                print linea
                cadena=linea#buscamos nombre y apellido del contacto y almacenamos todos los datos para reemplazarlos
                break
        hoja.close()
        hoja=open('/home/cencalada/Escritorio/python/Ejercicios marco/nombres.txt','r')
        original=hoja.read()#creamos una "copia" del archivo
        hoja.close
        if original.find(self.nombre+"\t"+self.apellido)>=0:#buscamos al contacto para ingresar nuevos datos
            print"INGRESAR NUEVOS DATOS:"
            n=raw_input(u'Ingresar nombre: ')
            a1=raw_input(u'Ingresar apellido paterno : ')
            a2=raw_input(u'Ingresar apellido materno : ')
            d=raw_input(u'Ingresar direccion : ')
            t=raw_input(u'Ingresar telefono : ')
            txt=original.replace(cadena,n+"\t"+a1+"\t"+a2+"\t"+d+"\t"+t+"\n")#modificamos los datos en una "copia" del archivo
            hoja=open('/home/cencalada/Escritorio/python/Ejercicios marco/nombres.txt','w')#abrimos el archivo para escribir
            hoja.writelines(txt)#reemplazamos linea a linea la "copia" del archivo al archivo original
            hoja.close()

    def eliminar(self):
        hoja=open('/home/cencalada/Escritorio/python/Ejercicios marco/nombres.txt','r')
        cadena="cadena vacia"
        for linea in hoja:
            if linea.find(self.nombre+"\t"+self.apellido)>=0:
                print linea
                cadena=linea#buscamos nombre y apellido del contacto y almacenamos todos los datos para reemplazarlos
                break
        hoja.close()
        hoja=open('/home/cencalada/Escritorio/python/Ejercicios marco/nombres.txt','r')
        original=hoja.read()#creamos una "copia" del archivo
        hoja.close
        if original.find(self.nombre+"\t"+self.apellido)>=0:#buscamos al contacto para ingresar nuevos datos
            txt=original.replace(cadena,"")#modificamos los datos en una "copia" del archivo
            hoja=open('/home/cencalada/Escritorio/python/Ejercicios marco/nombres.txt','w')#abrimos el archivo para escribir
            hoja.writelines(txt)#reemplazamos linea a linea la "copia" del archivo al archivo original
            hoja.close()
    def __del__(self):
        print "Destruyendo...."#eliminamos de memoria lo que ya no necesitamos

while True:#menu de opciones para interactuar correctamente la clase que manipula el archivo
    print "***************************************************************************************"
    print "MENU DE OPCIONES:"
    print "(1)- Ingresar contacto..."
    print "(2)- Lista de contactos..."
    print "(3)- Buscar contacto..."
    print "(4)- Modificar contacto..."
    print "(5)- Eliminar contacto..."
    print "(6)- Salir..."
    opcion=raw_input(u'Digitar opcion: ')
    print "***************************************************************************************"
    try:
        opcion=int(opcion)
    except:
        print "#################\nPor favor ingresar numero"
        continue
    if opcion==1:   
        n=raw_input(u'Ingresar nombre: ')
        a1=raw_input(u'Ingresar apellido paterno : ')
        a2=raw_input(u'Ingresar apellido materno : ')
        d=raw_input(u'Ingresar direccion : ')
        t=raw_input(u'Ingresar telefono : ')
        f=Elemento(n,a1,a2,d,t)
        f.guardar()
    elif opcion==2:
        f.listar()
    elif opcion==3:
        nombre=raw_input("Nombre de contacto: ")
        apellido=raw_input("Apellido de contacto: ")
        f=Elemento(nombre,apellido)
        f.buscar()
    elif opcion==4:
        nombre=raw_input("Nombre de contacto: ")
        apellido=raw_input("Apellido de contacto: ")
        f=Elemento(nombre,apellido)
        f.modificar()
    elif opcion==5:
        nombre=raw_input("Nombre de contacto: ")
        apellido=raw_input("Apellido de contacto: ")
        f=Elemento(nombre,apellido)
        f.eliminar()
    elif opcion==6:
        break
    else:
        print "#############################\nIngresar numeros entre el 1 y 6"

me parece que esta completo pero cualquier cosa avisenme
Título: Re:análisis de ejercicios
Publicado por: Dr0B4ck en Noviembre 15, 2011, 12:02:03 AM
valla amigos comprten muchos codes aqui cuando ya empiese a practicar python y lo tenga bien estudiado y aprendedi posteo aqui mi programa salu2 chicos !!! ;)

Spectrus: Amigo no uses colores ya que dificulta la lectura.
Título: Re:análisis de ejercicios
Publicado por: Snifer en Noviembre 15, 2011, 09:55:51 AM
No tienes permitido ver enlaces. Registrate o Entra a tu cuenta
valla amigos comprten muchos codes aqui cuando ya empiese a practicar python y lo tenga bien estudiado y aprendedi posteo aqui mi programa salu2 chicos !!!  ;)

porfavor  es molesto para los ojos leer de color rojo.. son varios post tuyos.. editalos :D gracias..