01.
>>>
def
maior(x,y):
02.
...
return
x > y
03.
>>> maior(
5
,
6
)
04.
False
05.
>>> maior(
6
,
5
)
06.
True
07.
>>> type(maior)
08.
<type
'function'
=
"">
09.
>>> id(maior)
10.
13432752
11.
>>> maior
12.
<function maior at
0xccf7b0
>
13.
>>> menor
=
maior
14.
>>> menor(
6
,
5
)
15.
True
16.
>>>
17.
<
/
type>
Regressando ao nosso problema. O desafio é evitar duplicar o código, transmitindo na chamada a referência para a operação de comparação.
01.
def
insertion_both(seq, metodo):
02.
""" Como um jogador de cartas"""
03.
copia
=
seq[:]
04.
for
cont
in
range(
1
,len(seq)):
05.
elem
=
copia[cont]
06.
indice
=
cont
-
1
07.
while
(metodo(elem,copia[indice]))
and
(indice >
=
0
):
08.
copia[indice
+
1
]
=
copia[indice]
09.
indice
=
indice
-
1
10.
copia[indice
+
1
]
=
elem
11.
return
copia
12.
13.
def
maior(x,y):
14.
return
(x > y)
15.
16.
def
menor(x,y):
17.
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