import cTurtle
def le_ficheiro(nome):
f_in = open(nome,'r')
dados = []
linha = f_in.readline()
while linha !='' and linha != '\n':
pos = linha[:-1].split()
dados.append((int(pos[0]), int(pos[1])))
linha = f_in.readline()
f_in.close()
return dados
def analisa_frequencias(dados):
frequencias={}
for par in dados:
for i in range(2):
frequencias[par[i]]=frequencias.get(par[i],0)+1
return frequencias
def desenha_coluna(tartaruga, numero, altura):
x=(numero-1)*20 # para começar no inicio do eixo
y=altura *10
# escrever número no eixo
tartaruga.up()
tartaruga.goto(x+5,-20)
tartaruga.down()
tartaruga.write(str(numero), move=False, align='left', font=('Arial', 18, 'normal'))
#desenhar coluna
tartaruga.up()
tartaruga.goto(x+2,0)
tartaruga.down()
tartaruga.goto(x+2,y)
tartaruga.goto(x+18,y)
tartaruga.goto(x+18,0)
# escrever número da frequência
tartaruga.up()
tartaruga.goto(x+5,y+5)
tartaruga.down()
tartaruga.write(str(altura), move=False, align='left', font=('Arial', 10, 'normal'))
def visualiza_frequencias(tartaruga,frequencias):
# desenhar eixo dos x
tartaruga.up()
tartaruga.goto(0,0)
tartaruga.down()
tartaruga.goto(20*6,0)
# desenhar frequências
for i in range(1,7):
desenha_coluna(tartaruga,i,frequencias.get(i))
tartaruga.hideturtle()
def main613(ficheiro):
# Leitura dos dados
pares = le_ficheiro(ficheiro)
# Análise de frequências
frequencias=analisa_frequencias(pares)
# Visualização de frequências
tartaruga= cTurtle.Turtle()
visualiza_frequencias(tartaruga,frequencias)
tartaruga.exitOnClick()
A leitura de dados a partir de um ficheiro já é uma questão resolvida em problemas anteriores. Segue-se depois a contagem do número de ocorrências. Usamos um dicionário em que a chave é o número e o valor é igual ao número de vezes que ocorreu. A visualização é desdobrada em duas operações: uma, permite desenhar uma coluna e é usada por outra definição (visualiza_frequências) que percorre com um ciclo for os 6 números, imprimindo a coluna correspondente. Note-se o uso do comando de escrita de texto na tela e as suas opções (write).
Só falta transcrever o programa, executar e ... visualizar!
Sem comentários:
Enviar um comentário