Questão nº 45

Questão de Tecnologia da Informação · FGV MPGO Servidores 2022 (nº 45)

FGV2022Analista em InformáticaTecnologia da Informação
Gabarito: Bver comentário ↓

Considere o código Python a seguir.

def X(n):
    if (type(N) != int):
        return -1
    elif (N < 1):
        return 0
    elif (N == 1):
        return 1
    else:
        return N * X(N-1)
print (X(4))
print (X(0))
print (X(1))
print (X(1.5))
print (X("A"))

Assinale o que acontece quando esse script é executada na IDLE Shell 3.9.9.

Resposta comentada

Gabarito Alternativa B

Conceito-chave: Python diferencia letras maiúsculas de minúsculas. O parâmetro da função foi definido como n (minúsculo), mas dentro do corpo da função o código usa N (maiúsculo). Como N nunca foi definido, o interpretador levanta um erro antes mesmo de executar qualquer linha.

  • (A) Incorreta: O erro é sobre N maiúsculo, não sobre n minúsculo; além disso, não é erro de compilação, mas de execução (NameError).
  • (B) Correta: O código tenta usar N (maiúsculo) em todas as comparações e no return N * X(N-1), mas o parâmetro é n (minúsculo). Python é case-sensitive, então N não existe, gerando NameError: name 'N' is not defined na primeira linha executada (if (type(N) != int):).
  • (C) Incorreta: Não executa nem produz resultados, pois o erro ocorre na primeira chamada (X(4)), antes de qualquer print.
  • (D) Incorreta: O erro ocorre na primeira chamada, não na quinta; a quinta chamada (X("A")) nem chega a ser avaliada.
  • (E) Incorreta: Não calcula nada, pois o erro impede qualquer execução da função.

Armadilha da banca (distrator mais tentador): A letra D parece plausível porque o código tem chamadas com tipos inválidos (1.5 e "A"), levando o aluno a pensar que o erro só apareceria nessas chamadas. Mas a pegadinha é que o erro de N maiúsculo ocorre imediatamente na primeira chamada, antes de qualquer lógica de tipo ou recursão.

Fonte: FGV MPGO Servidores 2022 Analista em Informática (Caderno Tipo 1). Reproduzida para fins de estudo.

Continue estudando

Estudar é izi

Pratique milhares de questões como esta, de graça, com explicação e gamificação no Quizinho.

Estudar de graça no Quizinho