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?
- def incluiA(lista, subst):
for elem in lista:
if elem[0] == subst:
elem[1]+=1
lista.append([subst,1])
- def inclui(lista, subst):
for i in range(len(lista)):
if lista[i][0] == subst:
lista[i][1]+=1
return
lista.append([subst,1])
- def inclui(lista, subst):
res=0
try:
res = lista.index( subst )
except ValueError:
lista.append( [subst,1] )
lista[res][1]+=1
- def inclui(lista, subst):
try:
res = lista.index( [subst] )
lista[res][1]+=1
except ValueError:
lista.append( [subst,1] )
- 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