Questão de Programação — Linguagens de programação — CESPE / CEBRASPE 2025
Programação›Linguagens de programação
Código
ce203946
Banca
CESPE / CEBRASPE
Órgão
FUB
Ano
2025
Nível
Médio
Cargo
Técnico de Tecnologia da Informação
Julgue o item a seguir, referentes a Python.Considere que, na tentativa de calcular a pontuação final de estudantes universitários com base nas suas notas e nos pesos atribuídos às disciplinas, sem usar bibliotecas externas, certo programador tenha desenvolvido o seguinte código em Python.Nessa situação hipotética, a execução do código será bem-sucedida e imprimirá no terminal a lista pontuacoes_finais com as pontuações finais ponderadas para cada estudante.
CCerto
EErrado
Revelar gabarito e comentário▾
GabaritoE — Errado
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”.
Python: cálculo de pontuação ponderada
Gabarito: letra E (ERRADO). A execução do código não será bem-sucedida e não imprimirá a lista pontuacoes_finais com as pontuações ponderadas, pois há um erro de lógica no cálculo: a multiplicação entre a lista de notas e a lista de pesos não é feita elemento a elemento, mas sim como uma operação de concatenação/repetição de listas, o que gera um resultado incorreto ou um erro de tipo. A questão testa o conhecimento sobre operações com listas em Python, especificamente a diferença entre multiplicar listas (que repete elementos) e multiplicar elementos de listas (que exige iteração ou compreensão de lista).
O problema central está na forma como o programador tentou calcular a pontuação final. Em Python, o operador * aplicado a duas listas não realiza multiplicação elemento a elemento. Quando você escreve notas * pesos, o Python tenta repetir a lista notas um número de vezes igual ao comprimento da lista pesos, ou vice-versa, dependendo da ordem. Por exemplo, se notas = [8.0, 7.5] e pesos = [2, 3], a expressão notas * pesos tentará repetir a lista notas 2 vezes (já que pesos tem 2 elementos), resultando em [8.0, 7.5, 8.0, 7.5], e não em uma lista com as multiplicações [16.0, 22.5]. Isso é um erro de lógica que impede o cálculo correto das pontuações ponderadas.
Para realizar a multiplicação elemento a elemento, o programador deveria usar uma estrutura de repetição (como for) ou uma compreensão de lista, por exemplo: [n * p for n, p in zip(notas, pesos)]. A função zip combina os elementos das duas listas em pares, e a compreensão de lista multiplica cada par. Sem isso, o código não produzirá o resultado esperado.
A banca explora exatamente essa confusão: o candidato pode pensar que o operador * entre listas realiza multiplicação elemento a elemento, mas em Python ele tem outro comportamento. Essa é uma pegadinha clássica para quem está aprendendo a linguagem e não conhece as operações específicas com listas.
Guarde a distinção: multiplicar uma lista por um inteiro repete a lista; multiplicar duas listas entre si não é uma operação definida para o cálculo elemento a elemento — é preciso iterar ou usar zip. É exatamente nesse ponto que a questão se decide.
1notas * pesos
2[-] Repete a lista (não multiplica)
3[-] Resultado incorreto ou TypeError
4[+] Correto: zip + compreensão
LEVEL · soulevel.com.br
Alternativa E — ❌ Incorreta ⟵ GABARITO
A afirmação de que a execução será bem-sucedida e imprimirá a lista pontuacoes_finais com as pontuações ponderadas está errada. O erro está na operação notas * pesos: em Python, multiplicar duas listas não gera uma nova lista com os produtos dos elementos correspondentes. Em vez disso, a operação tenta repetir a lista, o que resulta em uma lista com comprimento incorreto ou em um TypeError (se os comprimentos não forem compatíveis para repetição). Portanto, o código não calculará as pontuações ponderadas corretamente e a execução não produzirá o resultado esperado.
PEGA ESSA DICA!
Para multiplicar elementos de duas listas em Python, use zip com compreensão de lista: [a * b for a, b in zip(lista1, lista2)]. Lembre-se: lista * inteiro repete a lista; lista1 * lista2 não é multiplicação elemento a elemento.