Questão de Programação — Linguagens de programação — FGV 2024
Programação›Linguagens de programação
Código
fg075484
Banca
FGV
Órgão
AL-PR
Ano
2024
Nível
Médio
Cargo
Técnico Legislativo - Suporte e Manutenção
Considere o seguinte trecho de código em Python:Ao final da execução desse código, o resultado exibido no console é:msg1: A letra 'a' aparece 4 vezes.msg2: A letra 'a' aparece 0 vezes.msg3: A letra 'a' aparece 1 vezes.O código ainda funcionará corretamente se o trecho definido como ‘qtd = contar_ocorrencias(valor, letra_cont)’ for substituído por:
Aqtd = chave.count(valor)
Bqtd = chave.count(letra_cont)
Cqtd = valor.count(chave)
Dqtd = len([letra for letra in valor if letra == letra_cont])
Eqtd = sum(1 for letra in chave if letra == letra_cont)
Revelar gabarito e comentário▾
GabaritoD — qtd = len([letra for letra in valor if letra == letra_cont])
Comentário gerado por IA. É um apoio ao estudo, ancorado em fontes, mas pode conter imprecisões — confira sempre na fonte oficial (lei, súmula, edital e gabarito da banca). Encontrou um erro? Use “Reportar”.
Contagem de ocorrências em strings Python
Gabarito: letra D. A alternativa correta usa uma list comprehension para percorrer cada caractere da string valor e filtrar apenas aqueles iguais a letra_cont, contando o tamanho da lista resultante com len(). Isso reproduz exatamente o comportamento da função contar_ocorrencias(valor, letra_cont), que conta quantas vezes um caractere específico aparece em uma string. As demais alternativas ou invertem a ordem dos argumentos do método count() ou aplicam o método ao objeto errado.
O problema central desta questão é entender o que a função contar_ocorrencias faz e como o método count() funciona em Python. A função recebe dois parâmetros: valor (a string a ser analisada) e letra_cont (o caractere a ser contado). Internamente, ela deve percorrer a string valor e contar quantas vezes o caractere letra_cont aparece. O método count() de strings em Python faz exatamente isso: string.count(substring) retorna o número de ocorrências não sobrepostas da substring na string. Portanto, a chamada correta seria valor.count(letra_cont). A pegadinha está em inverter os argumentos: chave.count(valor) tentaria contar a string inteira valor dentro de chave, o que não faz sentido no contexto. A alternativa D, embora mais verbosa, é funcionalmente equivalente e, portanto, correta.
Para fixar: a sintaxe do método count() é objeto.count(elemento), onde objeto é a string que será pesquisada e elemento é o que se procura. Na questão, valor é a string que contém o texto a ser analisado, e letra_cont é o caractere procurado. Qualquer alternativa que inverta essa ordem ou aplique o método a chave (que provavelmente é outra variável, talvez a chave de um dicionário) estará errada. A alternativa D usa uma construção mais explícita, mas que produz o mesmo resultado.
A banca explora a confusão entre os argumentos do método count(). O candidato pode pensar que chave.count(valor) está correto porque chave parece ser a string principal, mas na verdade valor é a string a ser analisada. A alternativa D é a única que mantém a lógica correta, mesmo usando uma sintaxe diferente.
1Identificar o objeto (valor)
2Identificar o alvo (letra_cont)
3Aplicar count() na ordem certa
4Comparar com a função original
LEVEL · soulevel.com.br
Alternativa A — ❌ Incorreta
chave.count(valor) está errado porque inverte os argumentos. O método count() deve ser chamado na string que será pesquisada (valor), e o argumento deve ser o caractere procurado (letra_cont). Aqui, ele tenta contar a string valor dentro de chave, o que não corresponde à função original.
Alternativa B — ❌ Incorreta
chave.count(letra_cont) também está errado, pois aplica o método count() à variável chave, e não a valor. A função original conta as ocorrências em valor, não em chave. A ordem dos argumentos está correta, mas o objeto está errado.
Alternativa C — ❌ Incorreta
valor.count(chave) inverte os argumentos. O método count() deve receber o caractere a ser contado (letra_cont), não a string chave. Isso tentaria contar a string chave dentro de valor, o que não é o que a função faz.
Alternativa D — ✅ Correta ⟵ GABARITO
len([letra for letra in valor if letra == letra_cont]) é uma list comprehension que percorre cada caractere de valor, filtra aqueles iguais a letra_cont e conta o tamanho da lista resultante. Isso é funcionalmente equivalente a valor.count(letra_cont), pois conta exatamente quantas vezes letra_cont aparece em valor. É a única alternativa que mantém a lógica correta.
Alternativa E — ❌ Incorreta
sum(1 for letra in chave if letra == letra_cont) percorre a variável chave em vez de valor. A função original conta as ocorrências em valor, não em chave. Portanto, o objeto iterado está errado, mesmo que a lógica de contagem esteja correta.