#1 import estructura #artista: nombre(str) confirmado(bool) estructura.mutable('artista' , 'nombre confirmado') # variable de estado invitados = [] # invitar: list(invitado) -> None # efecto: modifica lista invitados con aquellos artistas a los cuales se ingresa # como respuesta 'si', el atributo confirmado del invitado es siempre False def invitar(artistas): global invitados invitados = [] for nombre in artistas: pregunta = "Invita a " + nombre + " (si no no)?" respuesta = raw_input(pregunta) if respuesta == 'si': artista_invitado = artista(nombre, False) invitados.append(artista_invitado) # Uso artistas = ['Arjona', 'Journey', 'Franz Ferdinand', 'Shakira', 'Miguel Bose'] invitar(artistas) # confirmar: list(str) -> None # efecto: puede modificar atributo confirmado de cada invitado en la lista def confirmar(confirmados): global invitados for nombre in confirmados: for artista in invitados: if artista.nombre == nombre: artista.confirmado = True break # Test # definiendo un estado fijo para la variable de estado invitados invitados = [artista('Journey', False), artista('Franz Ferdinand', False), artista('Miguel Bose', False)] confirmar(['Journey', 'Miguel Bose']) assert invitados == [artista('Journey', True), artista('Franz Ferdinand', False), artista('Miguel Bose', True)] #2 # Para resolver este problema, usaremos mutacion y la funcion remove(x) # de las listas de Python # variable de mutacion, dias posibles en los cuales haremos la reunion # notar que el valor 32 NO esta incluido en el rango posibles = range(1,32) print "Bienvenido. Para terminar el proceso solo debe ingresar 0" terminado = False while not terminado: print "Ingrese sus fechas comprometidas, de a una. Para pasar a la siguiente persona, ingrese un valor negativo. Para terminar, ingrese 0" aux = input() while aux > 0: if aux in posibles: posibles.remove(aux) aux = input() # verificar condicion de termino if aux == 0: terminado = True # Mostrar en pantalla fechas posibles print "Las fechas posibles son los dias: ", posibles