Auditor de Controle Externo - Área de Informática - Analista de Sistemas
Considere o seguinte trecho de código Python que faz uma chamada a um serviço web e processa a resposta XML.Suponha que a resposta XML do serviço web seja a seguinte:O valor impresso pelo programa será:
ANome: Ciclano de Tal
BNome: Fulano de Tal
CNome: Beltrano da Silva
DNome: Antonio da Silva
EAluno não reconhecido
Revelar gabarito e comentário▾
GabaritoC — Nome: Beltrano da Silva
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”.
Processamento de XML em Python: ElementTree e a busca por elementos
Gabarito: letra C. O programa imprime Nome: Beltrano da Silva porque, ao percorrer a lista de elementos <aluno> e verificar a condição if aluno.find('matricula').text == '2024003', o único registro que satisfaz essa matrícula é o terceiro, cujo nome é Beltrano da Silva. A lógica central é o uso do método find() da biblioteca ElementTree para localizar um elemento filho e acessar seu texto, combinado com uma estrutura condicional que filtra o registro desejado.
O trecho de código apresentado utiliza a biblioteca padrão xml.etree.ElementTree do Python para fazer o parsing de uma resposta XML recebida de um serviço web. Essa biblioteca é a forma mais comum e nativa de manipular XML em Python, permitindo navegar pela árvore de elementos, buscar tags específicas e extrair seus conteúdos. O método find() é usado para localizar o primeiro elemento filho com a tag especificada, e o atributo .text retorna o conteúdo textual daquele elemento. No código, a variável root representa o elemento raiz do documento XML, e o laço for aluno in root.findall('aluno'): itera sobre todos os elementos <aluno> que são filhos diretos da raiz. Dentro do laço, a condição if aluno.find('matricula').text == '2024003': compara o texto do elemento <matricula> de cada aluno com a string '2024003'. Quando a condição é verdadeira, o programa imprime Nome: seguido do texto do elemento <nome> daquele aluno específico.
Para entender o resultado, é essencial analisar a estrutura do XML fornecido. O documento contém uma lista de alunos, cada um com os campos matricula e nome. Os dados são: matrícula 2024001 com nome Fulano de Tal, matrícula 2024002 com nome Ciclano de Tal, matrícula 2024003 com nome Beltrano da Silva, e matrícula 2024004 com nome Antonio da Silva. O programa procura especificamente pela matrícula '2024003', que corresponde ao aluno Beltrano da Silva. Portanto, a saída será exatamente Nome: Beltrano da Silva. As demais alternativas apresentam nomes de outros alunos que possuem matrículas diferentes, e a alternativa E sugere que nenhum aluno seria reconhecido, o que não ocorre porque a matrícula procurada existe no documento.
A pegadinha desta questão está na leitura atenta dos dados do XML e na compreensão de como o método find() funciona. Muitos candidatos podem se confundir com a ordem dos elementos ou com a possibilidade de o método find() retornar None caso a tag não exista, mas aqui todas as tags estão presentes. Outro ponto de atenção é que o código não verifica se aluno.find('matricula') retorna None antes de acessar .text, o que poderia gerar um erro, mas como todos os alunos têm o campo matrícula, isso não acontece. A banca explora exatamente a habilidade de rastrear o fluxo do programa com os dados fornecidos, sem armadilhas de sintaxe ou exceções.
Guarde o critério decisivo: a saída depende exclusivamente de qual matrícula é comparada na condição e de qual nome está associado a ela no XML. É essa correspondência que separa a alternativa correta das demais.
1Faz parsing do XML
2Percorre alunos (findall)
3Compara matrícula (find)
4Imprime nome do aluno
LEVEL · soulevel.com.br
Alternativa A — ❌ Incorreta
Apresenta o nome Ciclano de Tal, que corresponde à matrícula 2024002. Como o programa busca a matrícula '2024003', essa alternativa não é a saída correta. O erro está em associar o nome errado à matrícula procurada.
Alternativa B — ❌ Incorreta
Apresenta o nome Fulano de Tal, que corresponde à matrícula 2024001. Novamente, a matrícula não coincide com a procurada no código, tornando a alternativa incorreta.
Alternativa C — ✅ Correta ⟵ GABARITO
O programa imprime Nome: Beltrano da Silva porque a condição if aluno.find('matricula').text == '2024003' é verdadeira apenas para o aluno com matrícula 2024003, cujo nome é Beltrano da Silva. A lógica do código percorre todos os alunos e seleciona exatamente aquele cuja matrícula corresponde ao valor buscado.
Alternativa D — ❌ Incorreta
Apresenta o nome Antonio da Silva, que corresponde à matrícula 2024004. Como a matrícula procurada é '2024003', essa alternativa não reflete a saída do programa.
Alternativa E — ❌ Incorreta
Afirma que o aluno não seria reconhecido, o que é falso, pois existe um aluno com a matrícula '2024003' no XML. O programa encontra o registro e imprime o nome correspondente, então a saída não é essa mensagem de erro.