Python - ввод пользовательского ввода дней с последующим отображением эквивалентных лет, месяцев и дней

1

Я изо всех сил пытаюсь найти алгоритм для части дней. Я могу получить годы и месяцы. Здесь мой код

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()
  • 1
    Просто используйте остаток т.е. %
Теги:
calculator

3 ответа

1
Лучший ответ

Сначала вы берете свои 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
  • 0
    Я знаю, что исправил это обратно к оригиналу, я изменил его для ясности, но потом понял, чтобы просто переключить его обратно
  • 0
    Это сработало! Большое спасибо, это именно то, что я искал :)
Показать ещё 1 комментарий
0

Вы не можете сделать это без даты начала, потому что месяцы меняются (особенно на високосные годы). Я предлагаю оставить математику даты в стандартной библиотеке. Получите datetime.datetime для вашей даты начала, используйте значение "days" для создания datetime.timedelta, добавьте два вместе, чтобы получить дату окончания, а затем сравните день, месяц и год дат начала и окончания.

  • 0
    Спасибо за идею, в этой программе я просто пытаюсь попрактиковаться в основах Python, но в будущем попробую ваше предложение сделать программу более продвинутой и точной.
0

Это полезно для 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
  • 0
    Вау! Я никогда не слышал о divmod, спасибо за полезный ответ, я узнал что-то новое.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню