Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

191
Views
¿Cómo calcular cuándo serán los 10000 días después de su cumpleaños?

Me pregunto cómo resolver este problema con Python básico ( no se deben usar bibliotecas ): Cómo calcular cuándo será (/ sería) el día 10000 de uno después de su cumpleaños. Por ejemplo, dado el lunes 19/05/2008, el día deseado es el viernes 05/10/2035 (según https://www.durrans.com/projects/calc/10000/index.html?dob=19%2F5%2F2008&e =mc2 )

Lo que he hecho hasta ahora es el siguiente script:

 years = range(2000, 2050) lst_days = [] count = 0 tot_days = 0 for year in years: if((year % 400 == 0) or (year % 100 != 0) and (year % 4 == 0)): lst_days.append(366) else: lst_days.append(365) while tot_days <= 10000: tot_days = tot_days + lst_days[count] count = count+1 print(count)

que estima la edad de la persona después de 10.000 días desde su cumpleaños (para personas nacidas después de 2000). Pero estoy desconcertado de cómo proceder.

over 4 years ago · Santiago Trujillo
2 answers
Answer question

0

Si importa la fecha y hora de la biblioteca

 import datetime your_date = "01/05/2000" (day, month, years) = your_date.split("/") date = datetime.date(int(years), int(month), int(day)) date_10000 = date+datetime.timedelta(days=10000) print(date_10000)

Sin script de biblioteca

 your_date = "20/05/2000" (day, month, year) = your_date.split("/") days = 10000 year = int(year) month = int(month) day = int(day) end=False #m1,m3,m5,m7,m8,m10,m12=31 #m2=28 #m4,m6,m9,m11=30 m=[31,28,31,30,31,30,31,31,30,31,30,31] while end!=True: if(((year % 400 == 0) or (year % 100 != 0) and (year % 4 == 0)) and(days-366>=0)): days-=366 year+=1 elif(((year % 400 != 0) or (year % 100 != 0) and (year % 4 != 0)) and(days-366>=0)): days-=365 year+=1 else: end=True end=False if(((year % 400 == 0) or (year % 100 != 0) and (year % 4 == 0))): m[1]=29 else: m[1]=28 while end!=True: if(days-m[month]>=0): days-=m[month] if(month+1!=12): month+=1 else: year+=1 if(((year % 400 == 0) or (year % 100 != 0) and (year % 4 == 0))): m[1]=29 else: m[1]=28 month=0 else: end=True if(day+days>m[month]): day=day+days-m[month]+1 if(month+1!=12): month+=1 else: year+=1 if(((year % 400 == 0) or (year % 100 != 0) and (year % 4 == 0))): m[1]=29 else: m[1]=28 month=0 else: day=day+days print(day,"/",month,"/",year)
over 4 years ago · Santiago Trujillo Report

0

Aquí hay una solución que se me ocurrió que no involucra bibliotecas ni paquetes, solo bucles y condicionales (cuentas para años bisiestos):

 def isLeapYear(years): if years % 4 == 0: if years % 100 == 0: if years % 400 == 0: return True else: return False else: return True else: return False monthDays = [31,28,31,30,31,30,31,31,30,31,30,31] sum = 0 sumDays = [] for i in monthDays: sumDays.append(365 - sum) sum += i timeInp = input("Please enter your birthdate in the format dd/mm/yyyy\n") timeInp = timeInp.split("/") days = int(timeInp[0]) months = int(timeInp[1]) years = int(timeInp[2]) totDays = 10000 if totDays > 366: if isLeapYear(years): if months == 1 or months == 2: totDays -= (sumDays[months - 1] + 1 - days) + 1 else: totDays -= (sumDays[months - 1] - days) + 1 else: totDays -= (sumDays[months - 1] - days) + 1 months = 1 days = 1 years += 1 while totDays > 366: if isLeapYear(years): totDays -= 366 else: totDays -= 365 years += 1 i = 0 while totDays != 0: if isLeapYear(years): monthDays[1] = 29 else: monthDays[1] = 28 if totDays >= monthDays[i]: months += 1 totDays -= monthDays[i] elif totDays == monthDays[i]: months += 1 totDays = 0 else: days += totDays if days % (monthDays[i] + 1)!= days: days %= monthDays[i] + 1 months += 1 totDays = 0 if months == 13: months = 1 years += 1 i += 1 if i == 12: i = 0 print(str(days) + "/" + str(months) + "/" + str(years))

Como sugiere el nombre, isLeapYear() toma un parámetro years y devuelve un valor booleano.

Nuestro primer paso para este problema, para hacerlo más fácil, es simplemente "traducir" nuestra fecha al próximo año. Esto facilita nuestros cálculos futuros. Para ello, podemos definir un array sumDays que almacene la cantidad de días que tarda cada mes en terminar el año (ir a año nuevo). Luego, restamos esta cantidad de totDays , tomamos en cuenta los años bisiestos y actualizamos nuestras variables.

Lo siguiente es la parte fácil, saltando los años mientras tenemos suficientes días para un año completo.

Una vez que no podemos sumar otro año completo, solo vamos mes a mes hasta que nos quedemos sin días.

¡Espero que esto haya ayudado! Avíseme si necesita más detalles o aclaraciones (o si cometí un error) :)

Ejemplos de casos de prueba:

Entrada #1:

 19/05/2008

Salida #1:

 5/10/2035

Entrada #2:

 05/05/2020

Salida #2:

 21/9/2047

Entrada #3:

 29/02/2020

Salida #3:

 17/7/2047

Revisé la mayoría de mis soluciones con este sitio web:https://www.countcalculate.com/calendar/birthday-in-days/result

over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!