Analise o código Python a seguir. Assinale o resultado exibi...
Analise o código Python a seguir.
Assinale o resultado exibido na execução desse código.
Comentários
Veja os comentários dos nossos alunos
O código implementa o algoritmo de Euclides para encontrar o máximo divisor comum (MDC) entre dois números. O MDC de 90 e 15 é 15, e é exatamente isso que a função retorna quando é chamada com esses valores como argumentos. Durante a execução do algoritmo, as variáveis e são atualizadas até que se torne zero, momento em que a função retorna o valor de , que é o MDC calculado.
Código comentado:
def xxx(a, b): # Inicio da função, recebe como parametros a e b
while b != 0: # Enquanto b for diferente de zero executará o código a seguir
a, b = b, a % b # Atenção nesse ponto! Python permite o retorno de múltiplos valores separados por vírgula
# Isso nada mais é que:
# a = b # a recebe b
# b = a% b # b recebe o resto da divisão de a por b
return a # Após a execução do loop (while) retorna a
print(xxx(90,15)) # Exibe no console o retorno da função xxx com os parametros a = 90 e b = 15
Resposta D
def xxx(a,b):
while b!= 0:
a,b = b, a%b
return a
print(xxx(90,15))
Resolução:
No código acima temos a chamada da função xxx(a,b) dentro da função print. Vamos comentar
o código acima:
A função xxx(a,b) recebe dois parâmetros, no caso, "a, b".
Dentro da função temos o comando de repetição 'While' será executado enquanto 'b' for diferente de '0'.
A grande sacada dessa questão era saber que o comando:
a,b = b, a % b
Que significa a = b e b = a % b (resto da divisão entre 'a' e 'b')
No código acima, foi chamado a função xxx com os parâmetros 90 e 15.
Assim, a = 90 e b = 15
while b != 0 --> while 15 != 0 (entra no loop while)
a = b = 15
b = a % b --> b recebe o resto da divisão entre 90 e 15, nesse caso o resto dessa divisão é zero, ou seja, b = 0.
Feita essa primeira etapa, o loop é executado novamente agora com os seguintes valores:
a = 15 e b = 0.
Como b é igual a zero, o comando while b != 0 é falso, logo o loop não é executado. Assim,
o comando " return a" é executado retornando o valor de "a" que é igual a 15.
Assim, o gabarito dessa questão é a letra D.
# 1ª iteração
b != 0 = True
a=90, b=15
a, b = 15, 90 % 15=0
# 2ª iteração
b != 0 = fALSE
a=15, b=0
print(xxx(90,15))
Logo a valerá 15 e será o resultado impresso.
Clique para visualizar este comentário
Visualize os comentários desta questão clicando no botão abaixo