Dando continuidade aos posts sobre o paradigma funciona, achei interessante propor e resolver alguns exercícios nesse paradigma:
- Usando LCs, defina a função vogais(palavra) que retorna o número de vogais em palavra. Ex: vogais('nasemanadaprova') = 7 .
letras_vogais = ['a', 'e', 'i', 'o', 'u', 'A', 'E', 'I', 'O', 'U'] vogal = lambda letra : 1 if letra in letras_vogais else 0 vogais = lambda l: reduce( lambda x, y: x+ y, [vogal(letras) for letras in l]) print vogais('nasemanadaprova')
- Defina a função maisQueKVogais(string) que retorna as palavras em string com mais que k vogais.
Dica: string.split() retorna uma lista onde cada elemento é uma palavra de string.
frase = "na semana da prova".split() maisQueKVogais = lambda frase, k: [palavra for palavra in frase if vogais(palavra) > k] print maisQueKVogais(frase, 1)
- Implemente a função maioria que tem como parâmetros uma propriedade (descrita como uma função anônima) e uma lista e retorna True se mais que metade dos elementos na lista têm a propriedade.
lista = [1, 2, 1, 3, 0, 2, 4] boleanoParaInteiro =lambda valor: 1 if valor else 0 elementos = lambda p, l: map(p, l) soma = lambda x, y: x+y lfuncao = lambda f, l: [boleanoParaInteiro(valor) for valor in elementos(f, l)] def maioria(propriedade, lista): return True if reduce(soma, lfuncao(propriedade, lista)) > len(lista)/2 else False print maioria(lambda x:x>1, lista)
0 comentários:
Postar um comentário