Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Aplicando o conhecimento adquirido e duvida sobre lentidão

Salve pessoal!

Aqui para demonstrar o código que criei após o curso, aplicando os conhecimentos e realizando um comportamento similar com o visto na aula:

from collections import Counter

class AluraCollections:

    def __init__(self, text_base):
        self.text_base = text_base.lower()
        self.list_most_common()


    def __str__(self):
        return str(self.char_percentage())


    def char_counter(self):
        for char in self.text_base:
            char_counter = Counter(self.text_base)
        return char_counter

    def char_percentage(self):
        char_counter_sum = sum(self.char_counter().values())
        char_list = self.char_counter()
        char_percentage = [(letter, frequency / char_counter_sum) for letter, frequency in char_list.items()]
        return char_percentage

    def list_most_common(self, quantity = 10):
        char_percentage = self.char_percentage()
        list_length = int(input('Digite quantos itens deseja verificar: '))

        if list_length == '':
            list_length = quantity

        most_common_itens = Counter(dict(char_percentage)).most_common(list_length)

        for char, value in most_common_itens:
            print('Letra: {} aparece {:.2f}%'.format(char, value * 100))



#_____TEST ZONE_____
def code_test():
    test = AluraCollections('Olá, este é meu texto de teste para fixar o conteúdo aprendido na Alura')

if __name__ == "__main__":
    code_test()

O intuito do código foi, além de usar OO para separar as responsabilidades, dar um pouco mais de liberdade ao usuário perguntando quantos dos caracteres mais comuns ele gostaria de visualizar.

Finalizando com uma pergunta, notei que se trocar o texto de input para algo bem maior (como o utilizado na aula, por exemplo) meu código demora muito mais para rodar.

Este comportamento se deve ao estado atual de meu código, tendo margem para melhorias; ou seria algum problema com minha máquina mesmo? rsrsrs

Muito obrigado pela atenção,

Bons estudos a todos.

2 respostas

Cara eu botei um texto grandinho aqui e foi na mesma hora

solução!

Você vai permanecer com essa dúvida por toda sua carreira na área hahaha.

É comum tudo rodar perfeito em ambiente de desenvolvimento, mas quando sobe para produção para ser usado por diversos dispositivos com diversas configurações e "variáveis de diagnóstico" diferentes, aí é a hora de você ligar o faról da laje e chamar o batman para ajudar a ler os logs que com certeza você implantou na aplicação durante o desenvolvimento.

Sobre a questão do "margem de melhora", você pode usar o primeiro problema gerado que foi a lentidão na sua máquina de desenvolvimento e usar o recurso de debug da IDE que você está utilizando para verificar como a sua aplicação está funcionando e nesse processo analisar e começar a desenvolver resoluções para diminuir o processamento do algoritmo que está utilizando ou até mesmo trocá-lo para algo mais eficiente para o que você está fazendo, o curso aqui da alura sobre algoritmos tem uma introdução sobre o tema, mas o papai google vai te mostrar muitas variedades bem completas sobre o tema, vale a pena conferir