Olá! Então é o seguinte: eu tenho um projeto de programação em que sao me dados ficheiros com as temperaturas desde 1890 por exemplo : Algeria,1890,06,22.48
e já fiz as seguintes funções:
def data_fraccionaria(ano, mes):
if 1 <= mes <= 12 and 1800 <= ano <= 2016:
data_frac = ano + (mes - 0.5) / 12
else:
raise ValueError("data_fraccionaria: argumentos errados")
return data_frac
def ler_ficheiro(nome_ficheiro):
u"""Lê os dados de temperatura de um ficheiro.
A 1ª linha do ficheiro (o cabeçalho) é descartada.
Cada uma das restantes linhas é lida e dá origem a um dado de temperatura
que é acrescentado a uma lista de dados.
Requires: nome_ficheiro é uma string que representa o caminho para um
ficheiro de texto; as linhas deste ficheiro, a partir da 2ª linha, têm
de estar no formato
país,ano,mês,temperatura
ou seja, são 4 strings separadas por vírgulas;
as strings devem poder ser convertidas para string, int, int e float,
respectivamente; não podem surgir vírgulas nos nomes dos países.
Ensures: uma lista de quádruplos do tipo (string, int, int, float)
em que cada quádruplo representa (país, ano, mês, temperatura).
"""
fich = open(nome_ficheiro)
dados = []
cabecalho = fich.readline()
# print cabecalho # este print é usado em testes
for linha in fich:
dado = linha.strip().split(",") # tudo ainda em formato lista de texto
pais = dado[0]
ano = int(dado[1])
mes = int(dado[2])
temperatura = float(dado[3])
dados.append((pais, ano, mes, temperatura))
fich.close()
return dados
Agora quero definir a seguinte função:
def escrever_ficheiro_data_fraccionaria(dados, nome_ficheiro):
u"""Escreve os dados, com as datas em formato fraccionário, num ficheiro.
Coloca o cabeçalho "Country,Date,Temperature" como 1ª linha do ficheiro.
Cada uma das restantes linhas corresponde à conversão, para texto, de um
dado da lista dados passada como 1º argumento.
A data é convertida para formato fraccionário, com arredondamento à terceira casa decimal; portanto, passa a ser
representada por um float, e não por dois int.
As 3 strings representando as componentes dos dados são separadas por
vírgulas.
Requires: dados é uma lista de quádruplos do tipo (string, int, int, float)
em que cada quádruplo representa (país, ano, mês, temperatura);
nome_ficheiro é uma string que representa o caminho para um ficheiro de
texto a criar.
Ensures: é criado um ficheiro cuja 1ª linha é "Country,Date,Temperature" e
em que cada uma das restantes linhas contém 3 strings separadas por vírgulas,
representando, respectivamente, país, data em formato fraccionário e
temperatura.
"""
Já estou há muito tempo à volta disto e não estou a conseguir, se alguém me ajudar agradecia!
↧