9 2022-03-24
Examen de Inteligencia de los Negocios
Grado: Inteligencia de los Negocios
Fecha: 24 de marzo de 2022
Ejercicio 9.1 Escriba un programa que permita practicar una variante simplificada de la prueba de cálculo mental La calculadora humana del concurso televisivo Saber y ganar. El usuario debe ir sumando todos los números de la lista de uno en uno hasta que se equivoque o termine la lista, en cuyo caso ganará.
Ejemplo usando la lista [50, 4, 28, 33, 12]:
SUMAR Y GANAR
Vaya sumando todos los números que le iré diciendo. Empezamos por 0.
Más 50: 50
Más 4: 54
Más 28: 72
Te has equivocado, pero has acertado 2 veces seguidas.
SUMAR Y GANAR
Vaya sumando todos los números que le iré diciendo. Empezamos por 0.
Más 50: 50
Más 4: 54
Más 28: 82
Más 33: 115
Más 12: 127
Enhorabuena, GANASTE.# Definimos la lista de números
numeros = [50, 4, 28, 33, 12]
# Definimos un acumulador para llevar la suma
suma = 0
print("SUMAR Y GANAR")
print("Vaya sumando todos los números que le iré diciendo. Empezamos por 0.")
# Bucle iterativo para recorrer la lista de números
for i in range(len(numeros)):
# Preguntamos al usuario por la siguiente suma
respuesta = int(input("Más " + str(numeros[i]) + ": "))
# Añadimos el siguiente número a la suma
suma += numeros[i]
# Si la respuesta del usuario no coincide con la suma, le avisamos y salimos del bucle.
if respuesta != suma:
print("Te has equivocado, pero has acertado", i, "veces seguidas.")
break
# Si el acumulador suma contiene la suma de todos los números entonces el usuario ha ganado.
if suma == sum(numeros):
print("Enhorabuena, GANASTE.")SUMAR Y GANAR
Vaya sumando todos los números que le iré diciendo. Empezamos por 0.
Enhorabuena, GANASTE.
Ejercicio 9.2 Escribir un programa que calcule a partir de una fecha de un año no bisiesto el número de días que han transcurrido en ese año y el número de meses lunares completos que abarcan. Se recuerda que un mes lunar dura aproximadamente 29,53 días.
El programa debe usar diccionarios para acceder al número de días de cada mes.
Ejemplo:
CALENDARIO LUNAR
Este programa convierte una fecha de un año NO bisiesto a un calendario lunar.
Indique el día: 1
Indique el mes: henero
El mes henero no existe.
CALENDARIO LUNAR
Este programa convierte una fecha de un año NO bisiesto a un calendario lunar
Indique el día: -5
Indique el mes: marzo
El día -5 de marzo no existe.
CALENDARIO LUNAR
Este programa convierte una fecha de un año NO bisiesto a un calendario lunar
Indique el día: 29
Indique el mes: febrero
El día 29 de febrero no existe.
CALENDARIO LUNAR
Este programa convierte una fecha de un año NO bisiesto a un calendario lunar
Indique el día: 1
Indique el mes: febrero
El día 1 de febrero es el día 32 del año.
Habrán pasado 1.08 meses lunares.# Definimos una lista con los meses del año en orden
meses = ["enero", "febrero", "marzo", "abril", "mayo", "junio", "julio", "agosto", "septiembre", "octubre", "noviembre", "diciembre"]
# Definimos un diccionario con los días de cada mes
dias = {"enero":31, "febrero":28, "marzo":31, "abril":30, "mayo":31, "junio":30, "julio":31, "agosto":31, "septiembre":30, "octubre":31, "noviembre":30, "diciembre":31}
# Definimos el número de días de un mes lunar
meslunar = 29.53
print("CALENDARIO LUNAR")
print("Este programa convierte una fecha de un año NO bisiesto a un calendario lunar.")
# Preguntamos al usuario por el día
dia = int(input("Indique el día: "))
# Preguntamos al usuario por el mes
mes = input("Indique el mes: ")
# Si el mes no está en la lista de meses, avisamos al usuario y terminamos la ejecución.
if mes not in meses:
print("El mes", mes, "no existe.")
# Si el día no es un día válido del mes introducido, avisamos al usuario y terminamos la ejecución.
elif dia < 1 or dia > dias[mes]:
print("El día", dia, "de", mes, "no existe.")
# En caso contrario, la fecha introducida es válida y procedemos al cálculo de días transcurridos
else:
# Definimos un acumulador para el número de días transcurridos
numdias = 0
# Bucle iterativo para recorrer la lista d emeses por valor
for i in meses:
# Si el mes i no coincide con el mes introducido, añadimos el número de días del mes i a los días transcurridos
if i != mes:
numdias += dias[i]
# Si el mes i coincide con el mes introducido, añadimos el día introducido a los días transcurridos y salimos del bucle
else:
numdias += dia
break
# Mostramos por pantalla el número de días transcurridos hasta la fecha introducida
print("El día", dia, "de", mes, "es el día", numdias, "del año.")
# Mostramos por pantalla el número de meses lunares transcurridos hasta la fecha introducida
print("Habrán pasado", round(numdias / meslunar, 2), "meses lunares.")CALENDARIO LUNAR
Este programa convierte una fecha de un año NO bisiesto a un calendario lunar.
El día 1 de febrero es el día 32 del año.
Habrán pasado 1.08 meses lunares.
Ejercicio 9.3 Un cine tiene una sala rectangular con 5 filas y 4 columnas de butacas. Escribir un programa que permita gestionar la reserva de butacas con los siguientes requisitos:
- El programa mostrará una matriz con el carácter X para las butacas libres y O para las ocupadas y preguntará por la fila y columna de la butaca a reservar.
- Si el usuario introduce una fila o una columna no válidas, se le avisará y se le volverá a preguntar.
- Si la fila y la columna introducida corresponde a una butaca ocupada, se avisará al usuario y se le volverá a preguntar.
- Si la butaca está libre se reservará y se volverá a preguntar al usuario si quiere hacer más reservas.
- El programa terminará cuando el usuario no quiera hacer más reservas.
Ejemplo:
RESERVA DE BUCATAS
XXXXX
XXXXX
XXXXX
XXXXX
Introduce la fila que quieres: 2
Introduce la columna que quieres: 3
Reserva realizada.
¿Desea realizar otra reserva? (S/N): S
RESERVA DE BUCATAS
XXXXX
XXOXX
XXXXX
XXXXX
Introduce la fila que quieres: 5
Introduce la columna que quieres: 1
La fila y columna elegidas no son válidas.
¿Desea realizar otra reserva? (S/N): S
RESERVA DE BUCATAS
XXXXX
XXOXX
XXXXX
XXXXX
Introduce la fila que quieres: 2
Introduce la columna que quieres: 3
La butaca elegida está ocupada.
¿Desea realizar otra reserva?
(S/N): S
RESERVA DE BUCATAS
XXXXX
XXOXX
XXXXX
XXXXX
Introduce la fila que quieres: 1
Introduce la columna que quieres: 2
Reserva realizada.
¿Desea realizar otra reserva? (S/N): N
¡Gracias! Solución 1
# Número de filas
nfil = 4
# Número de columnas
ncol = 5
# Creamos una lista para representar las filas del cine
cine = []
for i in range(nfil):
# Representamos cada fila con una cadena de "X" del tamaño del número de columnas
cine.append("X" * ncol)
# Bucle para preguntar al usuario por la reserva
while True:
print("\nRESERVA DE BUTACAS")
# Bucle para recorrer las filas del cine y mostrarlas por pantalla
for i in cine:
print(i)
# Preguntamos al usuario por la fila que quiere
fila = int(input("Introduce la fila que quieres: "))
# Preguntamos al usuario por la columna que quiere
columna = int(input("Introduce la columna que quieres: "))
# Si el número de fila o columna son mayores de los disponibles avisamos al usuario
if fila > nfil or columna > ncol:
print("La fila y columna elegidas no son válidas.")
# Si la fila y la columna que quiere el usuario está ocupada, le avisamos
elif cine[fila-1][columna-1] == "O":
print("La butaca elegida está ocupada.")
# En caso contrario, reservamos la butaca escribiendo un "O" en la posición de la fila y la columna
else:
cine[fila-1] = cine[fila-1][:columna-1] + "O" + cine[fila-1][columna:]
print("Reserva realizada.")
# Preguntamos al usuario si quiere hacer otra reserva y si no salimos del bucle
if input("¿Desea realizar otra reserva? (S/N): ") != "S":
break
print("¡Gracias!")
RESERVA DE BUTACAS
XXXXX
XXXXX
XXXXX
XXXXX
Reserva realizada.
RESERVA DE BUTACAS
XXXXX
XXXXX
XOXXX
XXXXX
La fila y columna elegidas no son válidas.
RESERVA DE BUTACAS
XXXXX
XXXXX
XOXXX
XXXXX
La butaca elegida está ocupada.
RESERVA DE BUTACAS
XXXXX
XXXXX
XOXXX
XXXXX
Reserva realizada.
¡Gracias!
Solución 2
# Número de filas
nfil = 4
# Número de columnas
ncol = 5
# Creamos una lista para las filas del cine
cine = []
# Bucle iterativo para recorrer las filas del cine
for i in range(nfil):
# Creamos una lista para las butacas de una fila
fila = []
for j in range(ncol):
# Ponemos el caracter X en la fila i y la columna j del cine
fila.append("X")
# Añadimos la fila al cine
cine.append(fila)
# Bucle para preguntar al usuario por la reserva
while True:
print("\nRESERVA DE BUTACAS")
# Bucle para recorrer las filas del cine y mostrarlas por pantalla
for i in cine:
#Unimos todas las butacas de la fila i en una cadena y la mostramos por pantalla
print("".join(i))
# Preguntamos al usuario por la fila que quiere
fila = int(input("Introduce la fila que quieres: "))
# Preguntamos al usuario por la columna que quiere
columna = int(input("Introduce la columna que quieres: "))
# Si el número de fila o columna son mayores de los disponibles avisamos al usuario
if fila > nfil or columna > ncol:
print("La fila y columna elegidas no son válidas.")
# Si la fila y la columna que quiere el usuario está ocupada, le avisamos
elif cine[fila-1][columna-1] == "O":
print("La butaca elegida está ocupada.")
# En caso contrario, reservamos la butaca escribiendo un "O" en la posición de la fila y la columna
else:
cine[fila-1][columna-1] = "O"
print("Reserva realizada.")
# Preguntamos al usuario si quiere hacer otra reserva y si no salimos del bucle
if input("¿Desea realizar otra reserva? (S/N): ") != "S":
break
print("¡Gracias!")
RESERVA DE BUTACAS
XXXXX
XXXXX
XXXXX
XXXXX
Reserva realizada.
RESERVA DE BUTACAS
XXXXX
XXXXX
XOXXX
XXXXX
La butaca elegida está ocupada.
RESERVA DE BUTACAS
XXXXX
XXXXX
XOXXX
XXXXX
Reserva realizada.
¡Gracias!