300x250 AD TOP

Blogger news

AD (728x90)

Tecnologia do Blogger.

Colaboradores

Seguidores

Postagens populares

Tagged under: , ,

Programação funcional - Python [Exercícios]


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.
 Ex: maisQueKVogais('na semana da prova', 1) =  ['semana', 'prova'].
 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.
  Ex: maioria(lambda x:x>1, [1, 2, 1, 3, 0, 2, 4]) = True

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