Python从程序中的用户输入中获取该月的日期

时间:2014-10-18 21:30:01

标签: python date datetime if-statement

这就是我要做的事情:

用户将按该顺序输入年份,月份编号(1-12)和日期编号。该程序将确定日期是在将来还是在过去。 (如果输入的日期是今天的日期,则假定日期是过去的日期)。未来日期是尚未发生的日期。如果今天是7月31日,那年的8月1日不是过去,只是因为第(1)天是在今天(31)之前。对于输入,如果用户输入无效月份,则显示相应的错误消息(如“无效月份”)并结束程序。如果用户输入无效日期,则显示相应的错误消息(如“无效日期”)并结束程序。假设2月28日。换句话说,如果月份是2月,输入的日期是29,则显示错误消息并结束程序。记得: 三十天有九月,四月,六月和十一月所有其余的都有31个,除了二月,有28 ....

定义一个名为的函数 在将来() 接受给定年份号,月份号和日期号作为3个单独的参数。该函数应返回一个布尔值(True或False),以指示日期(年,月和日)参数是否在将来。如果日期是将来,则返回真实的回报;如果日期是过去的话,则为false。不应在屏幕上绘制任何图像或文本。它也不应该要求用户输入。它只是确定给定日期是否在未来。找到代表未来的图像,以及代表过去的图像。例子可能包括未来的“杰森”,以及过去的旧马车。如果日期是将来,请在画布中间显示您的未来图像。如果日期是过去的日期,则在画布中间显示过去的图像。在画布的顶部,显示“未来”或“过去”,以图像为准。要查找当前日期,您可以将此导入和功能添加到您的代码中: 导入日期时间 def getTodaysDate(): return datetime.datetime.today(); 如果您在代码中的某处调用此函数: today = getTodaysDate(); 然后,您可以使用年,月和日成员变量来获取当前年,月和日。例如: 打印(today.month); 将输出当前月份

到目前为止,这是我的编码,我在解决如何将我的无效日错误消息显示在不同月份时遇到问题。例如,我假设只有28天,其余为4月,6月,9月,11月和31日。我已经尝试了几个小时来测试不同的东西,但是无法让它工作:

import sys
import tkinter
import datetime
import calendar

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: "));


if (month > 12):
    print("invalid Month")
    raise SystemExit
if (month == 1,3,5,7,8,10,12):
    (day > 31)
    print("Invalid Day")
    raise SystemExit
else:
    (month == 2)
    (day > 28)
    print("Invalid Day")
    raise SystemExit
else:
    (month == 4,6,9,11)
    (day > 30)
    print("Invalid Day")
    raise SystemExit

1 个答案:

答案 0 :(得分:0)

由于看起来你的作业允许使用datetime模块,只需要它验证:

>>> from datetime import date
>>> date(date.today().year,2,29)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: day is out of range for month
>>> date(date.today().year,13,31)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: month must be in 1..12

否则,这里提示您的语法:

if (month == 1,3,5,7,8,10,12):
    (day > 31)

不起作用,应写成:

if month in [1,3,5,7,8,10,12] and day > 31:

这应该让你开始。