viernes, 26 de agosto de 2011

Año bisiesto en python

El primer script que hice en python fue un programa que nos dice si un año es bisiesto o no.

Aquí pego el código:
anio=input("Ingrese un año: ")
#Un año es bisiesto si es divisible entre 4,
#excepto aquellos divisibles entre 100 pero no entre 400.
if anio % 4 == 0:
if not anio %100==0:
print "El año", anio, "es bisiesto"
elif anio %400==0:
print "El año", anio, "es bisiesto"
else:
print "El año", anio, "no es bisiesto"
else:
print "El año", anio, "no es bisiesto"
Obviamente que se puede hacer mucho más breve de la siguiente manera:
anio=input("Ingrese un año")
if anio % 4 == 0 and (anio % 100 != 0 or anio % 400 == 0):
print "El año es bisiesto"
else:
print "El año no es bisiesto"
Fue el primer programa así que es medio boludo xD

4 comentarios:

  1. como puedo puedo calcular los dias vividos de una persona ademas tomar en cuenta los años bisiestos

    ResponderEliminar
    Respuestas
    1. Podés hacerlo usando el módulo datetime de Python, que ya tiene en cuenta los años bisiestos automáticamente.

      Por ejemplo en Python 2.7:

      from datetime import date

      fecha_nacimiento = date(1990, 5, 10) # cambiar por la fecha real
      hoy = date.today()

      dias_vividos = (hoy - fecha_nacimiento).days

      print "Has vivido", dias_vividos, "días"

      No hace falta calcular los bisiestos manualmente porque datetime ya lo maneja internamente.

      Eliminar
  2. Te as equivocado en la función de resumen, es un AND, lo tienes alreves :):

    SI ((año divisible por 4) Y ((año no divisible por 100) O (año divisible por 400))) ENTONCES
    es bisiesto
    SINO
    no es bisiesto

    ResponderEliminar
    Respuestas
    1. Sí, esa es otra forma equivalente de expresarlo

      La condición completa que dices sería:

      (año % 4 == 0) and ((año % 100 != 0) or (año % 400 == 0))

      Mi versión larga hace exactamente esa comprobación pero en pasos separados con if anidados.

      Ambas formas son correctas, la diferencia es que una es más compacta y la otra más explícita para entender la lógica.

      Eliminar