Sendo uma lista de contactos telefónicos que quero manter permanentemente, é óbvio que ela vai estar guardada num ficheiro. Por outro lado, a actualização da lista vai obrigar a operações que me interessa que sejam feitas de forma simples e eficiente. Veremos que um modo de o conseguir é ter os contactos armazenados na memória como um dicionário, de chave igual ao nome e valor igual ao número de telefone.
. Este tipo de programas interactivos tem uma estrutura clássica, ou se quiserem, existe um padrão de desenho para o resolver. Fundamentalmente teremos um ciclo potencialmente infinito que em cada repetição imprime um menu de opções e depois, em função das nossas escolhas lança o respectivo programa. Mostremos então esse padrão.
01.
def
main():
02.
lista_tele
=
{}
03.
while
True
:
04.
mostra_menu()
05.
menu_escolhas
=
int(input(
"Escolha a sua opção (1-7): "
))
06.
if
menu_escolhas
=
=
1
:
07.
mostra_lista(lista_tele)
08.
elif
menu_escolhas
=
=
2
:
09.
print
(
"Acrescentar Nome e Número"
)
10.
nome
=
input(
"Nome: "
)
11.
telefone
=
input(
"Número: "
)
12.
acrescenta_numero(lista_tele, nome, telefone)
13.
elif
menu_escolhas
=
=
3
:
14.
print
(
"Retira Nome e Número"
)
15.
nome
=
input(
"Nome: "
)
16.
retira_contacto(lista_tele, nome)
17.
elif
menu_escolhas
=
=
4
:
18.
print
(
"Procura Número"
)
19.
nome
=
input(
"Nome: "
)
20.
print
(procura_numero(lista_tele, nome))
21.
elif
menu_escolhas
=
=
5
:
22.
nome_ficheiro
=
input(
"Ficheiro a carregar: "
)
23.
carrega_lista(lista_tele, nome_ficheiro)
24.
elif
menu_escolhas
=
=
6
:
25.
nome_ficheiro
=
input(
"Ficheiro a salvar: "
)
26.
salva_lista(lista_tele, nome_ficheiro)
27.
elif
menu_escolhas
=
=
7
:
28.
break
29.
else
:
30.
mostra_menu()
31.
32.
print
(
"Fim"
)
33.
34.
def
mostra_menu():
35.
pass
36.
37.
def
mostra_lista(lista_tele):
38.
pass
39.
40.
def
acrescenta_numero(lista_tele,nome,telefone):
41.
pass
42.
43.
def
retira_contacto(lista_tele, nome):
44.
pass
45.
46.
def
procura_numero(lista_tele,nome):
47.
pass
48.
49.
def
carrega_lista(lista_tele, nome_ficheiro):
50.
pass
51.
52.
def
salva_lista(lista_tele,nome_ficheiro):
53.
pass
54.
55.
if
__name__
=
=
'__main__'
:
56.
main()
01.
def
mostra_menu():
02.
print
(
"1. Mostra Lista Telefónica"
)
03.
print
(
"2. Acrescentar Entrada (Nome, Número)"
)
04.
print
(
"3. Retirar Entrada (Nome, Número)"
)
05.
print
(
"4. Procurar Número"
)
06.
print
(
"5. Carregar Lista Telefónica"
)
07.
print
(
"6. Salvar Lista Telefónica"
)
08.
print
(
"7. Terminar"
)
09.
print
()
1.
def
carrega_lista(lista_tele, nome_ficheiro):
2.
with open(nome_ficheiro,
'r'
) as f_ent:
3.
for
contacto
in
f_ent:
4.
dados
=
contacto[:
-
1
]
5.
nome, numero
=
dados.split()
6.
lista_tele[nome]
=
numero
7.
return
lista_tele
1.
ernesto
123
2.
patricia
456
3.
daniela
789
4.
pedro
012
1.
{
'pedro'
:
'012'
,
'ernesto'
:
'123'
,
'patricia'
:
'456'
,
'daniela'
:
'789'
}
1.
def
salva_lista(lista_tele,nome_ficheiro):
2.
with open(nome_ficheiro,
'w'
) as f_saida:
3.
for
chave,valor
in
lista_tele.items():
4.
contacto
=
chave
+
' '
+
valor
+
'\n'
5.
f_saida.write(contacto)
01.
def
acrescenta_numero(lista_tele,nome,telefone):
02.
lista_tele[nome]
=
telefone
03.
return
lista_tele
04.
05.
def
retira_contacto(lista_tele, nome):
06.
if
nome
in
lista_tele:
07.
del
lista_tele[nome]
08.
return
lista_tele
09.
else
:
10.
print
(
'Contacto inexistente'
)
11.
12.
def
procura_numero(lista_tele,nome):
13.
if
nome
in
lista_tele:
14.
print
(lista_tele[nome])
15.
else
:
16.
print
('Contacto inexistente’)
1.
def
mostra_lista(lista_tele):
2.
for
nome,numero
in
sorted(lista_tele.items()):
3.
print
()
4.
print
(
'Nome: %s\nNúmero: %s'
%
(nome,numero))
Sem comentários:
Enviar um comentário