Fechas mágicas
Una fecha mágica es una fecha en la que el día multiplicado por el mes es igual a los últimos dos dígitos del año. Por ejemplo, el 10 de junio de 1960 es una fecha mágica, pues junio es el mes 6, y al multiplicarlo por 10 el resultado coincide con el año: 60. Escriba una función que determine si una fecha es mágica o no, retornando True o False según corresponda. La fecha que recibe la función es un string en formato "mes dia, año", con un espacio separando el mes y el día, y una coma y un espacio separando el año. Por ejemplo, “Junio 10, 1960”. Puede utilizarse, una función que convierte un mes escrito en palabras a su equivalente en número entero.
Solución
# Transforma un mes de tipo string a entero
def numero_mes(mes):
# Para simplificar la comparacion se transforma a minuscula
mes = mes.lower()
# Se hace la comparacion mes a mes
if mes == "enero":
return 1
elif mes == "febrero":
return 2
elif mes == "marzo":
return 3
elif mes == "abril":
return 4
elif mes == "mayo":
return 5
elif mes == "junio":
return 6
elif mes == "julio":
return 7
elif mes == "agosto":
return 8
elif mes == "septiembre":
return 9
elif mes == "octubre":
return 10
elif mes == "noviembre":
return 11
elif mes == "diciembre":
return 12
def fechas_magicas(fecha):
# Extraccion de dia, mes y año utilizando subtrings
i1 = fecha.index(" ") # Buscamos el primer espacio
i2 = fecha.index(",") # Buscamos la coma
mes = fecha[:i1] # Se extrae el substring del mes
mes = numero_mes(mes) # Luego se transforma con nuestra funcion a entero
dia = fecha[i1+1:i2] # Se extrae el dia
dia = int(dia) # Se transforma a entero
año = fecha[-2:] # Para el año solo obtenemos los ultimos valores
año = int(año) # Se transforma en entero
return dia * mes == año
# Entrada de fecha
fecha = input("Ingrese fecha: ")
# Salida
if fechas_magicas(fecha):
print("Es fecha magica")
else:
print("No es fecha magica")