Suponha que tem uma palavra e pretende criar uma outra de maneira que os caracteres da palavra inicial nas posições pares passam para as posições ímpares na nova palavra, e os caracteres das posições ímpares da palavra inicial passam para as posições pares da nova palavra. Por exemplo: \\
1.
>>> palavra
=
'a1b2c3d'
2.
>>>
print
(troca(palavra))
3.
1a2b3cd
A solução adoptada começa por dividir a palavra nos seus elementos pares e nos ímpares. Depois, num ciclo, constrói-se a nova palavra. Finalmente, verifica-se o caso do tamanho ser ímpar o que o briga a acrescentar o último elemento na posição par, que não foi introduzido no ciclo.
01.
def
troca(pal):
02.
"""Os caracteres nas posições pares passam para ímpares e os nas posições ímpares passam para as posiçõesp pares."""
03.
pares
=
pal[::
2
]
04.
impares
=
pal[
1
::
2
]
05.
nova_pal
=
''
06.
for
i
in
range(len(pal)
/
/
2
):
07.
nova_pal
+
=
impares[i]
+
pares[i]
08.
if
len(pal)
%
2
!
=
0
:
09.
nova_pal
+
=
pares[
-
1
]
10.
return
nova_pal
Suponha que tem uma imagens a preto e branco e que pretende limpar uma parte da imagem, ou seja, colocar os pixeis dessa parte todos a branco. A zona a limpar é dada por dois pontos, o canto superior esquerdo e o canto superior direito. Por exemplo:\\
1.
>>> img
=
[[
1
,
1
,
1
,
1
,
1
],[
1
,
1
,
1
,
1
,
1
],[
1
,
1
,
1
,
1
,
1
],[
1
,
1
,
1
,
1
,
1
]]
2.
>>> sup
=
(
1
,
2
)
3.
>>> inf
=
(
3
,
4
)
4.
>>>
print
(limpar(img,sup,inf))
5.
[[
1
,
1
,
1
,
1
,
1
], [
1
,
1
,
0
,
0
,
0
], [
1
,
1
,
0
,
0
,
0
], [
1
,
1
,
0
,
0
,
0
]]
A solução apresentada percorre todas a matriz de modo usual, por linhas e para cada linha por colunas, limitando as coordenadas ai interior do rectângulo definido pelo canto inferior esquerdo e santo superior direito, muda os piteis para zero (branco). Antes de proceder à alteração, verifica se a operação é possível.
01.
def
limpar(imagem, sup_esq,inf_dir):
02.
""" Limpa a imagem entre o canto superior esaquerdo e o canto superior direito."""
03.
# verifica se é possível
04.
num_linhas
=
len(imagem)
05.
num_colunas
=
len(imagem[
0
])
06.
possivel_linhas
=
(sup_esq[
0
] <
=
inf_dir[
0
] <
=
num_linhas )
07.
possivel_colunas
=
(sup_esq[
1
] <
=
inf_dir[
1
] <
=
num_colunas)
08.
if
possivel_linhas
and
possivel_colunas:
09.
for
linha
in
range(sup_esq[
0
], inf_dir[
0
]
+
1
):
10.
for
coluna
in
range(sup_esq[
1
],inf_dir[
1
]
+
1
):
11.
imagem[linha][coluna]
=
0
12.
return
imagem