Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import calendar
- #construtores
- def cria_data(dia, mes, ano):
- if (mes in [1, 3, 5, 7, 8, 10, 12] and dia > 31) or \
- (mes in [4, 6, 9, 11] and dia > 30) or \
- (mes > 12):
- raise ValueError("Data invalida!")
- else:
- if (calendar.isleap(ano) and (mes == 2 and dia > 29)) or \
- (not calendar.isleap(ano) and (mes == 2 and dia > 28)):
- raise ValueError("Data invalida!")
- #temos uma data valida
- return {'dia': dia, 'mes': mes, 'ano': ano}
- #seletores
- def data_dia(data):
- return data['dia']
- def data_mes(data):
- return data['mes']
- def data_ano(data):
- return data['ano']
- #transformadores
- def escreve_data(data):
- data_string = str(data_dia(data)) + "/" + str(data_mes(data)) + "/" + str(data_ano(data))
- if data_ano(data) < 0:
- print(str(data_dia(data)) + "/" + str(data_mes(data)) + "/" + "0"*(4-len(str(abs(data_ano(data))))) + str(abs(data_ano(data))) + " AC")
- else:
- print(str(data_dia(data)) + "/" + str(data_mes(data)) + "/" + str(data_ano(data)))
- #reconhecedores
- def e_data(data):
- if (not isinstance(data, dict)) or \
- ('dia' not in data) or \
- ('mes' not in data) or \
- ('ano' not in data):
- return False
- if (data_mes(data) in [1, 3, 5, 7, 8, 10, 12] and data_dia(data) > 31) or \
- (data_mes(data) in [4, 6, 9, 11] and data_dia(data) > 30) or \
- (data_mes(data) > 12):
- return False
- else:
- if (calendar.isleap(data_ano(data)) and (data_mes(data) == 2 and data_dia(data) > 29)) or \
- (not calendar.isleap(data_ano(data)) and (data_mes(data) == 2 and data_dia(data) > 28)):
- return False
- return True
- #testes
- def data_anterior(data1, data2):
- if data_ano(data1) > data_ano(data2):
- return False
- elif data_ano(data1) < data_ano(data2):
- return True
- elif data_ano(data1) == data_ano(data2):
- if data_mes(data1) > data_mes(data2):
- return False
- elif data_mes(data1) < data_mes(data2):
- return True
- elif data_mes(data1) == data_mes(data2):
- if data_dia(data1) > data_dia(data2):
- return False
- elif data_dia(data1) < data_dia(data2):
- return True
- elif data_dia(data1) == data_dia(data2):
- return False
- def idade(data_nascimento, data_actual):
- if not data_anterior(data_nascimento, data_actual):
- raise ValueError("Ainda nem nasceu...")
- else:
- return data_ano(data_actual) - data_ano(data_nascimento)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement