问题:编写一个函数来确定日期是否在futu中

2024-06-09 22:48:36 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图定义一个名为inTheFuture()的函数,它接受给定的年数、月数和日数作为3个独立的参数。函数应该返回一个布尔值(True或False),以指示日期(年、月和日)参数是否在将来。你知道吗

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

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();

Tags: 函数importinput参数todaydatetimestringreturn
3条回答

不能将日期转换为浮点、字符串或整数。date实现它自己的比较。你需要转换你的论点来遵守。这应该起作用:

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

正如错误所说:您试图比较float(ymd)today,其中ymd被分配了元组(year, month, day)。你到底期待什么结果?当你把(year, month, day)传给float时,你认为会发生什么?它并不代表我所能想到的float。你知道吗

但即使这样,你的比较也毫无意义,因为today是一个datetime.datetime实例。当你将float与之比较时,你期望发生什么?那是怎么回事?你知道吗

把苹果比作苹果。如果您想知道由给定的yearmonthday值表示的日期和时间是否在给定的datetime.datetime值之前,那么可以使用yearmonthday来创建一种实际表示日期和时间的东西,即。,一个datetime.datetime实例—与您将其与进行比较的对象相同。苹果对苹果。你知道吗

内置的help以及联机文档解释说,这是一个简单的问题,即按year/month/day顺序将这些值传递给datetime.datetime构造函数:

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

顺便说一句,您的程序还存在多个其他问题。你不应该自己显式地raise SystemExit中止一个脚本(通常最好让它自然结束)-这就是exit()的目的。在实际验证yearmonthday值之前,您尝试计算inf(但实际上,不需要自己这样做;相反,尝试创建一个datetime.datetime的值无效的ValueError会引发一个ValueError值,您可以自己检测到)。到处都有分号,这是不必要的,在Python中是个坏习惯。Python中的布尔常量用大写字母拼写为TrueFalse。最后,您的最后一行只引用inf,但不使用它做任何事情;这不会导致显示值。在脚本中,需要显式地print输出想要输出的内容。你知道吗

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

#!/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")

相关问题 更多 >