Test Foro de elhacker.net SMF 2.1

Programación => Scripting => Mensaje iniciado por: Meta en 25 Noviembre 2010, 08:46 AM

Título: [Python] - Los años no perdonan.
Publicado por: Meta en 25 Noviembre 2010, 08:46 AM
Muy buenas:

Ejercicio 276... (http://www.subeimagenes.com/img/gdfghfhfghgj-7784.jpg)

La verdad no entiendo muy bien lo de los años bisiestos en Python. Parece una función muy compleja y larga de hacer. Parece duro este ejercicio. ¿Eh?

Un abrazo.
Título: Re: [Python] - Los años no perdonan.
Publicado por: Novlucker en 25 Noviembre 2010, 11:21 AM
En realidad no tiene ninguna dificulta, otra vez el problema esta en la lectura y la comprensión del ejercicio.

Condiciones:
Si año divisible por 4 y no por 100, Bisiesto.
Si año divisible por 4, divisible por 100 y divisible por 400, Bisiesto.

Saludos
Título: Re: [Python] - Los años no perdonan.
Publicado por: Meta en 25 Noviembre 2010, 22:47 PM
Código (python) [Seleccionar]
year = int(raw_input('Introduce el año en  cifras: '))

if (year % 4) or (not year % 100):
    print 'El año', year, 'es bisiesto.'

if (year % 4) and (year % 100) and (year % 400):
    print 'El año', year, 'es biciesto.'
else:
    print year, 'año no bisiesto.'


Me falta algo por pulir que no me sale como quiero. jejejeje.
Título: Re: [Python] - Los años no perdonan.
Publicado por: Ragnarok en 25 Noviembre 2010, 23:24 PM
Código (python) [Seleccionar]
def days(y): return 366 if not y%4 and y%100 or not y%400 else 365

un poco menos natural:

Código (python) [Seleccionar]
def days(y): return 365 if (y%4 or not y%100) and y%400 else 366
Título: Re: [Python] - Los años no perdonan.
Publicado por: .:WindHack:. en 25 Noviembre 2010, 23:28 PM
Código (python) [Seleccionar]
def Bisiesto(sAnyo):
    return sAnyo % 4 == 0 and sAnyo % 400 == 0 or sAnyo % 100 != 0
Título: Re: [Python] - Los años no perdonan.
Publicado por: Meta en 26 Noviembre 2010, 00:24 AM
Cita de: .:WindHack:. en 25 Noviembre 2010, 23:28 PM
Código (python) [Seleccionar]
def Bisiesto(sAnyo):
    return sAnyo % 4 == 0 and sAnyo % 400 == 0 or sAnyo % 100 != 0


Del 2010 al 2015 más otros años siempre es bisiesto cuando en realidad son cada  años. No parace funcionar.

Cita de: Ragnarok en 25 Noviembre 2010, 23:24 PM
Código (python) [Seleccionar]
def days(y): return 366 if not y%4 and y%100 or not y%400 else 365
/quote]

Este funciona mejor.

¿Pueden hacer que en su salida en pantalla muestre...

...Año 2010 es bisiesto?

...Año 5555 no es bisiesto?
Título: Re: [Python] - Los años no perdonan.
Publicado por: Meta en 26 Noviembre 2010, 11:52 AM
Hola de nuevo:

Ahora lo hice de esta menera.

Código (python) [Seleccionar]
year = int(raw_input('Introduce el año en  cifras: '))

# Función.
def el_ano_es_bisiesto(year):
    return year % 4 == 0 and year % 100 != 0 or year % 400 == 0

# Muestra información pantalla.
if (el_ano_es_bisiesto(year) == True):
    print 'El año', year, 'es bisiesto.'
else:
    print 'El año', year, 'no es bisiesto.'


No estoy del todo convencido de que sea así.

Saludo.
Título: Re: [Python] - Los años no perdonan.
Publicado por: pirob en 2 Diciembre 2010, 17:09 PM
Saludos a todos,
aprovecho para presentarme, jejeje.
Soy pirob y desde hace un tiempo estoy prendiendo python por mi cuenta. Encontré este foro en el que hay mucha información al respecto y nada, aquí me tenéis  :P

Bueno, respecto al código he hecho esto:
Código (python) [Seleccionar]

# By pirob - 2/12/2010

def bisiesto():
 
 year = int(raw_input("Introducelo: "))

 if year % 4 == 0:
   if year % 100 != 0:
     print "%d es bisiesto." % year
   
   else:
     if year % 400 == 0:
print "%d es bisiesto" % year
     else:
print "%d no es bisiesto." % year
   
 else:
   print "%d no es bisiesto." %year
   
 return year
 
bisiesto()


A mí me funciona bien, pero es cuestión de que lo probéis  :rolleyes: