Python 编写一个函数来确定日期是否在将来

Python 编写一个函数来确定日期是否在将来,python,date,datetime,boolean,Python,Date,Datetime,Boolean,我试图定义一个名为inTheFuture的函数,它接受给定的年数、月数和日数作为3个独立的参数。函数应返回布尔值True或False,以指示date year、month和day参数是否在将来 这是我一直收到的错误消息: TypeError: float() argument must be a string or a number, not 'tuple' 我试过转换float、string、int,但我还是不知所措 这是我的代码: import sys import datetime y

我试图定义一个名为inTheFuture的函数,它接受给定的年数、月数和日数作为3个独立的参数。函数应返回布尔值True或False,以指示date year、month和day参数是否在将来

这是我一直收到的错误消息:

TypeError: float() argument must be a string or a number, not 'tuple'

我试过转换float、string、int,但我还是不知所措

这是我的代码:

import sys
import datetime

year= input ("Enter Year: ");
month= int(input ("Enter Month: "));
day= int(input ("Enter Day: "));

def getTodaysDate():
    return datetime.datetime.today();
today = getTodaysDate();

def inTheFuture():
    ymd=(year,month,day)
    if float(ymd)>today:
        return true
    if float(ymd)<today:
        return false

inf = inTheFuture();

这正是错误所说的:您尝试将floatymd与今天进行比较,其中ymd被分配元组year、month、day。你到底期望什么结果?你认为当你度过一年、一个月、一天的浮动期时会发生什么?它并不代表我能想到的任何浮动

但即便如此,您的比较也毫无意义,因为今天是一个datetime.datetime实例。当您将浮动与之进行比较时,您预计会发生什么?那怎么行

把苹果和苹果比较一下。如果您想知道给定的年、月和日值表示的日期和时间是否在给定的datetime.datetime值之前,请使用年、月和日来创建实际表示日期和时间的对象,即datetime.datetime实例,与您正在比较的对象相同。苹果对苹果

内置帮助以及在线文档说明,这是一个简单的问题,将这些值按年/月/日顺序传递给datetime.datetime构造函数:

day = datetime.datetime(year, month, day)
if day > today: # etc.

顺便说一句,您的程序还存在多个其他问题。您不应该自己显式地引发SystemExit来中止脚本,通常最好让它自然结束——这就是exit的用途。您尝试在实际验证年、月和日值之前计算inf,但实际上,不需要自己进行计算;相反,尝试使用无效值创建datetime.datetime将引发ValueError,您可以自己检测到该错误。分号无处不在,这在Python中是不必要的,也是一个坏习惯。Python中的布尔常量用大写字母拼写为True和False。最后,您的最后一行只是引用inf,但不使用它;这不会导致显示值。在脚本中,您需要显式打印要输出的内容。

您不能将日期转换为浮点、字符串或整数。日期实现自己的比较。您需要将参数转换为符合。这应该起作用:

today = datetime.datetime.today().date()

def inTheFuture(year, month, day):
    ymd=datetime.datetime(year,month,day).date()
    if ymd > today:
        return True
    else:
        return False

要处理没有时间的日期,可以使用datetime.date类:


当传递一组三个数字时,您希望float返回什么?我已经尝试转换float、string、int-为什么?你想通过转换实现什么?当你在没有转换的情况下尝试时,你到底犯了什么错误?如果你在沮丧中尝试所有其他事情,我想你是先尝试的?你对这个问题的理解是什么?一点挫折感和使用谷歌的误导性信息。我知道我现在不能这么做。多亏了你和科伦,我现在的方向是正确的顺便说一句,这是我唯一的理由;因为我的老师想让我们这么做,因为大多数语言都要求你这么做。他只是想让我们养成使用它们的习惯。
#!/usr/bin/env python3
from datetime import date

def in_future(date_to_test):
    """Whether *date_to_test* is in the future."""
    return date_to_test > date.today()

input_date = date(*map(int, input("Enter Year-Month-Day: ").split('-')))
print("Got {}. Is it in the future?".format(input_date))
print("yup" if in_future(input_date) else "nope")