Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

msmsms

programa que analisa as temperaturas medias de 4 cidades

Mensagens Recomendadas

msmsms

gostaria que me ajudassem a perceber esta resolução:

- as partes que me custam e entender sao mais as dos ciclos...

# calcula as temperaturas medias de 4 cidades
# cada linha do ficheiro corresponde a 1 cidade

def temp(f):
    linha = f.readline()
    while linha == '\n':
        linha = f.readline()
    if linha == '':
        return -1 #retorna -1 porquê?
    else:
        a = linha[:-1].split()   
        for i in range (len(a)):
            a[i] = float(a[i])        
        return a
    
def medias(fich):
    f = open (fich, 'r')
    media = []
    linha = temp(f)
    while linha != -1:
        soma = 0
        for elem in linha:
            soma = soma + elem
        media.append(soma/len(linha))
        linha = temp(f)
    return media

if __name__ == '__main__':
    print medias('C:\\ficheiros\\temperaturas.txt')

EXERCICIO

- desenvolver um programa que analise as temperaturas medias de 4 cidades

- as temperaturas encontram-se num ficheiro: temperaturas.txt

- determinar os valores maximos e minimos

- mostrar o grafico do resultado

- cada linha do ficheiro corresponde aos dados de uma cidade

FICHEIRO: temperaturas.txt

10.5 11.3 12.8 14.5 16.7 19.4 21.5 21.9 20.4 17.4 13.7 11.1

9.3 10.3 11.8 13.5 16.0 18.9 20.8 21.1 19.7 16.1 12.3 9.7

9.2 10.3 11.5 13.3 15.7 18.5 20.1 20.1 18.8 15.7 12.1 9.4

12.0 12.5 13.7 15.2 17.8 20.7 23.3 23.6 22.0 18.8 15.1 12.7

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
HIT_Braga

O

return -1

normalmente os programadores usam números negativos para definir ERRO. No teu caso Se existir uma linha em Branco a função def retorna -1 e a função que calcula a média não faz o calculo porque é uma linha branca.

Se não tivesses isto, se por acaso o ficheiro tivesse uma linha em branco o programa ia brekar, porque não sabia o que fazer com "NADA".

Atenção: eu também estou a iniciar em Python, mas tenho quase a certeza que é isto...

Posso ajudar em mais alguma coisa

Sds,

HIT


" Elogios não me elevam, ofensas não me rebaixam, sou o que sou e não o que acham! "

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
hmiguel

Resolução um bocado confusa...

def medias(fh):

f = open(fh,'r')

cidades = f.readlines() #lista com 4 elementos, que sao as 4 linhas

for temp in cidades: #Por cada elemento
	temperaturas = [float(x) for x in temp.split()] #transforma para lista de floats
	print "Media:",sum(temperaturas)/len(temperaturas)
	print "Maxima:",max(temperaturas)
	print "Minima:",min(temperaturas)
	print

medias('temperaturas.txt')


"Homem que é Homem não usa Java!"

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
msmsms

eu gostava que a teu programa funciona-se mas a verdade é que não funciona...

Resolução um bocado confusa...

def medias(fh):

f = open(fh,'r')

cidades = f.readlines() #lista com 4 elementos, que sao as 4 linhas

for temp in cidades: #Por cada elemento
	temperaturas = [float(x) for x in temp.split()] #transforma para lista de floats
	print "Media:",sum(temperaturas)/len(temperaturas)
	print "Maxima:",max(temperaturas)
	print "Minima:",min(temperaturas)
	print

medias('temperaturas.txt')

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
hmiguel

eu gostava que a teu programa funciona-se mas a verdade é que não funciona...

Então?

fica aí o output...

hmiguel@laptop ~/Desktop $ python cidades.py
Media: 15.9333333333
Maxima: 21.9
Minima: 10.5

Media: 14.9583333333
Maxima: 21.1
Minima: 9.3

Media: 14.5583333333
Maxima: 20.1
Minima: 9.2

Media: 17.2833333333
Maxima: 23.6
Minima: 12.0


"Homem que é Homem não usa Java!"

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
HIT_Braga

Acho que mais importante do que funcionar, é perceberes o que se está a fazer.

O código que colocas-te funciona bem, tem mais linhas do que este último mas funca, então deves procurar entender.

Sds,

HIT


" Elogios não me elevam, ofensas não me rebaixam, sou o que sou e não o que acham! "

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.