Cine
Usted desea ir al cine a ver la próxima película del estudio Marvel lo antes posible para evitar los molestos spoilers. Para ello la página del cine le muestra la lista sala con la disponibilidad de asientos. La sala del cine siempre será representada por una lista con \(n\) listas, cada una de ellas con \(n\) strings. Cada string puede tener los valores 'O'
que indica que el asiento está disponible o 'X'
que indica que está ocupado.
El siguiente es un ejemplo para \(n=5\). Nota: el valor de \(n\) no debería ser importante.
sala = [
["X","X","X","O","O"],
["X","X","X","X","O"],
["X","O","X","O","X"],
["X","X","X","X","O"],
["O","O","X","O","O"],
]
Ejercicios
Asientos disponibles
Escriba la función asientos_disponibles(sala)
que indique si la sala del cine tiene asientos disponibles. La función debe retornar True
si la sala tiene asientos disponibles y False
en caso contrario.
>>> asientos_disponibles(sala)
True
Solución
def asientos_disponibles(sala):
for fila in sala:
for asiento in fila:
if asiento == 'O':
return True #encontramos algun asiento disponible
return False #nunca encontramos un asiento disponible
Disponible
Escriba la función disponible(fila,columna,sala)
que reciba una sala del cine. La función debe retornar True
si el asiento de la fila y columna ingresados está disponible y False
en caso contrario. Si ingresa una fila o columna que no existan también deberá retornar False
.
Solución
def disponible(fila, columna, sala):
if fila >= 0 and fila < len(sala):
if columna >= 0 and columna < len(sala[0]):
return sala[fila][columna] == "O"
else:
return False
else:
return False
>>> disponible(2, 4, sala)
False
>>> disponible(10, 4, sala)
False
>>> disponible(0, 3, sala)
True
Porcentaje Disponible
Escriba la función porcentaje_disponible(sala)
que indique porcentualmente la disponibilidad de una sala de cine.
>>> porcentaje_disponible(sala)
0.2
Solución
def porcentaje_disponible(sala):
cantidad_asientos = 0
cantidad_disponible = 0
for fila in sala:
for asiento in fila:
if asiento == 'O':
cantidad_disponible+=1
cantidad_asientos+=1
return round(cantidad_disponible/cantidad_asientos,1)
Espacio suficiente
Usted desea ir con sus \(m\) amigos a ver la película y todos quieren ir a ver la película en la misma sala de cine. Debido al grán éxito en la pre-venta es posible que no queden muchos asientos. Escriba la función hay_espacio_suficiente(m,sala)
que reciba un entero \(m\) con la cantidad de amigos (usted incluido) que quieren ir a ver la película y la sala del cine. La función debe retornar True
si hay espacio suficiente para que todos puedan ver la película en la sala de cine o False
en caso contrario :(
>>> hay_espacio_suficiente(12, sala)
False
>>> hay_espacio_suficiente(3, sala)
True
Solución
def hay_espacio_suficiente(m,sala):
cantidad_disponible = 0
for fila in sala:
for asiento in fila:
if asiento == 'O':
cantidad_disponible+=1
if m <= cantidad_disponible:
return True
else:
return False