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.
>>> avo_mais_velho(ag,
'anaisabel'
)
2.
josé
1.
def
pais_de(ag,pessoa):
2.
for
ch,val
in
ag.items():
3.
for
nome, idade
in
val:
4.
if
nome
=
=
pessoa:
5.
return
ch
6.
return
()
01.
def
avo_mais_velho(ag,pessoa):
02.
pais
=
pais_de(ag,pessoa)
03.
if
pais:
04.
avos
=
[]
05.
for
progenit
in
pais:
06.
avos.extend(pais_de(ag,progenit[
0
]))
07.
# mais velho
08.
velho
=
avos[
0
]
09.
for
av
in
avos[
1
:]:
10.
if
velho[
1
] < av[
1
]:
11.
velho
=
av
12.
return
velho[
0
]
13.
return
None
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 fusão dos dois primeiros. A fusão é feita alternando as linhas dos dois ficheiros de origem. Assim, se A e B forem os dois ficheiros de origem e C o ficheiro resultado, então C vai ter na primeira linha a primeira linha do ficheiro A, na segunda linha a primeira linha do ficheiro B, na terceira linha a segunda linha do ficheiro A, na quarta linha a segunda linha do ficheiro B, e assim sucessivamente.
Problema muito simples. Lemos os ficheiros de entrada como listas de linhas (readlines). De seguida criamos uma nova lista em que os elementos das listas de entrada são colocadas na posição certa. Finalmente, escrevemos a lista de linhas no novo ficheiro. Como diz o enunciado, esta solução supõe o mesmo número del linhas nos dois ficheiros de entrada.
01.
def
junta_ficheiros_b(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
in
range(len(dados_1)):
09.
dados_3.extend([dados_1[i],dados_2[i]])
10.
fich_3.writelines(dados_3))
Sem comentários:
Enviar um comentário