Suponha que tem uma árvore genealógica organizada usando um dicionário. A chave é um tuplo com dois elementos, em que cada elemento é um tuplo com o nome do progenitor e respectiva idade. O valor é uma lista com tuplos, em que cada tuplo tem o nome do descendente e respectiva idade. Um exemplo:
1.
ag
=
{((
'ernesto'
,
64
),(
'anabela'
,
44
)): [(
'daniela'
,
15
)], ((
'vitor'
,
72
),(
'irm'
,
68
)): [(
'ines'
,
39
)], ((
'carlos'
,
68
),(
'mena'
,
65
)): [(
'ricardo'
,
42
), (
'marcos'
,
37
)],((
'josé'
,
85
),(
'lurdes'
,
82
)): [(
'ernesto'
,
64
), (
'afonso'
,
74
),(
'vitor'
,
72
), (
'carlos'
,
68
),(
'isabel'
,
66
)], ((
'joaobranco'
,
70
),(
'isabel'
,
66
)): [(
'anaisabel'
,
35
),(
'joana'
,
29
)], ((
'jbp'
,
77
),(
'jbm'
,
70
)): [(
'joaobranco'
,
70
), (
'graça'
,
68
)]}
1.
>>> sob_mais_velho(ag,
'afonso'
)
2.
ricardo
01.
def
irmaos(ag, pessoa):
02.
for
prog,filhos
in
ag.items():
03.
for
filho
in
filhos:
04.
if
pessoa
=
=
filho[
0
]:
05.
filhos.remove(filho)
06.
return
filhos
07.
08.
def
meus_filhos(ag, pessoa):
09.
for
prog, filhos
in
ag.items():
10.
if
(pessoa
=
=
prog[
0
][
0
])
or
(pessoa
=
=
prog[
1
][
0
]):
11.
return
filhos
12.
return
None
01.
def
sob_mais_velho(ag,pessoa):
02.
irm
=
irmaos(ag,pessoa)
03.
if
irm:
04.
filhos
=
[]
05.
for
irmao
in
irm:
06.
filhos.extend(meus_filhos(ag,irmao[
0
]))
07.
velho
=
filhos[
0
]
08.
for
fil
in
filhos[
1
:]:
09.
if
velho[
1
] < fil[
1
]:
10.
velho
=
fil
11.
return
velho[
0
]
12.
return
()
Suponha que tem dois ficheiros de texto com exactamente o mesmo número de linhas. Pretende-se que escreva um programa que dados esses dois ficheiros crie um terceiro cujo conteúdo resulta da junção das linhas dos dois primeiros, feita do seguinte modo. Se A e B forem os dois ficheiros de origem e C o ficheiro resultado, então C vai ter na primeira linha o conteúdo da primeira linha do ficheiro A seguido do conteúdo da primeira linha do ficheiro B, na segunda linha o conteúdo da segunda linha do ficheiro A seguido do conteúdo da segunda linha do ficheiro B, e assim sucessivamente.
Solução trivial. Lemos os dois ficheiros e guardamos o seu conteúdo como listas de linhas. De seguida criamos uma nova lista juntando as linhas de mesma ordem. Finalmente, criamos o novo ficheiro. Notar que temos que retirar o indicador de mudança de linha das linhas do primeiro ficheiro. Usamos o tab como separador.
01.
def
concatena_ficheiros(ficheiro_1,ficheiro_2, ficheiro_3):
02.
with open(ficheiro_1,
'r'
, encoding
=
'utf-8'
) as fich_1:
03.
with open(ficheiro_2,
'r'
,encoding
=
'utf-8'
) as fich_2:
04.
with open(ficheiro_3,
'w'
,encoding
=
'utf-8'
) as fich_3:
05.
dados_1
=
fich_1.readlines()
06.
dados_2
=
fich_2.readlines()
07.
dados_3
=
[]
08.
for
i,linha
in
enumerate(dados_1):
09.
dados_3
+
=
[linha[:
-
1
]
+
'\t'
+
dados_2[i]]
10.
fich_3.writelines(dados_3)
Sem comentários:
Enviar um comentário