Python日期游戏,未来/过去判断

-4 投票
2 回答
1068 浏览
提问于 2025-04-28 11:29

问题:

我的程序总是告诉我,无论如何,我输入的日期都是无效的。

任务:

用户需要依次输入年份、月份(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() 的函数,它接受年份、月份和日期这三个单独的参数。这个函数应该返回一个布尔值(TrueFalse),用来表示这个日期(年、月、日)是否在未来。如果日期在未来,返回 True;如果在过去,返回 False。这个函数不应该在屏幕上绘制任何图像或文本,也不应该询问用户输入。它只需要判断给定的日期是否在未来。

找一张图片来代表未来,找一张图片来代表过去。比如可以用《杰森一家》的图像代表未来,用一辆老马车代表过去。如果日期在未来,就在画布中间显示你的未来图片。如果日期在过去,就在画布中间显示你的过去图片。在画布的顶部,显示“在未来”或“在过去”,根据图片的内容来决定。

要获取当前日期,你可以在代码中添加这个导入和函数:

import datetime
def getTodaysDate():
    return datetime.datetime.today()

如果你在代码的某个地方调用这个函数:

today = getTodaysDate()

那么你可以使用年份、月份和日期这几个变量来获取当前的年份、月份和日期。例如:

print(today.month)

将输出当前的月份。

这是我认为已经完成的程序。我还缺少什么呢?

暂无标签

2 个回答

0

你应该学习如何使用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
1

这个方法适用于像“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

撰写回答