Foro de elhacker.net

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
  1. year = int(raw_input('Introduce el año en  cifras: '))
  2.  
  3. if (year % 4) or (not year % 100):
  4.    print 'El año', year, 'es bisiesto.'
  5.  
  6. if (year % 4) and (year % 100) and (year % 400):
  7.    print 'El año', year, 'es biciesto.'
  8. else:
  9.    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
  1. def days(y): return 366 if not y%4 and y%100 or not y%400 else 365

un poco menos natural:

Código
  1. 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
  1. def Bisiesto(sAnyo):
  2.    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
Código
  1. def Bisiesto(sAnyo):
  2.    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.

Código
  1. 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
  1. year = int(raw_input('Introduce el año en  cifras: '))
  2.  
  3. # Función.
  4. def el_ano_es_bisiesto(year):
  5.    return year % 4 == 0 and year % 100 != 0 or year % 400 == 0
  6.  
  7. # Muestra información pantalla.
  8. if (el_ano_es_bisiesto(year) == True):
  9.    print 'El año', year, 'es bisiesto.'
  10. else:
  11.    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
  1. # By pirob - 2/12/2010
  2.  
  3. def bisiesto():
  4.  
  5.  year = int(raw_input("Introducelo: "))
  6.  
  7.  if year % 4 == 0:
  8.    if year % 100 != 0:
  9.      print "%d es bisiesto." % year
  10.  
  11.    else:
  12.      if year % 400 == 0:
  13. print "%d es bisiesto" % year
  14.      else:
  15. print "%d no es bisiesto." % year
  16.  
  17.  else:
  18.    print "%d no es bisiesto." %year
  19.  
  20.  return year
  21.  
  22. bisiesto()
  23.  

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