#agenda: dict (nombre:fono)
agenda={"Andres":22234646,"Maria":98723456,"David":43335555}


#buscar: str dict -> int (o None si no esta)
#buscar nombre en agenda y devolver fono
#ej: buscar("c",agenda)->1
def buscar(nombre,agenda):
 assert type(agenda)==dict and type(nombre)==str
 if nombre in agenda:
 	return agenda[nombre]
 else:
 	return None
assert buscar("Andres",agenda)==22234646


#agregar: str int dict -> dict
#agrega un contacto a la agenda si es que este no estaba ya en ella
#ej: agregar("Paula", 96541234, agenda) == {"Andres":22234646,"Maria":98723456,"David":43335555, "Paula": 96541234}
def agregar(nombre, numero, agenda):
	assert type(agenda)==dict and type(nombre)==str and type(numero)==int
	if nombre in agenda:
		return agenda #contacto ya esta no es necesario agregarlo
	else:
		agenda[nombre] = numero
		return agenda

assert agregar("Paula", 96541234, agenda) == {"Andres":22234646,"Maria":98723456,"David":43335555, "Paula": 96541234}


#borrar: str dict -> dict
#borra un contacto de la agenda si este existe
#ej: borrar("Paula", agenda) = {"Andres":22234646,"Maria":98723456,"David":43335555}
def borrar(nombre, agenda):
	assert type(agenda)==dict and type(nombre)==str
	if nombre in agenda:
		del agenda[nombre]
		return agenda
	else:
		return agenda #no hay nada que borrar

assert borrar("Paula", agenda) == {"Andres":22234646,"Maria":98723456,"David":43335555}


#cambiar: str int dict -> dict
#cambia el numero asociado a un nombre si este ya esta en el diccionario
#ej: cambiar("Andres", 1, agenda) == {"Andres":1,"Maria":98723456,"David":43335555}
def cambiar(nombre, numero, agenda):
	assert type(agenda)==dict and type(nombre)==str and type(numero)==int
	if nombre in agenda:
		agenda[nombre] = numero
		return agenda
	else:
		return agenda #no existia ese contacto entonces no se puede cambiar

assert cambiar("Andres", 1, agenda) == {"Andres":1,"Maria":98723456,"David":43335555}
