FC ConcursosFC Concursos

Questão FC331163

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

Linguagens de Programação

FGV · 2022

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.

  1. Erro de compilação, “name 'n ' is not defined”.
  2. Erro de compilação, “name 'N' is not defined”.
  3. Executa e produz resultados corretos com quatro linhas.
  4. Executa, mas produz erro de execução na quinta chamada da função X.
  5. Executa, mas calcula erradamente o fatorial de 4.
Mostrar resposta e comentário

Gabarito

B

Comentário do professor

Ao executar o script ocorre um erro por causa da diferença entre maiúsculas e minúsculas: o parâmetro da função é n (minúsculo), mas o corpo da função usa N (maiúsculo). Em Python os identificadores são case-sensitive, logo n ≠ N.

Quando a chamada print(X(4)) tenta avaliar o corpo da função, o interpretador procura pelo nome N e não o encontra, gerando uma exceção do tipo NameError com a mensagem "name 'N' is not defined".

Essa exceção interrompe a execução no primeiro chamado, portanto nenhum dos prints seguintes é executado. A correção é usar consistentemente n dentro da função.

Conteúdo do catálogo FC Concursos · Atualizado em

Continue aprendendo