日期和算术

Dates and Arithmetic

我自学了 python 将近一个月,我遇到了一个涉及 "datetime" 和算术运算符的练习。

首先,他们要求我创建一个代码,用户应在其中输入项目的截止日期,并且该代码必须告诉他们必须完成多少天。

我这样做了:

    import datetime  
    today = datetime.date.today()  
    delivery_date = input("Tell me your deadline (dd/mm/aa): ")

    print("\n")

    deadline = datetime.datetime.strptime(delivery_date, "%d/%m/%y").date()  
    days = delivery_date - today  
    print("You have", days.days, "days to finish your project.")

但是第二部分有点棘手。

其次 - 他们要求我尝试结合周和天给出答案,我将需要一些数学函数来解决这最后一部分。

我这样做了:

    weeks = days // 7
    remainder_days = days % 7
    print("You have", weeks.days, "weeks and", remainder_days.days, "days.")

只有这最后一部分失败了。最后我收到这个错误信息:

        remainder_days = days % 7
    TypeError: unsupported operand type(s) for %: 'datetime.timedelta' and 'int'  

我知道问题出在模数符号 (%) 上,但如果他们要求我以周和天的组合形式给出最终结果,这是可能的,但我看不出如何。

还有其他方法可以通过简单的数学运算来解决这个问题吗?
我需要在代码中添加任何内容吗?
有人可以帮我吗?
谢谢

days = delivery_date - today 应该是 days = deadline - today。您还应该将其称为 delta,因为它是一个时间增量,您可以在其中执行 delta.days 以获得天数。稍后只需使用 delta.days

此外 delta.days 只是一个数字,所以在执行 delta.days // 7 时,您不想在结果上调用 .days

像下面这样的东西应该可以工作:

import datetime  
today = datetime.date.today()  
delivery_date = input("Tell me your deadline (dd/mm/aa): ")

print("\n")

deadline = datetime.datetime.strptime(delivery_date, "%d/%m/%y").date()  
delta = deadline - today  
print("You have", delta.days, "days to finish your project.")

weeks = delta.days // 7
remainder_days = delta.days % 7
print("You have", weeks, "weeks and", remainder_days, "days.")

顺便说一句,错误为您指明了正确的方向:TypeError: unsupported operand type(s) for %: 'datetime.timedelta' and 'int'。这意味着您有一个时间增量对象,您在其上应用带有整数的模运算符,并且 python 告诉您这是不可能的。所以你需要以某种方式从你的时间增量中得到一个整数。