Observe o código Python abaixo, que utiliza a biblioteca NLT...

Próximas questões
Com base no mesmo assunto
Q3331512 Programação
Observe o código Python abaixo, que utiliza a biblioteca NLTK para tarefas de Processamento de Linguagem Natural.

import nltk nltk.download(‘punkt’) from nltk.tokenize import word_tokenize
texto = “Fundação Oswaldo Cruz (Fiocruz): Ciência e tecnologia em saúde para a população brasileira.” tokens = word_tokenize(texto)
contador = 0 resultado = 0 while contador < len(tokens):    for letra in tokens[contador]:    if letra.upper() in ‘FIOCRUZ’:       resultado += 1 contador += 1


O valor da variável resultado, ao final da execução do código, é:
Alternativas

Gabarito comentado

Confira o gabarito comentado por um dos nossos professores

Gabarito: A

Fundamento decisivo: O que decidia a questão era a contagem, em cada token gerado por word_tokenize, de cada caractere cujo upper() pertence à string 'FIOCRUZ'.

Tema central: contagem de caracteres
Análise das alternativas
A
Certa
A alternativa A está correta porque o código soma 1 para cada caractere de cada token cuja versão em maiúscula pertence a 'FIOCRUZ'. Na tokenização usual do texto, essa contagem totaliza 32.
B
Errada
Está errada porque apresenta 33, mas a contagem efetiva dos caracteres válidos resulta em 32. Excede o total correto em 1.
C
Errada
Está errada porque apresenta 34, enquanto a soma correta das ocorrências de caracteres cujo upper() pertence a 'FIOCRUZ' é 32. Excede o total correto em 2.
D
Errada
Está errada porque apresenta 35, mas o procedimento descrito no código leva a 32. Excede o total correto em 3.
E
Errada
Está errada porque apresenta 36, e não há base na execução lógica do código para esse valor. A soma correta é 32, portanto esta alternativa excede o total em 4.
Pegadinha da questão
A confusão real era tratar o operador "in" como busca da palavra "Fiocruz" ou de uma sequência, quando aqui ele testa se cada caractere, após upper(), pertence ao conjunto de letras da string "FIOCRUZ". Também era fácil errar ao contar letras acentuadas como equivalentes às sem acento, o que a condição não faz.
Dica para questões semelhantes
  • Quando houver laço sobre token e laço interno sobre caractere, verifique se a soma ocorre por ocorrência de letra, e não por palavra.
  • Em expressões do tipo caractere in "STRING", leia como teste de pertencimento a um conjunto de caracteres, não como busca de palavra inteira.
  • Se houver upper() antes da comparação, trate a verificação como insensível a maiúsculas e minúsculas, mas sem eliminar acentos.
  • Pontuação pode virar token separado na tokenização, mas só altera o resultado se também satisfizer a condição do if.

Clique para visualizar este gabarito

Visualize o gabarito desta questão clicando no botão abaixo