Python日期游戏,未来/过去判断
问题:
我的程序总是告诉我,无论如何,我输入的日期都是无效的。
任务:
用户需要依次输入年份、月份(1到12之间的数字)和日期。程序会判断这个日期是未来的还是过去的。(如果输入的日期是今天的日期,就认为这个日期是过去的。)未来的日期是指还没有发生的日期。如果今天是7月31日,那么同年的8月1日并不算是过去的日期,仅仅因为日期(1)在今天的日期(31)之前。对于输入,如果用户输入了无效的月份,程序会显示一个合适的错误信息(比如“无效的月份”),然后结束程序。如果用户输入了无效的日期,程序会显示一个合适的错误信息(比如“无效的日期”),然后结束程序。假设二月份有28天。换句话说,如果月份是二月,而输入的日期是29,程序会显示错误信息并结束。
记住:
Thirty days has September,
April, June, and November
All the rest have 31
Except February, which has 28….
定义一个叫做 inTheFuture()
的函数,它接受年份、月份和日期这三个单独的参数。这个函数应该返回一个布尔值(True
或 False
),用来表示这个日期(年、月、日)是否在未来。如果日期在未来,返回 True
;如果在过去,返回 False
。这个函数不应该在屏幕上绘制任何图像或文本,也不应该询问用户输入。它只需要判断给定的日期是否在未来。
找一张图片来代表未来,找一张图片来代表过去。比如可以用《杰森一家》的图像代表未来,用一辆老马车代表过去。如果日期在未来,就在画布中间显示你的未来图片。如果日期在过去,就在画布中间显示你的过去图片。在画布的顶部,显示“在未来”或“在过去”,根据图片的内容来决定。
要获取当前日期,你可以在代码中添加这个导入和函数:
import datetime
def getTodaysDate():
return datetime.datetime.today()
如果你在代码的某个地方调用这个函数:
today = getTodaysDate()
那么你可以使用年份、月份和日期这几个变量来获取当前的年份、月份和日期。例如:
print(today.month)
将输出当前的月份。
这是我认为已经完成的程序。我还缺少什么呢?
2 个回答
你应该学习如何使用if、else和elif这几个语句。看看下面的代码:
import datetime
def getTodaysDate():
return datetime.datetime.today();
today = getTodaysDate();
print(today)
#def inTheFuture():
year= input ("Enter Year: ");
month= int(input ("Enter Month: "));
day= int(input ("Enter Day: "));
print"Correct, Your Day is:",day,"/",month,"/",year
if (month > 12):
print("How many months in a year? Not as many as you think I suppose..")
raise SystemExit
elif month in [1,3,5,7,8,10,12]:
if day > 31:
print("What is a month where you are from?")
raise SystemExit
else:
print"Correct, Your Day is:",day,"/",month,"/",year
elif (month == 2):
if (day > 28):
print("February only has so many days!")
raise SystemExit
else:
print"Correct, Your Day is:",day,"/",month,"/",year
elif (month in [4,6,9,11]):
if (day > 30):
print("That day is not possible!")
else:
print"Correct, Your Day is:",day,"/",month,"/",year
这个方法适用于像“24.12.2016”这样的日期输入。如果你需要其他格式,可以在strptime()这一行进行修改。
import datetime
from time import strptime
def date_in_the_future(date):
datetime_string = strptime(date, "%d.%m.%Y")
d = datetime.datetime(datetime_string[0],datetime_string[1],datetime_string[2])
now = datetime.datetime.now()
delta = d - now
diff = delta.days + 1
if diff > 0:
return True
else:
return False