Pular para o conteúdo principal

Questão de Programação — Linguagens de programação — FGV 2024

ProgramaçãoLinguagens 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:Imagem associada para resolução da questãoAo 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:
  1. Aqtd = chave.count(valor)
  2. Bqtd = chave.count(letra_cont)
  3. Cqtd = valor.count(chave)
  4. Dqtd = len([letra for letra in valor if letra == letra_cont])
  5. 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.

  1. 1Identificar o objeto (valor)
  2. 2Identificar o alvo (letra_cont)
  3. 3Aplicar count() na ordem certa
  4. 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.

Gabarito: letra D

Link permanente: /questoes/fg075484