EP2
EP2 - Ordenação de palavras de um texto pela frequência.
Os objetivos deste são:
- aprender o conceito de dicíonário;
- praticar busca e ordenação;
- exercitar listas como parâmetros de funções.
Dicionários
Em Ciência da Computação um dicionário (ou tabela de símbolos) é um conjunto de objetos ou itens cada um dotado de uma chave e de um valor. As chaves podem ser números inteiros (valores da classe int) ou strings (valores da classe str) ou valores de outros classes de dados.
Por exemplo, no EP1 foi criado um dicionário em que as chaves eram os caracteres em um texto e o valor de cada chave era o número de ocorrência do caractere no texto.
Um dicionário está sujeito a dois tipos de operações:
- inserção: consiste em introduzir um objeto na tabela; e
- busca: consiste em encontrar um elemento que tenha uma dada chave.
Nesse exercício programa vocês resoverão o seguinte problema.
Problema
Escreva um programa que lê um texto de um arquivo, cria um dicionário em que as chaves correspondem às palavras no texto e em que os respectivos valores sejam o número de ocorrências da palavra no texto.
Por uma palavra entenderemos uma sequência de caracteres no string LETRAS definido no início do esqueleto do EP.
Ao final o programa exibirá o dicionário criado e em ordem decrescente de seus valores.
Como no EP1, o dicionário será representado através de duas listas. Uma lista contendo as chaves e outra os valores.
O que você deve fazer:
- Faça o download do arquivo esqueleto_ep2.py e drummond.txt (dos links abaixo).
- Mude o nome do arquivo esqueleto_ep2.py para NUSP_ep2.py, onde o NUSP é o seu número usp.
- Abra o arquivo no spyder (ou outro editor ou ambiente apropriado para desenvolver programas em Python)
- Leia e preencha o cabeçalho com o seu nome, nusp, etc. Não modifique o resto do cabeçalho.
- Execute o arquivo para ver se está tudo ok. O programa vai pedir o nome de um arquivo, use o arquivo "drummond.txt" para testes. Para isso ele deve estar na mesma pasta que o seu programa NUSP_ep2.py. O programa deve imprimir algo como:
Digite o nome do arquivo: drummond.txt
Vixe, ainda não implementei a função conta_palavras!
Palavras encontradas no arquivo drummond.txt
-------------------------------------------
Quantidade de palavras: 0
Palavra | QuantidadePalavras ordenadas decrescentemente pela frequência
----------------------------------------------------
Vixe, ainda não implementei a função ordena_decrescente!
Quantidade de palavras: 0
Palavra | QuantidadeFIM!
-
Antes de escrever cada função, leia atentamente a função main() até entender o que ela faz e então planeje como as demais funções devem ser implementadas para que o seu programa gere a saída mostrada no item 10.
- Escreva as funções indice(item, seq), conta_palavras(texto) e ordena_decrescente(p, q). A ordenação pode ser feita por qualquer método que você conhecer (ou invente o seu). Escreva uma função de cada vez, e teste cada uma separadamente. Você pode escrever outras funções auxiliares se desejar.
- Não modifique a função main().
- Teste o EP1 completo, chamando agora a função main(), com outros arquivos de texto também.
- A saída para o arquivo drummond.txt deve ser:
Digite o nome do arquivo: drummond.txt
Palavras encontradas no arquivo drummond.txt
-------------------------------------------
Quantidade de palavras: 23
Palavra | Quantidade
no | 7
meio | 7
do | 7
caminho | 7
carlos | 1
drummond | 1
de | 2
andrade | 1
tinha | 7
uma | 7
pedra | 7
nunca | 2
me | 2
esquecerei | 2
desse | 1
acontecimento | 1
na | 1
vida | 1
minhas | 1
retinas | 1
tão | 1
fatigadas | 1
que | 1
Palavras ordenadas decrescentemente pela frequência
----------------------------------------------------
Quantidade de palavras: 23
Palavra | Quantidade
no | 7
meio | 7
do | 7
caminho | 7
tinha | 7
uma | 7
pedra | 7
de | 2
nunca | 2
me | 2
esquecerei | 2
carlos | 1
drummond | 1
andrade | 1
desse | 1
acontecimento | 1
na | 1
vida | 1
minhas | 1
retinas | 1
tão | 1
fatigadas | 1
que | 1
FIM!
- Após testar o seu programa com vários textos, entregue o arquivo NUSP_ep2.py (onde NUSP é o seu número USP) usando o botão ENVIAR mais abaixo. Não deixe de seguir as instruções para entrega de EPs.
Sobre a entrega:
A primeira entrega deve ser feita até o dia 18/08 (até 23:55 h). Esses EPs receberão comentários até o dia 20/08 e uma nova versão (corrigida) poderá ser entregue até o dia 22/08 (23:55 h). A nota do trabalho será a da versão do dia 22/08.
- 10 agosto 2016, 12:42 PM
- 12 agosto 2016, 11:01 AM