日期和算术
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 告诉您这是不可能的。所以你需要以某种方式从你的时间增量中得到一个整数。
我自学了 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 告诉您这是不可能的。所以你需要以某种方式从你的时间增量中得到一个整数。