O objetivo desta aula é experimentar a definição de funções simples. Após a realização da prática, deverá ter sido adquirida uma noção básica dos seguintes conceitos e elementos:
return
+
, -
, *
, /
, //
, %
, **
int()
, float()
==
(igual), !=
(diferente), <
, >
, <=
, >=
not
(negação), and
(conjunção), or
(disjunção)Desenvolva uma função para cada um dos objectivos apresentados nas alíneas seguintes. Todas as funções podem ser definidas apenas com a instrução de retorno (return ...
). Para cada função escreva expressões para as testar, utilizando argumentos para abranger as diferentes possibilidades de resultados (p.e. verdadeiro/falso, arredondamento por excesso/defeito).
A definição desta função é muito semelhante ao exemplo dado inicialmente.
def double(n):
return 2*n
double(5)
def difference(a, b):
return a - b
difference(5, 9)
Exemplo: 2 num total de 8 corresponde a 25%.
O valor de percentagem deverá ser devolvido num número real (float) no intervalo [0.0, 1.0].
def percentage(n, total):
...
def percentage(n, total):
# Já não é necessário fazer float(n)/total
return n/total
percentage(2,5)
Note que a média entre dois inteiros não é necessariamente um inteiro, pelo que o tipo de retorno deverá ser decimal (float).
def average(a, b):
# Já não é necessário fazer (a+b) / 2.0
return (a+b)/2
average(3, 6)
Nesta função é necessário aplicar a truncagem (converter um decimal para inteiro, descartando a parte decimal).
Exemplos:
rounded(4.3) => 4
rounded(4.7) => 5
def rounded(x):
return int(x + 0.5)
rounded(4.7)
O valor devolvido pela função deverá indicar se o número passado como argumento é ou não negativo, mediante um valor booleano (bool, que assume apenas os valores True ou False).
Exemplos:
is_negative(-2) => True
is_negative(3) => False
def is_negative(n):
...
def is_negative(x):
return x < 0
is_negative(-2)
def is_odd(n):
return n % 2 != 0
is_odd(3)
def is_even(n):
return not is_odd(n)
is_even(3)
def is_multiple(a, b):
return a % b == 0
is_multiple(15,22)
Nesta função é necessário combinar duas condições lógicas (conjunção).
def is_digit(n):
return 0 <= n <= 9
def is_digit(a):
return 0 <= a <= 9 and (int(a) - a == 0)
is_digit(9)
Exemplos:
is_included(5, 4, 9) => True (5 está incluído em [4, 9])
is_included(5, 6, 9) => False (5 não está incluído em [6, 9])
def is_included(n, left, right):
return left <= n <= right
is_included(5, 6, 9)
Experimente uma solução baseada numa disjunção lógica e uma solução alternativa baseada numa negação da condição utilizada na alínea anterior.
Exemplos:
is_excluded(4, 4, 9) => False (4 não está excluído de [4, 9])
is_excluded(4, 5, 9) => True (4 está excluído de [5, 9])
def is_excluded(n, left, right):
return n < left or right < n
is_excluded(5, 6, 9)
Exemplos:
xor(True, False) => True
xor(False, True) => True
xor(True, True) => False
xor(False, False) => False
def xor(a, b):
return a == b
xor(0,1)
Exemplos:
is_vowel('a') => True
is_vowel('z') => False
def is_vowel(c):
return c == 'a' or c == 'e' or c == 'i' or c == 'o' or c == 'u'
is_vowel('i')