Python - 输入用户输入的天数,然后显示等效的年月日
Python - Putting in user input of days and then displaying equivalent years, months and days
我正在努力寻找天数部分的算法。不过,我能够减少年月。这是我的代码
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's days into equivalent years
years = (int(user_days // DAYS_IN_YEAR))
# Calculate the user's days into equivalent months
months = (int(user_days // DAYS_IN_MONTH))
# Calculate the user's 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
这是 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
如果没有开始日期,您将无法真正做到这一点,因为月份会有所不同(尤其是在闰年)。我建议将日期数学留给标准库。得到一个datetime.datetime作为你的开始日期,用你的"days"值构造一个datetime.timedelta,将两者相加得到一个结束日期,然后比较日期的年月日开始和结束日期。
我正在努力寻找天数部分的算法。不过,我能够减少年月。这是我的代码
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's days into equivalent years
years = (int(user_days // DAYS_IN_YEAR))
# Calculate the user's days into equivalent months
months = (int(user_days // DAYS_IN_MONTH))
# Calculate the user's 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
这是 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
如果没有开始日期,您将无法真正做到这一点,因为月份会有所不同(尤其是在闰年)。我建议将日期数学留给标准库。得到一个datetime.datetime作为你的开始日期,用你的"days"值构造一个datetime.timedelta,将两者相加得到一个结束日期,然后比较日期的年月日开始和结束日期。