[ create a new paste ] login | about

Link: http://codepad.org/g7Ru83BX    [ raw code | fork ]

Python, pasted on Jul 15:
# -*- coding: utf-8 -*-
while True:
    data = raw_input("Digite uma data com o seguinte formato dd/mm/aaaa: ")
    if "/" not in data: print("A data precisa estar nesse formato dd/mm/aaaa");continue
    try:
    data = eval(data.replace("/", ","))
    except: continue
    if data[0] > 31 and data[1] > 12 or data[0] < 0 and data[1] < 0: print("Data totalmente inválida");continue 
    if data[0] > 31 or data[0] < 0: print("Dia Inválido");continue
    if data[1] > 12 or data[1] < 0: print("Mês Inválido");continue
    if data[2] < 0: print("Non ita vetus sodalis.");continue
    if data[2] % 400 == 0 or data[2] % 4 == 0 and data[2] % 100 != 0: print("Data Válida - É bissexto");break
    if data[2] % 100 == 0 and data[2] % 400 != 0: print("Data Inválida - Não é bissexto");break
    else: print("Data Inválida - Não é bissexto");break

# Linha 2 - Laço de repetição criado
#
# Linha 3 - Recebe a data passada pelo usuário
#
# Linha 4 - Checa se o caractere "/" não está na variável data, se não estiver uma mensagem é mostrada na tela e 
#o programa é reiniciado/voltado pro loop inicial.
#
# Linha 6 - Nesta linha é usado o eval, usei ele para transformar cada item da data(dia, mês, ano) em um item de 
#uma tupla, mas antes disso foi preciso usar o replace pra substituir o caractere de "/" por uma virgula.
#
# Linha 7 - Se ocorrer algum erro na conversão do eval o loop será reiniciado.
#
# Linha 8 - Se o primeiro item da tupla for maior que 31(dia) e o segundo item(mês) for maior que 12 ou se o 
#primeiro item for menor que zero e o segundo menor que zero também uma mensagem será mostrada avisando que a data 
#está inválida, logo depois o continue é acionado e o loop vai repetir o processo até que o usuário digite uma data válida.
#
# Linha 9 - Se o primeiro item da variável data (dia) for maior que 31 ou se for menor que zero uma mensagem será 
#mostrada na tela sinalizando que o dia está inválido e o programa será reiniciado.
#
# Linha 10 - Se o segundo item da variável data (mês) for maior que 12 ou se for menor que zero uma mensagem será mostrada na 
#tela sinalizando que o mês está inválido e o programa será reiniciado.
#
# Linha 11 - Se o último item (ano) da variável data for menor que zero será mostrada uma mensagem e o programa será reiniciado.
#
# Linha 12 - Seguindo um método pra calcular se o ano é bissexto é mostrada uma mensagem caso ele seja.
#
# Linha 13 - Seguindo um método pra calcular se o ano é bissexto é mostrada uma mensagem caso ele não seja.
#
# Linha 14 - Se nenhuma das condições anteriores forem verdade o número com certeza não é bissexto.


Create a new paste based on this one


Comments: