Я изо всех сил пытаюсь найти алгоритм для части дней. Я могу получить годы и месяцы. Здесь мой код
def main():
# Prompt the user for an integer that represents a total number of days
user_days = int(input("Enter a total number of days: "))
# constant variables for: years, months, days
DAYS_IN_YEAR = 365
DAYS_IN_MONTH = 30
# Calculate the user days into equivalent years
years = (int(user_days // DAYS_IN_YEAR))
# Calculate the user days into equivalent months
months = (int(user_days // DAYS_IN_MONTH))
# Calculate the user days into equivalent days
# days = (int( user_days - DAYS_IN_MONTH ))
# days = (int( ))
# give user their results
print(user_days, "days are equivalent to: ")
# display the equivalent years
print("Years: ", years)
# display the equivalent months
print("Months: ", months)
# display the equivalent days
print("Days: ", days)
main()
Сначала вы берете свои days
и занимаетесь floor div
на 365, даете вам годы. Затем нам нужны оставшиеся дни, поэтому мы используем modulus
365 дней и получаем оставшиеся дни, мы берем их и делаем floor div
на 30, чтобы получить наши месяцы. то мы берем те оригинальные оставшиеся дни и modulus
30, чтобы получить наши дни, которые остались
days = int(input())
years = days // 365
years_r = days % 365
months = years_r // 30
days_r = years_r % 30
400 Years: 1, Months: 1, Days: 5 500 Years: 1, Months: 4, Days: 15
Вы не можете сделать это без даты начала, потому что месяцы меняются (особенно на високосные годы). Я предлагаю оставить математику даты в стандартной библиотеке. Получите datetime.datetime для вашей даты начала, используйте значение "days" для создания datetime.timedelta, добавьте два вместе, чтобы получить дату окончания, а затем сравните день, месяц и год дат начала и окончания.
Это полезно для divmod()
, который выполняет целочисленное деление и дает вам как частное, так и остальное:
user_days = 762
DAYS_IN_YEAR = 365
DAYS_IN_MONTH = 30
# Calculate number of years and remainder
years, rem = divmod(user_days, DAYS_IN_YEAR)
# Calculate number of months and remainder
months, days = divmod(rem, DAYS_IN_MONTH)
# Display results
print(user_days, "days are equivalent to: ")
print("Years: ", years)
print("Months: ", months)
print("Days: ", days)
# output:
# 762 days are equivalent to:
# Years: 2
# Months: 1
# Days: 2
%