domingo, 17 de outubro de 2010

Problema 4.7

Relembremos o enunciado:


Um ano é bissexto, isto é tem 366 dias, se for divisível por 4. Existem, no entanto excepções: se for divisível por 100 então não é bissexto. Mas também esta excepção tem uma excepção: se forem também divisíveis por 400 são bissextos. Escreva um programa que determine se um dado ano é bissexto ou não.

Mais um enunciado a requerer análise cuidada. Mas vejamos alguns exemplos.

2400: é divisível por 4 ? Sim! Então é ... Calma! Também é divisível por 100! Logo... Calma mais uma vez, não se precipite, pois também é divisível por 400. Conclusão: é bissexto!!!

A maneira mais fácil de fazer é colocar o caso inequívoco em primeiro lugar no nosso teste. E esse é ser divisível por 400. Vem depois a primeira excepção: divisível por 100. Só de seguida o caso usual da divisibilidade por 4. Se tudo isto falhar, garantidamente não é bissexto. Em programa:


def ano_bissexto(ano):
""" Determina se um ano é bissexto."""
if (ano % 400) == 0:
return True
elif (ano % 100) == 0:
return False
elif (ano % 4) == 0:
return True
else:
return False


Quando será o próximo ano bissexto??

6 comentários:

  1. Professor, só agora que reparei, então o teste está marcado para meia hora antes da frequência de Analise matemática 3, sendo ate que essa frequência ainda tenho que me deslocar para o polo 1 para faze-la. Como é que aqueles que não têm carro vão fazer isso, como eu por exemplo? No máximo 15 minutos para sair do pólo 2 para o pólo 1? Eu acho que isso está mal organizado

    ResponderEliminar
  2. Professor, na ficha do PIL, já instalei o PIL e tudo mas a imagem abre-me em Windows photo viewer e só me aparece uma mensagem a dizer que não consegue mostra-la, ou porque esta deletada ou a sua localização não esta disponível. Qual será o problema professor?

    ResponderEliminar
  3. Para responder preciso começar por saber qual a plataforma (windows, mac, linux), o que instalou e como instalou, como fez o seu código, etc.

    ResponderEliminar
  4. minha plataforma é o Windows 7, utilizo o wing 3.2, foi ao site do PIL e já instalei as duas versões mais recentes a ver se dava e o código que estou a usar é copiado do exemplo 1.1 da ficha PIL, estou a usar o python versão 2.6.6

    ResponderEliminar
  5. Fui ver a um blog de python e afinal era só instalar outro programa de visualização, o IrfanView, obrigado na mesma

    ResponderEliminar
  6. Lamento de não ter sido de muita ajuda. Mas fica a informação para todos!!

    ResponderEliminar