>>> def maior(x,y):
... return x > y
>>> maior(5,6)
False
>>> maior(6,5)
True
>>> type(maior)
>>> id(maior)
13432752
>>> maior
<function maior at 0xccf7b0>
>>> menor = maior
>>> menor(6,5)
True
>>>
Regressando ao nosso problema. O desafio é evitar duplicar o código, transmitindo na chamada a referência para a operação de comparação.
def insertion_both(seq, metodo):
""" Como um jogador de cartas"""
copia=seq[:]
for cont in range(1,len(seq)):
elem=copia[cont]
indice=cont - 1
while (metodo(elem,copia[indice])) and (indice >= 0):
copia[indice + 1] = copia[indice]
indice = indice - 1
copia[indice + 1] = elem
return copia
def maior(x,y):
return (x > y)
def menor(x,y):
return (x < y)
E assim se resolve de forma simples e elegante, um problema aparentemente difícil! Deixo ao leitor o cuidado de perceber porque é que foi preciso criar as funções maior e menor que apenas fazem o que > e < fazem!
Sem comentários:
Enviar um comentário