Python - ayuda en ejercicio de herencia en python

 
Vista:
sin imagen de perfil

ayuda en ejercicio de herencia en python

Publicado por paco7333 (2 intervenciones) el 10/10/2022 19:29:33
El siguiente ejercicio consiste en escribir un programa para gestionar una agenda telefónica con los nombres y los teléfonos de los conocidos de una persona. El programa incorporará las funciones para:
• Consultar el teléfono de una persona.
• Añadir el teléfono de una persona nueva.
• Eliminar el teléfono de una persona.
La agenda debe estar guardada en el fichero de texto agenda.txt donde el nombre de las personas y su teléfono deben aparecer separados por comas y cada persona debe aparecer en una línea distinta.
CODIGO:
import os

class Agenda():
def __init__(self,persona,fichero):
self.persona,self.fichero=persona,fichero

def obtener_telefono(fichero,persona):
try:
f=open(fichero,'r')
except FileNotFoundError :
return('¡El fichero' +fichero + 'no existe!\n')
else:
directorio =f.readlines()
f.close()
directorio=dict([tuple(line.split(','))for line in directorio
])
if persona in directorio:
return directorio[persona]
else:
return('¡La persona' +persona+ 'no existe\n')

def insertar_telefono(fichero,persona,telefono):
try:
f=open(fichero,'a')
except FileNotFoundError:
return('¡El fichero ' + fichero + 'no existe\n')
else:
f.write(persona+','+ telefono+'\n')
f.close()
return ('El telefono se ha agregado.\n')

def eliminar_telefono(fichero,persona):
try:
f=open(fichero,'r')
except FileNotFoundError:
return ('¡El fichero ' + fichero + 'no existe!\n')
else:
directorio =f.readlines()
f.close()
directorio=dict([tuple(line.split(','))for line in directorio])
if persona in directorio:
del directorio[persona]
f=open(fichero,'w')
for nombre,telefono in directorio.items():
f.write(nombre + ',' + telefono)
f.close()
return ('La persona '+ persona + 'no existe\n')
class Menu(Agenda):
def __init__(self,persona,fichero,nombre,telefono,apellidos,email):
super().__init__(persona,fichero)
self.nombre,self.apellidos=nombre,apellidos
self.telefono,self.email=telefono,email
def directorio(self):
fichero='agenda.txt'
while True:
opcion=Menu()
if opcion=='1':
nombre=input('Introduzca el nombre de la persona:')
print(self.obtener_telefono(fichero,nombre))
elif opcion == '2':
nombre=input('Introduzca el nombre de la persona:')
telefono=int(input('Introduzca el telefono de la persona:'))
print(self.insertar_telefono(fichero,nombre,telefono))
elif opcion == '3':
nombre=input('Introduzca el nombre de la persona:')
print(self.eliminar_telefono(fichero,nombre))
elif opcion =='4':
print(self.crear_directorio(fichero))
else:
break
return

def crear_directorio(self,fichero):
if os.path.isfile(self.fichero):
pregunta=input('El fichero'+self.fichero+ 'ya existe.¿Desea borrarlo? (S/N)?')
if pregunta =='N':
return 'No se ha añadido el fichero porque ya existe.\n'
f=open(self.fichero,'w')
f.close()
return 'Se ha añadido el fichero.\n'

def crear_menu():
print('Gestion de la agenda telefonica')
print('*********************************')
print('(1)-Obtener un telefono')
print('(2)-Insertar un telefono')
print('(3)-Eliminar un telefono')
print('(4)-Crear la agenda telefonica')
print('(0)-Salir')
opcion=input('Seleccione la opcion elegida:')
return opcion
crear_menu()

Me da este fallo,no se ejecuta correctamente:


Gestion de la agenda telefonica
*********************************
(1)-Obtener un telefono
(2)-Insertar un telefono
(3)-Eliminar un telefono
(4)-Crear la agenda telefonica
(0)-Salir
Seleccione la opcion elegida:2
PS C:\Users\seten\PYTHON


Como podrás ver no sale la opción Insertar un teléfono ni ningún otra opción.
Lo mismo al hacer este ejercicio mediante herencia lo complico aun mas,y debería hacerlo solo con funciones ,pero quería hacerlo elegante el ejercicio
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder