FC ConcursosFC Concursos

Questão FC213568

Qual implementação da função inclui executa o que foi descrito?

Linguagens de Programação

CESGRANRIO · 2024

Um programador está desenvolvendo um programa Python que irá ler um texto e produzir um relatório contendo os substantivos presentes nesse texto e o número de vezes que cada substantivo aparece no texto. Por exemplo, o texto “Hoje é domingo de carnaval.

 

Hoje é dia de samba.” iria produzir o seguinte resultado:

 

Hoje                   2

domingo            1

carnaval            1

dia                     1

samba               1

 

Os substantivos estão organizados de acordo com a lista inicial:

 

[ ["Hoje", 2], ["domingo", 1], ["carnaval", 1], ["dia", 1], ["samba", 1] ]

 

Para completar o programa, é necessário construir uma função, chamada inclui, que receba como parâmetros uma lista de palavras, como a lista acima, e a próxima palavra do texto. Caso essa palavra recebida como parâmetro já se encontre na lista, deve-se adicionar uma unidade à quantidade de palavras existentes no texto.

 

Caso contrário, a nova palavra deverá ser inserida no final da lista com o valor da quantidade igual a 1.

 

Por exemplo:

 

\(\bullet\) se a função inclui for chamada com a lista inicial e a palavra "carnaval" como parâmetros, a nova configuração da lista passará a ser:

 

[ ["Hoje", 2], ["domingo", 1], ["carnaval", 2], ["dia", 1], ["samba", 1] ]

 

\(\bullet\) se a função inclui for chamada com a lista inicial e a palavra "folia" como parâmetros, a nova configuração da lista passará a ser:

 

[ ["Hoje", 2], ["domingo", 1], ["carnaval", 1], ["dia", 1], ["samba", 1], ["folia", 1] ]

 

Qual implementação da função inclui executa o que foi descrito?

  1. def incluiA(lista, subst):

             for elem in lista:

                if elem[0] == subst:

                     elem[1]+=1

              lista.append([subst,1])

  2. def inclui(lista, subst):

             for i in range(len(lista)):

                if lista[i][0] == subst:

                     lista[i][1]+=1

                     return

             lista.append([subst,1])

  3. def inclui(lista, subst):

              res=0

              try:

                  res = lista.index( subst )

             except ValueError:

                  lista.append( [subst,1] )

            lista[res][1]+=1

  4. def inclui(lista, subst):

              try:

                  res = lista.index( [subst] )

                  lista[res][1]+=1

              except ValueError:

                  lista.append( [subst,1] )

  5. def inclui(lista, subst):

               try:

                   res = lista.index( subst )

                   lista[res][1]+=1

               except ValueError:

                   lista.append([subst,1])

Mostrar resposta e comentário

Gabarito

B

Comentário do professor

A alternativa correta implementa exatamente o comportamento pedido: percorre a lista de pares [palavra, contagem], atualiza a contagem se a palavra for encontrada e, caso contrário, adiciona a nova palavra com contagem 1.


Explicação passo a passo:


- for i in range(len(lista)):
Percorre os índices das sublistas para acessar cada par lista[i].


- if lista[i][0] == subst:
Compara a palavra armazenada na posição 0 da sublista com a palavra recebida (subst).


- lista[i][1] += 1
Se houver correspondência, incrementa a contagem (posiçã o 1 da sublista). A operação altera a lista passada como parâmetro (mutabilidade), atualizando o resultado imediatamente.


- return
Interrompe a execução da função assim que a palavra é encontrada e atualizada. Isso evita que, após atualizar, a função continue e acrescente erroneamente um novo par.


- lista.append([subst,1])
Só é executado se o loop terminar sem encontrar a palavra; nesse caso, a palavra é inserida no final com contagem igual a 1.


Observações práticas: a função modifica a lista in-place e tem custo linear \(O(n)\) no número de palavras distintas na lista. Também é sensível a maiúsculas/minúsculas se não houver normalização prévia.

Conteúdo do catálogo FC Concursos · Atualizado em

Continue aprendendo