Na tua próxima tarefa na PyTalento, foste encarregado de melhorar a organização do código, tornando-o mais modular e reutilizável. Para isso, vais aprender a criar funções, que são blocos de código que podem ser definidos uma vez e usados várias vezes. As funções permitem-te dividir o código em partes menores, facilitando a sua manutenção e reutilização.
Objetivos
- Compreender o conceito de funções em Python.
- Aprender a definir, chamar e reutilizar funções.
- Explorar a passagem de argumentos e o retorno de valores.
O que é uma Função?
Uma função é um bloco de código que é definido uma vez e pode ser executado sempre que necessário. As funções permitem modularizar o código, separando tarefas específicas em blocos reutilizáveis. Podes passar dados para uma função (chamados argumentos) e, opcionalmente, obter um valor de retorno.
Exemplo de uma Função Simples:
# Definir uma função simples
def saudacao():
print("Olá, bem-vindo à PyTalento!")
# Chamar a função
saudacao()
Este exemplo define uma função chamada saudacao() que imprime uma mensagem. A função é chamada usando o nome da função seguido de parênteses.
Passagem de Argumentos para Funções
Podes passar informações para uma função através de parâmetros (ou argumentos). Os parâmetros são variáveis que a função utiliza para realizar operações específicas. Podes passar um ou mais parâmetros, conforme necessário.
Exemplo de Função com Argumentos:
# Definir uma função com argumentos
def saudacao_com_nome(nome):
print(f"Olá, {nome}! Bem-vindo à PyTalento!")
# Chamar a função com um argumento
saudacao_com_nome("Ana")
A função saudacao_com_nome(nome) aceita um argumento nome, que é utilizado para personalizar a mensagem de saudação. Quando chamamos a função com o valor "Ana", a mensagem é ajustada para "Olá, Ana!"
Retornar Valores de uma Função
As funções podem devolver valores usando a palavra-chave return. Isto permite que uma função execute cálculos ou operações e devolva o resultado ao código que a chamou.
Exemplo de Função que Retorna um Valor:
# Definir uma função que calcula a soma de dois números
def soma(a, b):
return a + b
# Chamar a função e guardar o resultado
resultado = soma(5, 3)
print("O resultado da soma é:", resultado)
Neste exemplo, a função soma(a, b) recebe dois argumentos, calcula a soma e devolve o resultado com return. O valor devolvido é guardado na variável resultado, que depois é impresso no ecrã.
Parâmetros Opcionais
Podes definir funções com parâmetros opcionais, que assumem um valor padrão se o utilizador não fornecer um argumento. Isto permite que uma função tenha flexibilidade adicional, sem a necessidade de passar sempre todos os parâmetros.
Exemplo de Função com Parâmetros Opcionais:
# Definir uma função com um parâmetro opcional
def saudacao_opcional(nome="convidado"):
print(f"Olá, {nome}! Bem-vindo à PyTalento!")
# Chamar a função sem passar argumentos
saudacao_opcional()
# Chamar a função passando um argumento
saudacao_opcional("João")
No exemplo acima, o parâmetro nome tem um valor padrão de "convidado". Se chamarmos a função sem passar um argumento, ela usa o valor padrão. Se passarmos um nome, a função usa o valor fornecido.
Modularização do Código com Funções
Uma das grandes vantagens de utilizar funções é a capacidade de modularizar o código. Em vez de ter todo o código num único bloco, podemos dividir tarefas específicas em funções e chamar essas funções quando necessário. Isso torna o código mais organizado e mais fácil de manter.
Exemplo de Modularização com Funções:
# Função para calcular a soma de dois números
def soma(a, b):
return a + b
# Função para calcular o produto de dois números
def produto(a, b):
return a * b
# Usar as funções no programa principal
num1 = 10
num2 = 5
resultado_soma = soma(num1, num2)
resultado_produto = produto(num1, num2)
print("Soma:", resultado_soma)
print("Produto:", resultado_produto)
Neste exemplo, criamos duas funções separadas para calcular a soma e o produto de dois números. O código principal usa essas funções para realizar as operações, o que torna o código mais modular e fácil de compreender.
Exercício Prático
A empresa PyTalento pediu-te que desenvolvas um programa modularizado que utilize funções para calcular a média de notas de estudantes. O programa deve seguir os seguintes passos:
Requisitos:
- Cria uma função que receba uma lista de notas e calcule a média.
- Cria uma função que receba uma lista de notas e devolva a nota máxima.
- Pede ao utilizador para introduzir as notas e usa as funções para calcular e imprimir a média e a nota máxima.
Exemplo de Código:
# Função para calcular a média das notas
def calcular_media(notas):
return sum(notas) / len(notas)
# Função para encontrar a nota máxima
def nota_maxima(notas):
return max(notas)
# Programa principal
notas = []
# Pedir ao utilizador para introduzir 5 notas
for i in range(5):
nota = float(input("Introduz a nota do estudante: "))
notas.append(nota)
# Calcular e imprimir a média e a nota máxima
media = calcular_media(notas)
maxima = nota_maxima(notas)
print("A média das notas é:", media)
print("A nota máxima é:", maxima)