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.
- Erro de compilação, “name 'n ' is not defined”.
- Erro de compilação, “name 'N' is not defined”.
- Executa e produz resultados corretos com quatro linhas.
- Executa, mas produz erro de execução na quinta chamada da função X.
- 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