Advertisement
EXTREMEXPLOIT

Agenda

Dec 2nd, 2018
158
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 23.96 KB | None | 0 0
  1. def Print_Menu():
  2.     Street1 = {"Camelback Road":[795,"85251","Scottsdale"]}
  3.     Agenda = {"Elon Musk":[["667236512", "699457590"],["elonmusk@gmail.com","tesla@support.es"],Street1]}
  4.    
  5.     Street2 = {"Northway":[500,"00765","Breda"]}
  6.     Agenda["Hardwell"] = [["644321075"],["djhardwell@gmail.com","revealed@recordings.com"],Street2]
  7.    
  8.     Main_Menu = ("1.Introducir nuevos contactos.","2.Modificar datos de un contacto.","3.Eliminar contactos de la agenda.",
  9.               "4.Visualizar la información de un contacto.","5.Ver toda la agenda.","6.Listar contactos de una localidad.",
  10.               "7.Listar contactos de un determinado Código Postal.",
  11.               "8.Listar los contactos que que empiezan por una determinada letra.",
  12.               "9.Listar los contactos cuyo nombre contenga una determinada subcadena.",
  13.               "10.Listar los contactos cuyos teléfonos contengan una determinada subcadena numérica",
  14.               "11.Listar los contactos con N números de teléfono.","12.Listar los contactos con N cuentas de email.",
  15.               "13.Listar los contactos con cuentas de email pertenecientes a determinado dominio.","14.Salir.")
  16.     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")
  17.    
  18.     for i in Main_Menu:
  19.         print(i)
  20.     print(" ")
  21.     A=1
  22.     while A==1:
  23.         try:
  24.             print(" ")
  25.             Option = int(input("Introduce la opción:"))
  26.             print(" ")
  27.  
  28.             if Option>=1 and Option<=13:
  29.  
  30.                 if Option==1:
  31.                     ContactCheck=0
  32.                     Name=input("Nombre del Contacto:")
  33.                     if Name in Agenda:
  34.                         print("El contacto",Name,"ya está en el diccionario.")
  35.                     else:
  36.                         Loop2=1
  37.                         while Loop2==1:
  38.                             Phone_Number=input("Introduce el número de teléfono:")
  39.                             if Check_9_Len(Phone_Number)==1:
  40.                                 EMail=input("Introduce el E-Mail:")
  41.  
  42.                                 if Check_Mail(EMail)==1:
  43.                                     Loop8=1
  44.                                     while Loop8==1:
  45.                                         Address1 = input("Introduce la Calle:")
  46.                                         if Address1!="":
  47.                                             Loop8-=1
  48.                                         elif Address1=="":
  49.                                             print("La calle no puede ser una cadena vacía.")
  50.                                     Loop12=1
  51.                                     while Loop12==1:
  52.                                         Address2 = int(input("Introduce el Número:"))
  53.                                         if Address2>=0:
  54.                                             Loop12-=1
  55.                                         else:
  56.                                             print("El número debe ser mayor o igual a zero.")
  57.                                     Loop3=1
  58.                                     while Loop3==1:
  59.                                         Address3 = input("Introduce el Código Postal:")
  60.                                         if Check_5_Len(Address3)==1:
  61.                                             Loop14=1
  62.                                             while Loop14==1:
  63.                                                 Address4 = input("Introduce la Ciudad:")
  64.                                                 if Check_DigitsString(Address4)==1:
  65.                                                     N_Contact(Name,Phone_Number,EMail,Address1,Address2,Address3,Address4,Agenda)
  66.                                                     print(" ")
  67.                                                     print("Contacto",Name,"añadido correctamente.")
  68.                                                     Loop14-=1
  69.                                                 else:
  70.                                                     print("El nombre de la ciudad no es válido.")
  71.                                             Loop3-=1
  72.                                         elif Check_5_Len(Address3)==0:
  73.                                             print("El Código Postal introducido no es válido.")
  74.                                 elif Check_Mail(EMail)!=1:
  75.                                     print("Formato de E-Mail incorrecto!")
  76.                                 Loop2-=1
  77.                             elif Check_9_Len(Phone_Number)==0:
  78.                                 print("El número introducido no es válido.")
  79.  
  80.             if Option==2:
  81.                 print(" ")
  82.                 MName = input("Introduce el nombre del contacto que quieres modificar:")
  83.                 print(" ")
  84.                    
  85.                 if MName in Agenda:
  86.                     for j in Data:
  87.                         print(j)
  88.                     print(" ")
  89.                     Loop1=1
  90.                     while Loop1==1:
  91.                         Data_Change = int(input("Seleccione que la opción que desea modificar:"))
  92.  
  93.                         if Data_Change==1:
  94.                             print(" ")
  95.                             print("1.Modificar un número de teléfono.")
  96.                             print("2.Introducir un número de teléfono.")
  97.                             print(" ")
  98.                             SubOption1 = int(input("¿Que opción desea ejecutar? "))
  99.                             if SubOption1==1:
  100.                                 OldNumber = input("Introduce el número que desea modificar:")
  101.                                 if OldNumber in Agenda[MName][0]:
  102.                                     Loop4=1
  103.                                     while Loop4==1:
  104.                                         NewNumber = input("Introduce el nuevo número:")
  105.                                         if Check_9_Len(NewNumber)==1:
  106.                                             M_Number(SubOption1,None,OldNumber,NewNumber,Agenda,MName)
  107.                                             print("Número modificado.")
  108.                                             Loop4-=1
  109.                                         elif Check_9_Len(NewNumber)==0:
  110.                                             print("Número introducido no válido.")
  111.                                 else:
  112.                                     print(OldNumber,"no está en la agenda.")
  113.                             if SubOption1==2:
  114.                                 Loop5=1
  115.                                 while Loop5==1:
  116.                                     MNumber = input("Introduce el nuevo número de teléfono:")
  117.                                     if Check_9_Len(MNumber)==1:
  118.                                         M_Number(SubOption1,MNumber,None,None,Agenda,MName)
  119.                                         print("Número añadido.")
  120.                                         Loop5-=1
  121.                                     elif Check_9_Len(MNumber)==0:
  122.                                         print("Número introducido no válido.")
  123.  
  124.                         if Data_Change==2:
  125.                             print(" ")
  126.                             print("1.Modificar una dirección de correo electrónico.")
  127.                             print("2.Introducir una dirección de correo electrónico.")
  128.                             print(" ")
  129.                             SubOption2 = int(input("¿Qué opción desea ejecutar? "))
  130.  
  131.                             if SubOption2==1:
  132.                                 OldMail = input("Introduce la dirección de correo electrónico que desea modificar:")
  133.                                 if OldMail in Agenda[MName][1]:
  134.                                     NewMail = input("Introduce la nueva dirección de correo electrónico:")
  135.                                     if Check_Mail(NewMail)==1: #Comprobamos que se haya introducido un E-Mail.
  136.                                         M_Mail(SubOption2,0,OldMail,NewMail,Agenda,MName)
  137.                                         print("Dirección de correo electrónico modificada.")
  138.                                     elif Check_Mail(NewMail)!=1:
  139.                                         print("Dirección de correo electrónico no válida.")
  140.                                 else:
  141.                                     print(OldMail,"no está en la agenda.")
  142.                             if SubOption2==2:
  143.                                 MMail = input("Introduce la nueva dirección de correo electrónico:")
  144.                                 if Check_Mail(MMail)==1: #Comprobamos que se haya introducido un E-Mail.
  145.                                     M_Mail(SubOption2,MMail,0,0,Agenda,MName)
  146.                                     print("Dirección de correo electrónico añadida.")
  147.  
  148.                         if Data_Change==3:
  149.                             Loop9=1
  150.                             while Loop9==1:
  151.                                 MStreet = input("Introduce la nueva calle:")
  152.                                 if MStreet!="":
  153.                                     M_Street(MStreet,Agenda,MName)
  154.                                     print("Calle modificada.")
  155.                                     Loop9-=1
  156.                                 elif MStreet=="":
  157.                                     print("La calle no puede ser una cadena vacía.")
  158.  
  159.                         if Data_Change==4:
  160.                             Loop13=1
  161.                             while Loop13==1:
  162.                                 MSNumber = int(input("Introduce el nuevo número:"))
  163.                                 if MSNumber>=0:
  164.                                     Loop13-=1
  165.                                     M_SNumber(MSNumber,Agenda,MName)
  166.                                     print("Número modificado.")
  167.                                 else:
  168.                                     print("El número debe ser mayor o igual que zero.")
  169.  
  170.                         if Data_Change==5:
  171.                             Loop6=1
  172.                             while Loop6==1:
  173.                                 MCP = input("Introduce el nuevo Código Postal:")
  174.                                 if Check_5_Len(MCP)==1:
  175.                                     M_CP(MCP,Agenda,MName)
  176.                                     print("Código Postal modificado.")
  177.                                     Loop6-=1
  178.                                 elif Check_5_Len(MCP)==0:
  179.                                     print("Código Postal no válido.")
  180.  
  181.                         if Data_Change==6:
  182.                             Loop15=1
  183.                             while Loop15==1:
  184.                                 MCity = input("Introduce la nueva ciudad:")
  185.                                 if Check_DigitsString(MCity)==1:
  186.                                     M_City(MCity,Agenda,MName)
  187.                                     print("Ciudad modificada.")
  188.                                     Loop15-=1
  189.                                 else:
  190.                                     print("La ciudad introducida no es válida.")
  191.                        
  192.                         if Data_Change==7:
  193.                             print(" ")
  194.                             for i in Main_Menu:
  195.                                 print(i)
  196.                             print(" ")
  197.                             Loop1-=1
  198.  
  199.                         if Data_Change<1 and Data_Change>6:
  200.                             print("Opción no válida.")
  201.                                            
  202.                 else:
  203.                     print(" ")
  204.                     print("El nombre",MName,"no está en la agenda.")
  205.                     print(" ")
  206.                                    
  207.             if Option==3:
  208.                 DContact = input("¿Qué contacto quieres eliminar? ")
  209.                 D_Contact(DContact,Agenda)
  210.                 if D_Contact(DContact,Agenda)==1:
  211.                     print(DContact,"eliminado correctamente.")
  212.                        
  213.                 elif D_Contact(DContact,Agenda)==-1:
  214.                     print("El contacto",DContact,"no está en la agenda.")
  215.                        
  216.             if Option==4:
  217.                 VContact = input("¿Qué contacto quieres ver? ")
  218.                 V_Contact(VContact,Agenda)
  219.                    
  220.             if Option==5:
  221.                 P_Agenda(Agenda)
  222.                    
  223.             if Option==6:
  224.                 Loop16=1
  225.                 while Loop16==1:
  226.                     LContact = input("¿Qué localidad quieres ver? ")
  227.                     if Check_DigitsString(LContact)==1:
  228.                         L_Contact(LContact,Agenda)
  229.                         Loop16-=1
  230.                     else:
  231.                         print("La ciudad introducida no es válida.")
  232.                    
  233.             if Option==7:
  234.                 Loop7=1
  235.                 while Loop7==1:
  236.                     CPContact = input("¿Qué código postal quieres ver? ")
  237.                     if Check_Len_5(CPContact)==1:
  238.                         CP_Contact(CPContact,Agenda)
  239.                         Loop7-=1
  240.                     elif Check_Len_5(CPContact)==0:
  241.                         print("Código Postal no válido.")
  242.                        
  243.             if Option==8:
  244.                 FLContact = input("Mostrar contactos que empiezen por la letra:")
  245.                 FL_Contact(FLContact,Agenda)
  246.                    
  247.             if Option==9:
  248.                 SStringContact = input("Mostrar los contactos cuyo nombre contenga:")
  249.                 SString_Contact(SStringContact,Agenda)
  250.                    
  251.             if Option==10:
  252.                 SIntegrerContact = input("Mostrar contactos cuyos teléfonos contengan:")
  253.                 SIntegrer_Contact(SIntegrerContact,Agenda)
  254.                    
  255.             if Option==11:
  256.                 Loop11=1
  257.                 while Loop11==1:
  258.                     NNumber = int(input("Mostrar contactos esta cantidad de números de teléfono:"))
  259.                     if NNumber>=0:
  260.                         N_Number(NNumber,Agenda)
  261.                         Loop11-=1
  262.                     else:
  263.                         print("La cantidad debe ser igual o superior que zero.")
  264.                    
  265.             if Option==12:
  266.                 Loop10=1
  267.                 while Loop10==1:
  268.                     NMail = int(input("Mostrar contactos esta cantidad de direcciones de E-Mail:"))
  269.                     if NMail>=0:
  270.                         N_Mail(NMail,Agenda)
  271.                         Loop10-=1
  272.                     else:
  273.                         print("La cantidad debe ser igual o superior que zero.")
  274.                    
  275.             if Option==13:
  276.                 Domain = input("Mostrar contacos con direcciones de E-Mail del siguiente dominio:")
  277.                 Domain_Contacts(Domain,Agenda)
  278.                    
  279.             if Option==14:
  280.                 print("Programa cerrado.")
  281.                 A-=1
  282.                 return None
  283.                    
  284.         except ValueError:
  285.             print("Has introducido un valor incorrecto.")
  286.             print(" ")
  287.             for i in Main_Menu:
  288.                 print(i)
  289.             print(" ")
  290.                        
  291. def N_Contact(Name,Phone_Number,EMail,Address1,Address2,Address3,Address4,Agenda):
  292.     Address = {}
  293.     Num = []
  294.     Mail = []
  295.     Address[Address1]=[Address2,Address3,Address4]
  296.     Num.append(Phone_Number)
  297.     Mail.append(EMail)
  298.     Agenda[Name]=[[Num],[Mail],Address]
  299.      
  300. def M_Number(SubOption1,MNumber,OldNumber,NewNumber,Agenda,MName):
  301.     A=-1 #Este valor indicará la posición del número de teléfono en la lista.
  302.     if SubOption1==1:
  303.          for i in Agenda[MName][0]: #Recorre todos los número de teléfono de la lista.
  304.                 A+=1 #Añade uno al valor de la posición en la lista.
  305.                 if i==OldNumber: #Al encontrar el número en la lista, lo substituye.
  306.                     Agenda[MName][0][A]=NewNumber
  307.     if SubOption1==2:
  308.         Agenda[MName][0].append(MNumber)
  309.        
  310. def M_Mail(SubOption2,MMail,OldMail,NewMail,Agenda,MName):
  311.     A=-1
  312.     if SubOption2==1:
  313.         for i in Agenda[MName][1]:
  314.             A+=1
  315.             if i==OldMail:
  316.                 Agenda[MName][1][A]=NewMail
  317.                
  318.     if SubOption2==2:
  319.         Agenda[MName][1].append(MMail)
  320.        
  321. def M_Street(MStreet,Agenda,MName):
  322.     OldStreet=Agenda[MName][2].keys() #Asignamos la clave, que es el nombre de la calle, a una variable.
  323.     #OldStreet será una lista con un elemento, la key del diccionario, la calle.
  324.     B=None #Cremos una variable vacía para usarla más tarde.
  325.    
  326.     for i in OldStreet:
  327.         B=i #B solo puede tomar un valor, ya que la lista solo tiene un valor.
  328.        
  329.     A=Agenda[MName][2][B] #A será la otra información sobre la calle.(Número, CP y Ciudad.)
  330.     Agenda[MName][2].clear() #Vacíamos el diccionario con la información de la calle.
  331.     #En el diccionario vacío introducimos la nueva calle con los valores anteriores
  332.     Agenda[MName][2].update({MStreet:[A]})
  333.      
  334. def M_SNumber(MSNumber,Agenda,MName):
  335.     #Funciona con la misma idea que la anterior función, pero no modifica la clave.
  336.     Street=Agenda[MName][2].keys()
  337.     B=None
  338.     for i in Street:
  339.         B=i  
  340.     Agenda[MName][2][B][0]=MSNumber
  341.    
  342. def M_CP(MCP,Agenda,MName):
  343.     #Funciona con la misma idea que la anterior función.
  344.     Street=Agenda[MName][2].keys()
  345.     B=None
  346.     for i in Street:
  347.         B=i  
  348.     Agenda[MName][2][B][1]=MCP
  349.      
  350. def M_City(MCity,Agenda,MName):
  351.     #Funciona con la misma idea que la anterior función.
  352.     City=Agenda[MName][2].keys()
  353.     B=None
  354.     for i in City:
  355.         B=i  
  356.     Agenda[MName][2][B][2]=MCity
  357.    
  358. def D_Contact(DContact,Agenda):
  359.     if DContact in Agenda: #Si ese contacto se encuentra en la agenda, lo elimina y devuelve 1.
  360.         Agenda.pop(DContact)
  361.         return 1
  362.     else: #Si no lo ha encontrado devuelve -1.
  363.         return -1
  364.    
  365. def V_Contact(VContact,Agenda): #Simplemente va a las posiciones en la lista según el dato que se quiere obtener.
  366.     if VContact in Agenda:
  367.         print(" ")
  368.         print("-Nombre de Contacto:",VContact) #Imprime el nombre de contacto.
  369.         print(" ")
  370.  
  371.         for i in Agenda[VContact][0]:
  372.             print("-Número de Teléfono:",i) #Recorre todos los números de teléfono de ese contacto y los imprime.
  373.         print(" ")
  374.  
  375.         for j in Agenda[VContact][1]:
  376.             print("-Dirección de E-Mail:",j) #Recorre todos los E-Mails de teléfono de ese contacto y los imprime.
  377.         print(" ")
  378.  
  379.         for k in Agenda[VContact][2]: #Imrpime los datos de la dirección.
  380.             print("-Calle:",k)
  381.         print("-Número:",Agenda[VContact][2][k][0])
  382.         print("-Código Postal:",Agenda[VContact][2][k][1])
  383.         print("-Ciudad:",Agenda[VContact][2][k][2])  
  384.         print(" ")
  385.     else:
  386.         print("El contacto",VContact,"no está en la agenda.")
  387.        
  388. def P_Agenda(Agenda): #Lo mismo que la función anterior pero recorriendo todos los contactos de la Agenda.
  389.     for i in Agenda:
  390.         print(" ")
  391.         print("-Nombre de Contacto:",i)
  392.         for j in Agenda[i][0]:
  393.             print("-Número de Teléfono:",j)
  394.         for k in Agenda[i][1]:
  395.             print("-Dirección de E-Mail:",k)
  396.         for m in Agenda[i][2]:
  397.             print("-Calle:",m)
  398.         print("-Número:",Agenda[i][2][m][0])
  399.         print("-Código Postal:",Agenda[i][2][m][1])
  400.         print("-Ciudad:",Agenda[i][2][m][2])  
  401.         print(" ")
  402.                
  403. def L_Contact(LContact,Agenda):
  404.     B=0
  405.     for i in Agenda:
  406.         if i in Agenda:
  407.             for j in Agenda[i][2]: #Posición donde se guarda la dirección.
  408.                 A = Agenda[i][2][j][2]
  409.                 if A==LContact:
  410.                     B+=1 #Suma uno a B para controlar si hay almenos un contacto de esa localidad.
  411.                     print(i)
  412.     if B==0:
  413.         print("No hay contactos con la localidad",LContact)
  414.                    
  415. def CP_Contact(CPContact,Agenda): #Misma estructura que la anterior función.
  416.     B=0
  417.     for i in Agenda:
  418.         if i in Agenda:
  419.             for j in Agenda[i][2]:
  420.                 A = Agenda[i][2][j][1]
  421.                 if A==CPContact:
  422.                     B+=1
  423.                     print(i)
  424.     if B==0:
  425.         print("No hay contactos con el Código Postal",CPContact)                  
  426.                    
  427. def FL_Contact(FLContact,Agenda): #Misma estructura que la anterior función.
  428.     B=0
  429.     for i in Agenda:
  430.         for j in i:
  431.             A=0
  432.             A+=1
  433.             if A==1:
  434.                 if j==FLContact:
  435.                     B+=1
  436.                     print(i)
  437.     if B==0:
  438.         print("No hay contactos que empiezen por la letra",FLContact)
  439.                    
  440. def SString_Contact(SStringContact,Agenda): #Misma estructura que la anterior función.
  441.     A=0
  442.     for i in Agenda:
  443.         if SStringContact in i: #Si esa subcadena se encuentra en un nombre que está en la agenda.
  444.             A+=1
  445.             print(i)
  446.     if A==0:
  447.         print("No hay contactos que contengan",SStringContact)
  448.    
  449. def SIntegrer_Contact(SIntegrerContact,Agenda): #Misma estructura que la anterior función.
  450.     B=0
  451.     for i in Agenda:
  452.         A=0 #Usamos esto para que no se vuelva a imprimir dos veces un contacto.
  453.         for j in Agenda[i][0]:
  454.             if SIntegrerContact in j and A==0:
  455.                 A+=1
  456.                 B+=1
  457.                 print(i)
  458.     if B==0:
  459.         print("No hay contactos que tengan",SIntegrerContact,"en su número de teléfono.")
  460.                
  461. def N_Number(NNumber,Agenda): #Misma estructura que la anterior función.
  462.     A=0
  463.     for i in Agenda:
  464.         Counter1=0
  465.         for j in Agenda[i][0]:
  466.             Counter1+=1
  467.        
  468.         if Counter1==NNumber:
  469.             A+=1
  470.             print(i)
  471.     if A==0:
  472.         print("No hay contactos con",NNumber,"números de teléfono.")
  473.            
  474. def N_Mail(NMail,Agenda): #Misma estructura que la anterior función.
  475.     A=0
  476.     for i in Agenda:
  477.         Counter2=0
  478.         for j in Agenda[i][1]:
  479.             Counter2+=1
  480.        
  481.         if Counter2==NMail:
  482.             print(i)
  483.     if A==0:
  484.         print("No hay contactos con",NMail,"direcciones de correo electrónico.")
  485.            
  486.            
  487. def Domain_Contacts(Domain,Agenda): #Misma estructura que la anterior función.
  488.     B=0
  489.     for i in Agenda:
  490.         A=0
  491.         for j in Agenda[i][1]:
  492.             if Domain in j and A==0:
  493.                 A+=1
  494.                 B+=1
  495.                 print(i)
  496.     if B==0:
  497.         print("No hay contactos con ese dominio en el E-Mail.")
  498.  
  499. def Check_9_Len(N1): #Esta función cuenta el número de letras/números de una cadena, si hay 9 retorna 1.
  500.     Len=0
  501.     for i in N1: #Descompone la cadena en carácteres y para cada carácter suma uno a un contador.
  502.         Len+=1
  503.     if Len==9:
  504.         return 1
  505.     if Len!=9:
  506.         return 0
  507.    
  508. def Check_5_Len(N2): #Esta función cuenta el número de letras/números de una cadena, si hay 5 retorna 1.
  509.     Len=0
  510.     for i in N2: #Descompone la cadena en carácteres y para cada carácter suma uno a un contador.
  511.         Len+=1
  512.     if Len==5:
  513.         return 1
  514.     if Len!=5:
  515.         return 0
  516.    
  517. def Check_DigitsString(N3):
  518.     A=0
  519.     #Esta lista contiene los números del 0 al 9, guardados como una cadena.
  520.     Digits = ["1","2","3","4","5","6","7","8","9","0"]
  521.     for i in Digits: #Comprueba si hay números en una cadena.
  522.         if i in N3:
  523.             A+=1
  524.     if A==0 and N3!="": #En caso de que no haya números ni sea una cadena vacía, retorna 1.
  525.         return 1
  526.     else:
  527.         return 0
  528.    
  529. def Check_Mail(Mail): #Esta función se encarga de que "Mail" tenga la estructura de string@string.@string
  530.     A=0
  531.     for i in Mail: #Recorremos el E-Mail, pasando por todos sus carácteres.
  532.         if A==1: #Si A es igual a 1, mira si al seguir recorriendo se encunetra un punto.
  533.             if i==".": #Si hay un punto retorna 1.
  534.                 return 1
  535.         if i=="@": #Si la i es una "@" suma uno a la variable A.
  536.             A+=1
  537.                
  538. Print_Menu()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement