Procure outro emprego, porque o atual está atrasando a sua vida, Marcelo!
> Bom, digamos que tenho um programa onde a entrada de dados será um ano
> em 4 digítos e preciso mostrar na tela se o ano informado é bissexto ou não.
> A dúvida é: Tem como fazer o usuário digitar somente 4 digítos?
Para responder isso, precisaremos saber que tipo de interface de
usuário seu programa vai ter. É uma interface gráfica com janelas ou
será um script na linha de comando, ou ainda uma interface modo texto
de tela cheia como aquelas em Clipper?
> Como eu faço para descobrir se esse ano informado é ou não bissexto.
Outros colegas já deram o algoritmo. Aqui vai uma solução baseada na
módulo datetime que faz parte da biblioteca padrão de Python:
####################################
from datetime import date
def bissexto(ano):
try:
date(ano,2,29)
return True
except ValueError:
return False
####################################
Basicamente, a gente tenta criar um objeto date com o dia 29/fev do
ano em questão. Se der certo, é porque é bissexto; se uma exceção
ValueError for levantada, é porque o tal ano não tem dia 29/fev.
Para testar experimente isso:
####################################
for ano in range(1999,2013):
print ano, bissexto(ano)
####################################
O motivo de usar o módulo datetime é mostrar que na biblioteca padrão
do Python tem muita coisa pronta para usar. Por exemplo, se está
interessado em saber se um ano é bissexto, possivelmente precisará
fazer outras operações com datas, e o módulo datetime tem várias
classes e funções para este fim.
Ainda no tema datas, outro módulo muito bacana é o calendar.
Experimente digitar isso no interpretador interativo de python:
####################################
>>> import calendar
>>> calendar.prcal(2007)
>>> help(calendar)
####################################
Feliz 2007* para todos!
[ ]s
Luciano
* um ano não bissexto
========================================================
Antes de enviar sua mensagem dê uma lida em:
http://www.pythonbrasil.com.br/moin.cgi/AntesDePerguntar
========================================================
Links do Yahoo! Grupos
<*> Para visitar o site do seu grupo na web, acesse:
http://br.groups.yahoo.com/group/python-brasil/
<*> Para sair deste grupo, envie um e-mail para:
python-brasi...@yahoogrupos.com.br
<*> O uso que você faz do Yahoo! Grupos está sujeito aos:
http://br.yahoo.com/info/utos.html
if isleap(ano):
print "Ano %d é bissexto" % ano
Observação: O último ano de séculos ímpares (1700, 1900, 2100, etc.) são
múltiplos de quatro mas não são bissextos.
[]'s
Rodrigo Cacilhas
> On 1/6/07, Deocleciano Maranhao Neto <ntde...@gmail.com
> <mailto:ntdeocle%40gmail.com>> wrote:
> >
> >
> > if (ano%4==0 and ano%100 != 0) or (ano%4==0 and ano%100==0 and
> > ano%400==0):
> >
> Na verdade, se o ano é múltiplo de 400, com certeza é múltiplo de
> 4 e de 100
> também, portanto poderia ficar assim
>
> if (ano%4==0 and ano%100 != 0) or (ano%400==0):
>
> :-)
> --
> Renato Besen
> Graduando em Ciências da Computação
> Centro Tecnológico - CTC
> Departamento de Informática e Estatística - INE
> renat...@gmail.com <mailto:renatobesen%40gmail.com>