Uma função pode ter múltiplas instruções return. Ela pode retornar um valor em uma instrução if e outro valor em um else. É importante lembrar que a função para a sua execução assim que retorna um valor. Assim que a função alcança uma instrução return, o programa continua a sua execução a partir do ponto onde a função foi chamada:
def process_only_even(n):
if n % 2 == 1:
return 'This was an odd number!'
print('Very interesting number ...', n)
n += 18
print('Adding 18 will result in:', n)
return n
print(process_only_even(5))
# This was an odd number!
print(process_only_even(6))
# Very interesting number ... 6
# Adding 18 will result in: 24
# 24
Portanto, a função retorna apenas uma vez, e o programa continua a sua execução a partir do ponto onde a função foi chamada.
Isto é especialmente útil se puder retornar um valor dentro de um ciclo, e assim, tanto o ciclo como a função irão parar nesse ponto e o programa voltará para onde a função foi chamada. Podemos evitar usar break em ciclos desse tipo.
Desafio
Chamamos um número de “especial” se ele for par e a soma dos seus dois últimos dígitos for 7.
Implemente uma função is_special(n) que retorne True se n for especial e False caso contrário. Se o número não for “especial”, a função também deve imprimir Not special na saída antes de retornar.
A entrada contém um único inteiro n (100 ≤ n ≤ $$10^6$$).
O programa deve imprimir Yes se n for especial e No caso contrário. No caso de imprimir No, o programa também deve imprimir Not special antes do No.