【发布时间】:2019-10-04 12:02:11
【问题描述】:
所以这是我第一次用 Python 编写代码,我想做一个小项目。我考虑了我想做什么,并认为人们可能想知道每个假期还有多少天。
我应该如何找出今天的日期和假期之间的差异?
from datetime import datetime, timedelta
now = datetime.now() + timedelta(days = 10)
def get_user_holiday():
holiday = input("What is your favorite holiday? ")
if holiday == "New Year's Day":
new_years_Day = datetime(now.year, 1, 1)
elif holiday == "Martin Luther King Jr. Day":
martin_luther_king_jr_Day = datetime(now.year, 1, 21)
elif holiday == "Groundhog Day":
groundhog_Day = datetime(now.year, 2, 2)
elif holiday == "Valentine's Day":
valentines_Day = datetime(now.year, 2, 14)
elif holiday == "Ash Wednesday":
ash_Wednesday = datetime(now.year, 3, 6)
elif holiday == "St. Patrick's Day":
st_patricks_Day = datetime(now.year, 3, 17)
elif holiday == "April Fool's Day":
april_fools_Day = datetime(now.year, 4, 1)
elif holiday == "Palm Sunday":
palm_Sunday = datetime(now.year, 4, 14)
elif holiday == "Good Friday":
good_Friday = datetime(now.year, 4, 19)
elif holiday == "Easter Day":
easter_Day = datetime(now.year, 4, 21)
elif holiday == "Mother's Day":
mothers_Day = datetime(now.year, 5, 12)
elif holiday == "Memorial Day":
memorial_Day = datetime(now.year, 5, 27)
elif holiday == "Father's Day":
fathers_Day = datetime(now.year, 6, 16)
elif holiday == "Independence Day":
independence_Day = datetime(now.year, 7, 4)
elif holiday == "Labor Day":
labor_Day = datetime(now.year, 9, 2)
elif holiday == "Columbus Day":
columbus_Day = datetime(now.year, 10, 4)
elif holiday == "Halloween Day":
halloween_Day = datetime(now.year, 10, 31)
elif holiday == "Veterans Day":
veterans_Day = datetime(now.year, 11, 11)
elif holiday == "Thanksgiving Day":
thanksgiving_Day = datetime(now.year, 11, 28)
elif holiday == "Hanukkah Day":
hanukkah_Day = datetime(now.year, 12, 22)
elif holiday == "Christmas Day":
christmas_Day = datetime(now.year, 12, 25)
elif holiday == "New Year's Eve Day":
new_years_eve_Day = datetime(now.year, 12, 31)
else:
print("Not a valid holiday. ")
return holiday
这就是我将代码编辑成的内容。
from datetime import datetime, timedelta
now = datetime.now()
def get_user_holiday():
global now
holiday = input("What is your favorite holiday? ")
if holiday == "New Year's Day":
return datetime(now.year, 1, 1)
elif holiday == "Martin Luther King Jr. Day":
return datetime(now.year, 1, 21)
elif holiday == "Groundhog Day":
return datetime(now.year, 2, 2)
elif holiday == "Valentine's Day":
return datetime(now.year, 2, 14)
elif holiday == "Ash Wednesday":
return datetime(now.year, 3, 6)
elif holiday == "St. Patrick's Day":
return datetime(now.year, 3, 17)
elif holiday == "April Fool's Day":
return datetime(now.year, 4, 1)
elif holiday == "Palm Sunday":
return datetime(now.year, 4, 14)
elif holiday == "Good Friday":
return datetime(now.year, 4, 19)
elif holiday == "Easter Day":
return datetime(now.year, 4, 21)
elif holiday == "Mother's Day":
return datetime(now.year, 5, 12)
elif holiday == "Memorial Day":
return datetime(now.year, 5, 27)
elif holiday == "Father's Day":
return datetime(now.year, 6, 16)
elif holiday == "Independence Day":
return datetime(now.year, 7, 4)
elif holiday == "Labor Day":
return datetime(now.year, 9, 2)
elif holiday == "Columbus Day":
return datetime(now.year, 10, 4)
elif holiday == "Halloween Day":
return datetime(now.year, 10, 31)
elif holiday == "Veterans Day":
return datetime(now.year, 11, 11)
elif holiday == "Thanksgiving Day":
return datetime(now.year, 11, 28)
elif holiday == "Hanukkah Day":
return datetime(now.year, 12, 22)
elif holiday == "Christmas Day":
return datetime(now.year, 12, 25)
elif holiday == "New Year's Eve Day":
return datetime(now.year, 12, 31)
else:
print("Not a valid holiday. ")
return holiday
def calculate_dates(holiday, now):
diff = holiday - now
if diff.days >= 0: # holiday is upcoming this year
return diff.days
else: # next holiday occurs next year
return ((holiday + timedelta(years = 1)) - now).days
hd = get_user_holiday()
now = datetime.now()
calc = calculate_dates(hd, now)
print(calc)
【问题讨论】:
-
如何退出工作?如果有错误,您需要将其包含在回溯中。参考minimal reproducible example。
-
您总是返回用户输入的字符串,而不是计算的日期(我不确定我是否理解您为什么要加上 10 天或 2000 年)
-
直截了当的问题,'hd' 包含一个字符串 & 你怎么能期望它具有像日和月这样的属性?
-
我继续编辑了一些东西,因为返回假期后的一切都以某种方式、形状或形式搞砸了。我只是想知道如何完成代码。
-
我将 10 天添加到 'timedelta' 以使 'now.year' 显示当前年份,而无需将导入从 'from datetime import datetime' 更改为 'import datetime'。
标签: python python-3.x datetime