def BscContacto(telabuscar): contador=-1 indice_retorno=-1 for contacto in Contactos: contador+=1 if (contacto.TELEFONO==telabuscar): indice_retorno=contador break return indice_retorno Contactos = [] # Se declara una lista que va a almacenar objetos, en un inicio esta vacia. NumdeElementos() # Se agregaran objetos que estaran en esta lista. Contactos.append(Contacto("01CV","Carlos Valadez","*****@*****.**",8126432187,datetime.date(year=2000,month=4,day=10),1700)) Contactos.append(Contacto("02FE","Franco Escalon","*****@*****.**",8113459378,datetime.date(year=2001,month=7,day=12),1900)) NumdeElementos() # Se define una función utilizando la expresión lambda, para facilitar el procedimiento. LimPantalla = lambda: os.system('cls') # Valida expresiones regulares. # _txt es el texto que se va a validar. # _regex es el patrón de expresión regular a validar. def RegEx(_txt,_regex): coincidencia=re.match(_regex, _txt) return bool(coincidencia) def principal():
def principal(): while (True): LimpiarPantalla() print("LISTA DE COTACTOS") print(" ") print("[1] Agregar un contacto.") print("[2] Buscar un contacto.") print("[3] Eliminar un contacto.") print("[4] Mostrar contactos.") print("[0] Salir.") opcion_elegida = input("¿Qué deseas hacer? > ") if RegEx(opcion_elegida, "^[123450]{1}$"): if opcion_elegida == "0": #Ordenamiento Contactos.sort(key=attrgetter('NICKNAME'), reverse=False) #Backup ruta_archivo = os.path.abspath(os.getcwd()) archivo_respaldo = ruta_archivo + "\\contactos_movil.bak" archivo_normal = ruta_archivo + "\\contactos_movil.csv" print(archivo_respaldo) print(archivo_normal) # Si hay archivo de datos. if os.path.exists(archivo_normal): # verifica si hay respaldo, y lo elimina if os.path.exists(archivo_respaldo): os.remove(archivo_respaldo) # Pasa el archivo normal, para que sea archivo de respaldo os.rename(archivo_normal, archivo_respaldo) # Genera el archivo CSV. f = open(archivo_normal, "w+") # Escribir el encabezado. f.write( "NICKNAME | NOMBRE | CORREO | TELEFONO | FECHANACIMIENTO | GASTO\n" ) # Cierro el archivo. f.close() #Salir del programa f = open(archivo_respaldo, "w+") # Escribo los encabezados de mi CSV f.write( "NICKNAME | NOMBRE | CORREO | TELEFONO | FECHANACIMIENTO | GASTO\n" ) # Escribimos en el CSV, a partir de la lista de objetos. for elemento in Contactos: f.write( f'{elemento.NICKNAME}|{elemento.NOMBRE}|{elemento.CORREO}|{elemento.TELEFONO}|{elemento.FECHANACIMIENTO}|{elemento.GASTO}\n' ) # Cierro el archivo f.close() print("GRACIAS POR UTILIZAR EL PROGRAMA") break if opcion_elegida == "1": print("Seleccionaste la Opcion Agregar Contacto") # Nombre, de 1 a 20 letras mayúsculas, o espacio. ValidarDatos("^([a-zA-Z])\w{4,15}", "Nickname: ") NEWnickname = captura ValidarDatos("^([A-Z ]){9,24}$", "Nombre: ") NEWnombre = captura ValidarDatos("^[a-z0-9_.-]+@[a-z]+\.[a-z.]", "Correo: ") NEWcorreo = captura ValidarDatos("^[0-9]{2} ([0-9]{4})-([0-9]{4})$", "Telefono: ") NEWtelefono = captura ValidarDatos("^[0-9]{4}/[0-9]{2}/[0-9]{2}$", "Fecha de Nacimiento: ") NEWfecha = captura ValidarDatos("[0-9]+\.[0-9]{2}$", "Gastos: $") NEWgastos = captura Contactos.append( Contacto(NEWnickname, NEWnombre, NEWcorreo, NEWtelefono, NEWfecha, NEWgastos)) if opcion_elegida == "2": print("Seleccionaste la Opcion Buscar Contacto") ValidarDatos("^([a-zA-Z])\w{4,15}", "Ingresa NickName a Buscar: ") NickName = captura indice_obtenido = BuscarContacto(NickName) if indice_obtenido == -1: print("No se encontró el objeto") else: print(f"\nNombre: {Contactos[indice_obtenido].NOMBRE}") print(f"Telefono: {Contactos[indice_obtenido].TELEFONO}") print(f"Correo: {Contactos[indice_obtenido].CORREO}") print( f"Fecha de Nacimiento: {Contactos[indice_obtenido].FECHANACIMIENTO}" ) print(f"Gastos: ${Contactos[indice_obtenido].GASTO}") if opcion_elegida == "3": print("Eliminar Contacto") ValidarDatos("^([a-zA-Z])\w{4,15}", "Ingresa NickName a Buscar: ") NickName = captura indice_obtenido = BuscarContacto(NickName) if indice_obtenido == -1: print("No se encontró el objeto") else: print( f"\nEliminando a: {Contactos[indice_obtenido].NOMBRE}") Contactos.pop(indice_obtenido) if opcion_elegida == "4": print("Mostrando Contactos") # Ordenamiento. Contactos.sort(key=attrgetter('NICKNAME'), reverse=False) # Barrido secuencial. for contacto in Contactos: print("------------------------------------------") print(f"Nickname: {contacto.NICKNAME}") print(f"Nombre: {contacto.NOMBRE}") print(f"Email: {contacto.CORREO}") print(f"Telefono: {contacto.TELEFONO}") print(f"Fecha de Nacimiento: {contacto.FECHANACIMIENTO}") print(f"Gastos: ${contacto.GASTO}") input("Pulsa enter para contunuar...") else: print("Esa respuesta no es válida.") input("Pulsa enter para contunuar...")
indice_retorno = -1 for contacto in Contactos: contador += 1 if (contacto.TELEFONO == telabuscar): indice_retorno = contador break return indice_retorno Contactos = [] # Se declara una lista que almacenará objetos. Inicia vacia CuantosElementosHay() # Se agregan objetos a la lista. Contactos.append( Contacto("01RS", "Raul Salomon", "*****@*****.**", 1234567890, datetime.date(year=2001, month=9, day=11), 1500)) Contactos.append( Contacto("02SS", "Sabrina Spellman", "*****@*****.**", 9999999999, datetime.date(year=2002, month=2, day=2), 1200)) CuantosElementosHay() #Menu # Se define una función utilizando la expresión lambda, que es equivalente a: os.system('cls') LimpiarPantalla = lambda: os.system('cls') # Validador de expresiones regulares # _txt es el texto a vlidar. # _regex es el patrón de expresión regular a validar. def RegEx(_txt, _regex):
Contactos = [] with open('contactos_movil.csv') as csv_file: csv_reader = csv.reader(csv_file, delimiter='|') line_count = 0 for row in csv_reader: if line_count == 0: print(f'Column names are {", ".join(row)}') else: NickN = str(row[0]) Name = str(row[1]) Email = str(row[2]) Cell = str(row[3]) FechNac = strtodate(row[4]) Gasto = row[5] Contactos.append(Contacto(NickN, Name, Email, Cell, FechNac, Gasto)) line_count += 1 print(f'Processed {line_count} lines.') # Se declara una lista que almacenará objetos. Inicia vacia CuantosElementosHay() # Se agregan objetos a la lista. Contactos.append( Contacto("RS002", "RAUL SALOMON", "*****@*****.**", 1234567890, strtodate("2001/09/11"), 1500.00)) Contactos.append( Contacto("SS003", "SABRINA SPELLMAN", "*****@*****.**", 9999999999, strtodate("1999/11/10"), 1200.20)) CuantosElementosHay() input("")
def BuscarContacto(telabuscar): contador=-1 indice_retorno=-1 for contacto in Contactos: contador+=1 if (contacto.TELEFONO==telabuscar): indice_retorno=contador break return indice_retorno Contactos = [] # Se declara una lista que almacenará objetos. Inicia vacia CuantosElementosHay() # Se agregan objetos a la lista. Contactos.append(Contacto("01MG","Miguel Gonzales","*****@*****.**",6482910463, datetime.date(year=2000,month=9,day=25),1023)) Contactos.append(Contacto("02AL","Ana Laura","*****@*****.**",0923827394, datetime.date(year=2001,month=10,day=30),1222)) CuantosElementosHay() #Menu # Se define una función utilizando la expresión lambda, que es equivalente a: os.system('cls') LimpiarPantalla = lambda: os.system('cls') # Validador de expresiones regulares # _txt es el texto a vlidar. # _regex es el patrón de expresión regular a validar. def RegEx(_txt,_regex): coincidencia=re.match(_regex, _txt) return bool(coincidencia)
Contactos = [] with open('contactos_movil.csv') as csv_file: csv_reader = csv.reader(csv_file, delimiter='|') line_count = 0 for row in csv_reader: if line_count == 0: print(f'Column names are {", ".join(row)}') else: NickN = str(row[0]) Name = str(row[1]) Email = str(row[2]) Cell = int(row[3]) FechNac = datetime.date(*(int(s) for s in row[4].split('-'))) Gasto = row[5] Contactos.append(Contacto(NickN, Name, Email, Cell, FechNac, Gasto)) #list_temp=Contacto({row[0]},{row[1]},{row[2]},{row[3]},{row[4]},{row[5]},) line_count += 1 print(f'Processed {line_count} lines.') # Se declara una lista que almacenará objetos. Inicia vacia CuantosElementosHay() # Se agregan objetos a la lista. Contactos.append( Contacto("01RS", "Raul Salomon", "*****@*****.**", 1234567890, datetime.date(year=2001, month=9, day=11), 1500)) Contactos.append( Contacto("02SS", "Sabrina Spellman", "*****@*****.**", 9999999999, datetime.date(year=2002, month=2, day=2), 1200)) CuantosElementosHay()
Contactos = [] #Hacemos las funcione con el csv with open('contactos_movil.csv') as csv_file: csv_reader = csv.reader(csv_file, delimiter='|') line_count = 0 for row in csv_reader: if line_count == 0: print(f'Column names are {", ".join(row)}') else: NickN=str(row[0]) Name=str(row[1]) Email=str(row[2]) Cell=int(row[3]) FechNac= datetime.date(*(int(s) for s in row[4].split('-'))) Gasto= row[5] Contactos.append(Contacto(NickN,Name,Email,Cell,FechNac,Gasto)) #list_temp=Contacto({row[0]},{row[1]},{row[2]},{row[3]},{row[4]},{row[5]},) line_count += 1 print(f'Processed {line_count} lines.') # Se hace una lista para almacernar. CuantosElementosHay() # Agregamos los registros a la lista. Contactos.append(Contacto("01HA","Alejandro Tellez","*****@*****.**",2233445566,datetime.date(year=2001,month=6,day=26),2 500)) Contactos.append(Contacto("02AP","Andre Gignac","*****@*****.**",9182736450,datetime.date(year=1985,month=7,day=23),1700)) CuantosElementosHay() #Menu LimpiarPantalla = lambda: os.system('cls')
indice_retorno = -1 for contacto in Contactos: contador += 1 if (contacto.TELEFONO == telabuscar): indice_retorno = contador break return indice_retorno Contactos = [] # Se declara una lista que va a almacenar objetos, que en un inicio esta vacia. NumerodeElementos() # Se agregan objetos que estaran en la lista. Contactos.append( Contacto("01AV", "Angel Valdez", "*****@*****.**", 8123432187, datetime.date(year=2001, month=8, day=21), 1300)) Contactos.append( Contacto("02IF", "Ivan Femat", "*****@*****.**", 8113453768, datetime.date(year=2002, month=5, day=2), 1400)) NumerodeElementos() # Se define una función utilizando la expresión lambda para ayudarnos a acortar procedimiento. AclararPantalla = lambda: os.system('cls') # Valida expresiones regulares # _txt es el texto que se va a validar. # _regex es el patrón de expresión regular a validar. def RegEx(_txt, _regex): coincidencia = re.match(_regex, _txt) return bool(coincidencia)