我试图定义一个名为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();
不能将日期转换为浮点、字符串或整数。
date
实现它自己的比较。你需要转换你的论点来遵守。这应该起作用:正如错误所说:您试图比较
float(ymd)
和today
,其中ymd
被分配了元组(year, month, day)
。你到底期待什么结果?当你把(year, month, day)
传给float
时,你认为会发生什么?它并不代表我所能想到的float
。你知道吗但即使这样,你的比较也毫无意义,因为
today
是一个datetime.datetime
实例。当你将float
与之比较时,你期望发生什么?那是怎么回事?你知道吗把苹果比作苹果。如果您想知道由给定的
year
、month
和day
值表示的日期和时间是否在给定的datetime.datetime
值之前,那么可以使用year
、month
和day
来创建一种实际表示日期和时间的东西,即。,一个datetime.datetime
实例—与您将其与进行比较的对象相同。苹果对苹果。你知道吗内置的
help
以及联机文档解释说,这是一个简单的问题,即按year
/month
/day
顺序将这些值传递给datetime.datetime
构造函数:顺便说一句,您的程序还存在多个其他问题。你不应该自己显式地
raise SystemExit
中止一个脚本(通常最好让它自然结束)-这就是exit()
的目的。在实际验证year
、month
和day
值之前,您尝试计算inf
(但实际上,不需要自己这样做;相反,尝试创建一个datetime.datetime
的值无效的ValueError
会引发一个ValueError
值,您可以自己检测到)。到处都有分号,这是不必要的,在Python中是个坏习惯。Python中的布尔常量用大写字母拼写为True
和False
。最后,您的最后一行只引用inf
,但不使用它做任何事情;这不会导致显示值。在脚本中,需要显式地print
输出想要输出的内容。你知道吗要处理日期(没有时间),可以使用
datetime.date
类:相关问题 更多 >
编程相关推荐