Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- def Print_Menu():
- Street1 = {"Camelback Road":[795,"85251","Scottsdale"]}
- Agenda = {"Elon Musk":[["667236512", "699457590"],["elonmusk@gmail.com","tesla@support.es"],Street1]}
- Street2 = {"Northway":[500,"00765","Breda"]}
- Agenda["Hardwell"] = [["644321075"],["djhardwell@gmail.com","revealed@recordings.com"],Street2]
- Main_Menu = ("1.Introducir nuevos contactos.","2.Modificar datos de un contacto.","3.Eliminar contactos de la agenda.",
- "4.Visualizar la información de un contacto.","5.Ver toda la agenda.","6.Listar contactos de una localidad.",
- "7.Listar contactos de un determinado Código Postal.",
- "8.Listar los contactos que que empiezan por una determinada letra.",
- "9.Listar los contactos cuyo nombre contenga una determinada subcadena.",
- "10.Listar los contactos cuyos teléfonos contengan una determinada subcadena numérica",
- "11.Listar los contactos con N números de teléfono.","12.Listar los contactos con N cuentas de email.",
- "13.Listar los contactos con cuentas de email pertenecientes a determinado dominio.","14.Salir.")
- Data = ("1.Número de Teléfono","2.E-Mail.","3.Calle","4.Número de Calle.","5.Código Postal.","6.Ciudad.","7.Salir")
- for i in Main_Menu:
- print(i)
- print(" ")
- A=1
- while A==1:
- try:
- print(" ")
- Option = int(input("Introduce la opción:"))
- print(" ")
- if Option>=1 and Option<=13:
- if Option==1:
- ContactCheck=0
- Name=input("Nombre del Contacto:")
- if Name in Agenda:
- print("El contacto",Name,"ya está en el diccionario.")
- else:
- Loop2=1
- while Loop2==1:
- Phone_Number=input("Introduce el número de teléfono:")
- if Check_9_Len(Phone_Number)==1:
- EMail=input("Introduce el E-Mail:")
- if Check_Mail(EMail)==1:
- Loop8=1
- while Loop8==1:
- Address1 = input("Introduce la Calle:")
- if Address1!="":
- Loop8-=1
- elif Address1=="":
- print("La calle no puede ser una cadena vacía.")
- Loop12=1
- while Loop12==1:
- Address2 = int(input("Introduce el Número:"))
- if Address2>=0:
- Loop12-=1
- else:
- print("El número debe ser mayor o igual a zero.")
- Loop3=1
- while Loop3==1:
- Address3 = input("Introduce el Código Postal:")
- if Check_5_Len(Address3)==1:
- Loop14=1
- while Loop14==1:
- Address4 = input("Introduce la Ciudad:")
- if Check_DigitsString(Address4)==1:
- N_Contact(Name,Phone_Number,EMail,Address1,Address2,Address3,Address4,Agenda)
- print(" ")
- print("Contacto",Name,"añadido correctamente.")
- Loop14-=1
- else:
- print("El nombre de la ciudad no es válido.")
- Loop3-=1
- elif Check_5_Len(Address3)==0:
- print("El Código Postal introducido no es válido.")
- elif Check_Mail(EMail)!=1:
- print("Formato de E-Mail incorrecto!")
- Loop2-=1
- elif Check_9_Len(Phone_Number)==0:
- print("El número introducido no es válido.")
- if Option==2:
- print(" ")
- MName = input("Introduce el nombre del contacto que quieres modificar:")
- print(" ")
- if MName in Agenda:
- for j in Data:
- print(j)
- print(" ")
- Loop1=1
- while Loop1==1:
- Data_Change = int(input("Seleccione que la opción que desea modificar:"))
- if Data_Change==1:
- print(" ")
- print("1.Modificar un número de teléfono.")
- print("2.Introducir un número de teléfono.")
- print(" ")
- SubOption1 = int(input("¿Que opción desea ejecutar? "))
- if SubOption1==1:
- OldNumber = input("Introduce el número que desea modificar:")
- if OldNumber in Agenda[MName][0]:
- Loop4=1
- while Loop4==1:
- NewNumber = input("Introduce el nuevo número:")
- if Check_9_Len(NewNumber)==1:
- M_Number(SubOption1,None,OldNumber,NewNumber,Agenda,MName)
- print("Número modificado.")
- Loop4-=1
- elif Check_9_Len(NewNumber)==0:
- print("Número introducido no válido.")
- else:
- print(OldNumber,"no está en la agenda.")
- if SubOption1==2:
- Loop5=1
- while Loop5==1:
- MNumber = input("Introduce el nuevo número de teléfono:")
- if Check_9_Len(MNumber)==1:
- M_Number(SubOption1,MNumber,None,None,Agenda,MName)
- print("Número añadido.")
- Loop5-=1
- elif Check_9_Len(MNumber)==0:
- print("Número introducido no válido.")
- if Data_Change==2:
- print(" ")
- print("1.Modificar una dirección de correo electrónico.")
- print("2.Introducir una dirección de correo electrónico.")
- print(" ")
- SubOption2 = int(input("¿Qué opción desea ejecutar? "))
- if SubOption2==1:
- OldMail = input("Introduce la dirección de correo electrónico que desea modificar:")
- if OldMail in Agenda[MName][1]:
- NewMail = input("Introduce la nueva dirección de correo electrónico:")
- if Check_Mail(NewMail)==1: #Comprobamos que se haya introducido un E-Mail.
- M_Mail(SubOption2,0,OldMail,NewMail,Agenda,MName)
- print("Dirección de correo electrónico modificada.")
- elif Check_Mail(NewMail)!=1:
- print("Dirección de correo electrónico no válida.")
- else:
- print(OldMail,"no está en la agenda.")
- if SubOption2==2:
- MMail = input("Introduce la nueva dirección de correo electrónico:")
- if Check_Mail(MMail)==1: #Comprobamos que se haya introducido un E-Mail.
- M_Mail(SubOption2,MMail,0,0,Agenda,MName)
- print("Dirección de correo electrónico añadida.")
- if Data_Change==3:
- Loop9=1
- while Loop9==1:
- MStreet = input("Introduce la nueva calle:")
- if MStreet!="":
- M_Street(MStreet,Agenda,MName)
- print("Calle modificada.")
- Loop9-=1
- elif MStreet=="":
- print("La calle no puede ser una cadena vacía.")
- if Data_Change==4:
- Loop13=1
- while Loop13==1:
- MSNumber = int(input("Introduce el nuevo número:"))
- if MSNumber>=0:
- Loop13-=1
- M_SNumber(MSNumber,Agenda,MName)
- print("Número modificado.")
- else:
- print("El número debe ser mayor o igual que zero.")
- if Data_Change==5:
- Loop6=1
- while Loop6==1:
- MCP = input("Introduce el nuevo Código Postal:")
- if Check_5_Len(MCP)==1:
- M_CP(MCP,Agenda,MName)
- print("Código Postal modificado.")
- Loop6-=1
- elif Check_5_Len(MCP)==0:
- print("Código Postal no válido.")
- if Data_Change==6:
- Loop15=1
- while Loop15==1:
- MCity = input("Introduce la nueva ciudad:")
- if Check_DigitsString(MCity)==1:
- M_City(MCity,Agenda,MName)
- print("Ciudad modificada.")
- Loop15-=1
- else:
- print("La ciudad introducida no es válida.")
- if Data_Change==7:
- print(" ")
- for i in Main_Menu:
- print(i)
- print(" ")
- Loop1-=1
- if Data_Change<1 and Data_Change>6:
- print("Opción no válida.")
- else:
- print(" ")
- print("El nombre",MName,"no está en la agenda.")
- print(" ")
- if Option==3:
- DContact = input("¿Qué contacto quieres eliminar? ")
- D_Contact(DContact,Agenda)
- if D_Contact(DContact,Agenda)==1:
- print(DContact,"eliminado correctamente.")
- elif D_Contact(DContact,Agenda)==-1:
- print("El contacto",DContact,"no está en la agenda.")
- if Option==4:
- VContact = input("¿Qué contacto quieres ver? ")
- V_Contact(VContact,Agenda)
- if Option==5:
- P_Agenda(Agenda)
- if Option==6:
- Loop16=1
- while Loop16==1:
- LContact = input("¿Qué localidad quieres ver? ")
- if Check_DigitsString(LContact)==1:
- L_Contact(LContact,Agenda)
- Loop16-=1
- else:
- print("La ciudad introducida no es válida.")
- if Option==7:
- Loop7=1
- while Loop7==1:
- CPContact = input("¿Qué código postal quieres ver? ")
- if Check_Len_5(CPContact)==1:
- CP_Contact(CPContact,Agenda)
- Loop7-=1
- elif Check_Len_5(CPContact)==0:
- print("Código Postal no válido.")
- if Option==8:
- FLContact = input("Mostrar contactos que empiezen por la letra:")
- FL_Contact(FLContact,Agenda)
- if Option==9:
- SStringContact = input("Mostrar los contactos cuyo nombre contenga:")
- SString_Contact(SStringContact,Agenda)
- if Option==10:
- SIntegrerContact = input("Mostrar contactos cuyos teléfonos contengan:")
- SIntegrer_Contact(SIntegrerContact,Agenda)
- if Option==11:
- Loop11=1
- while Loop11==1:
- NNumber = int(input("Mostrar contactos esta cantidad de números de teléfono:"))
- if NNumber>=0:
- N_Number(NNumber,Agenda)
- Loop11-=1
- else:
- print("La cantidad debe ser igual o superior que zero.")
- if Option==12:
- Loop10=1
- while Loop10==1:
- NMail = int(input("Mostrar contactos esta cantidad de direcciones de E-Mail:"))
- if NMail>=0:
- N_Mail(NMail,Agenda)
- Loop10-=1
- else:
- print("La cantidad debe ser igual o superior que zero.")
- if Option==13:
- Domain = input("Mostrar contacos con direcciones de E-Mail del siguiente dominio:")
- Domain_Contacts(Domain,Agenda)
- if Option==14:
- print("Programa cerrado.")
- A-=1
- return None
- except ValueError:
- print("Has introducido un valor incorrecto.")
- print(" ")
- for i in Main_Menu:
- print(i)
- print(" ")
- def N_Contact(Name,Phone_Number,EMail,Address1,Address2,Address3,Address4,Agenda):
- Address = {}
- Num = []
- Mail = []
- Address[Address1]=[Address2,Address3,Address4]
- Num.append(Phone_Number)
- Mail.append(EMail)
- Agenda[Name]=[[Num],[Mail],Address]
- def M_Number(SubOption1,MNumber,OldNumber,NewNumber,Agenda,MName):
- A=-1 #Este valor indicará la posición del número de teléfono en la lista.
- if SubOption1==1:
- for i in Agenda[MName][0]: #Recorre todos los número de teléfono de la lista.
- A+=1 #Añade uno al valor de la posición en la lista.
- if i==OldNumber: #Al encontrar el número en la lista, lo substituye.
- Agenda[MName][0][A]=NewNumber
- if SubOption1==2:
- Agenda[MName][0].append(MNumber)
- def M_Mail(SubOption2,MMail,OldMail,NewMail,Agenda,MName):
- A=-1
- if SubOption2==1:
- for i in Agenda[MName][1]:
- A+=1
- if i==OldMail:
- Agenda[MName][1][A]=NewMail
- if SubOption2==2:
- Agenda[MName][1].append(MMail)
- def M_Street(MStreet,Agenda,MName):
- OldStreet=Agenda[MName][2].keys() #Asignamos la clave, que es el nombre de la calle, a una variable.
- #OldStreet será una lista con un elemento, la key del diccionario, la calle.
- B=None #Cremos una variable vacía para usarla más tarde.
- for i in OldStreet:
- B=i #B solo puede tomar un valor, ya que la lista solo tiene un valor.
- A=Agenda[MName][2][B] #A será la otra información sobre la calle.(Número, CP y Ciudad.)
- Agenda[MName][2].clear() #Vacíamos el diccionario con la información de la calle.
- #En el diccionario vacío introducimos la nueva calle con los valores anteriores
- Agenda[MName][2].update({MStreet:[A]})
- def M_SNumber(MSNumber,Agenda,MName):
- #Funciona con la misma idea que la anterior función, pero no modifica la clave.
- Street=Agenda[MName][2].keys()
- B=None
- for i in Street:
- B=i
- Agenda[MName][2][B][0]=MSNumber
- def M_CP(MCP,Agenda,MName):
- #Funciona con la misma idea que la anterior función.
- Street=Agenda[MName][2].keys()
- B=None
- for i in Street:
- B=i
- Agenda[MName][2][B][1]=MCP
- def M_City(MCity,Agenda,MName):
- #Funciona con la misma idea que la anterior función.
- City=Agenda[MName][2].keys()
- B=None
- for i in City:
- B=i
- Agenda[MName][2][B][2]=MCity
- def D_Contact(DContact,Agenda):
- if DContact in Agenda: #Si ese contacto se encuentra en la agenda, lo elimina y devuelve 1.
- Agenda.pop(DContact)
- return 1
- else: #Si no lo ha encontrado devuelve -1.
- return -1
- def V_Contact(VContact,Agenda): #Simplemente va a las posiciones en la lista según el dato que se quiere obtener.
- if VContact in Agenda:
- print(" ")
- print("-Nombre de Contacto:",VContact) #Imprime el nombre de contacto.
- print(" ")
- for i in Agenda[VContact][0]:
- print("-Número de Teléfono:",i) #Recorre todos los números de teléfono de ese contacto y los imprime.
- print(" ")
- for j in Agenda[VContact][1]:
- print("-Dirección de E-Mail:",j) #Recorre todos los E-Mails de teléfono de ese contacto y los imprime.
- print(" ")
- for k in Agenda[VContact][2]: #Imrpime los datos de la dirección.
- print("-Calle:",k)
- print("-Número:",Agenda[VContact][2][k][0])
- print("-Código Postal:",Agenda[VContact][2][k][1])
- print("-Ciudad:",Agenda[VContact][2][k][2])
- print(" ")
- else:
- print("El contacto",VContact,"no está en la agenda.")
- def P_Agenda(Agenda): #Lo mismo que la función anterior pero recorriendo todos los contactos de la Agenda.
- for i in Agenda:
- print(" ")
- print("-Nombre de Contacto:",i)
- for j in Agenda[i][0]:
- print("-Número de Teléfono:",j)
- for k in Agenda[i][1]:
- print("-Dirección de E-Mail:",k)
- for m in Agenda[i][2]:
- print("-Calle:",m)
- print("-Número:",Agenda[i][2][m][0])
- print("-Código Postal:",Agenda[i][2][m][1])
- print("-Ciudad:",Agenda[i][2][m][2])
- print(" ")
- def L_Contact(LContact,Agenda):
- B=0
- for i in Agenda:
- if i in Agenda:
- for j in Agenda[i][2]: #Posición donde se guarda la dirección.
- A = Agenda[i][2][j][2]
- if A==LContact:
- B+=1 #Suma uno a B para controlar si hay almenos un contacto de esa localidad.
- print(i)
- if B==0:
- print("No hay contactos con la localidad",LContact)
- def CP_Contact(CPContact,Agenda): #Misma estructura que la anterior función.
- B=0
- for i in Agenda:
- if i in Agenda:
- for j in Agenda[i][2]:
- A = Agenda[i][2][j][1]
- if A==CPContact:
- B+=1
- print(i)
- if B==0:
- print("No hay contactos con el Código Postal",CPContact)
- def FL_Contact(FLContact,Agenda): #Misma estructura que la anterior función.
- B=0
- for i in Agenda:
- for j in i:
- A=0
- A+=1
- if A==1:
- if j==FLContact:
- B+=1
- print(i)
- if B==0:
- print("No hay contactos que empiezen por la letra",FLContact)
- def SString_Contact(SStringContact,Agenda): #Misma estructura que la anterior función.
- A=0
- for i in Agenda:
- if SStringContact in i: #Si esa subcadena se encuentra en un nombre que está en la agenda.
- A+=1
- print(i)
- if A==0:
- print("No hay contactos que contengan",SStringContact)
- def SIntegrer_Contact(SIntegrerContact,Agenda): #Misma estructura que la anterior función.
- B=0
- for i in Agenda:
- A=0 #Usamos esto para que no se vuelva a imprimir dos veces un contacto.
- for j in Agenda[i][0]:
- if SIntegrerContact in j and A==0:
- A+=1
- B+=1
- print(i)
- if B==0:
- print("No hay contactos que tengan",SIntegrerContact,"en su número de teléfono.")
- def N_Number(NNumber,Agenda): #Misma estructura que la anterior función.
- A=0
- for i in Agenda:
- Counter1=0
- for j in Agenda[i][0]:
- Counter1+=1
- if Counter1==NNumber:
- A+=1
- print(i)
- if A==0:
- print("No hay contactos con",NNumber,"números de teléfono.")
- def N_Mail(NMail,Agenda): #Misma estructura que la anterior función.
- A=0
- for i in Agenda:
- Counter2=0
- for j in Agenda[i][1]:
- Counter2+=1
- if Counter2==NMail:
- print(i)
- if A==0:
- print("No hay contactos con",NMail,"direcciones de correo electrónico.")
- def Domain_Contacts(Domain,Agenda): #Misma estructura que la anterior función.
- B=0
- for i in Agenda:
- A=0
- for j in Agenda[i][1]:
- if Domain in j and A==0:
- A+=1
- B+=1
- print(i)
- if B==0:
- print("No hay contactos con ese dominio en el E-Mail.")
- def Check_9_Len(N1): #Esta función cuenta el número de letras/números de una cadena, si hay 9 retorna 1.
- Len=0
- for i in N1: #Descompone la cadena en carácteres y para cada carácter suma uno a un contador.
- Len+=1
- if Len==9:
- return 1
- if Len!=9:
- return 0
- def Check_5_Len(N2): #Esta función cuenta el número de letras/números de una cadena, si hay 5 retorna 1.
- Len=0
- for i in N2: #Descompone la cadena en carácteres y para cada carácter suma uno a un contador.
- Len+=1
- if Len==5:
- return 1
- if Len!=5:
- return 0
- def Check_DigitsString(N3):
- A=0
- #Esta lista contiene los números del 0 al 9, guardados como una cadena.
- Digits = ["1","2","3","4","5","6","7","8","9","0"]
- for i in Digits: #Comprueba si hay números en una cadena.
- if i in N3:
- A+=1
- if A==0 and N3!="": #En caso de que no haya números ni sea una cadena vacía, retorna 1.
- return 1
- else:
- return 0
- def Check_Mail(Mail): #Esta función se encarga de que "Mail" tenga la estructura de string@string.@string
- A=0
- for i in Mail: #Recorremos el E-Mail, pasando por todos sus carácteres.
- if A==1: #Si A es igual a 1, mira si al seguir recorriendo se encunetra un punto.
- if i==".": #Si hay un punto retorna 1.
- return 1
- if i=="@": #Si la i es una "@" suma uno a la variable A.
- A+=1
- Print_Menu()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement