<p>在你发布的代码中我可以看到一些问题。我希望指出其中一些内容会有所帮助,并提供一个稍微重写的版本:</p>
<ul>
<li>缩进已损坏,但我想这可能只是粘贴到堆栈溢出的问题</li>
<li><code>strftime</code>用于<em>格式化</em>次,而不是解析它们。你想要<a href="http://docs.python.org/library/datetime.html#datetime.datetime.strptime" rel="nofollow">^{<cd2>}</a>。在</li>
<li>在Python中,<code>True</code>有一个大写的<code>T</code>。在</li>
<li>您定义了<code>getDate</code>函数,但从未使用过它。在</li>
<li>您永远不会退出<code>while</code>循环,因为您在成功获得输入后不会<code>break</code>。在</li>
<li>在Python中,对变量和方法名使用“camel case”被认为是不好的风格。在</li>
<li>你用“年长”这个词来指代日期,但是没有年份,你就不能说一个人是否比另一个人老。在</li>
<li>当您尝试解析日期时,您可以捕捉到任何抛出的异常,但不要显示它或检查它的类型。这是个坏主意,因为如果你在那一行输入了错误的变量名(或类似的错误),你就不会看到错误。在</li>
</ul>
<p>下面是您的代码的重写版本,它修复了这些问题—我希望从上面可以清楚地看出我为什么要做这些更改:</p>
<pre><code>import datetime
def get_date(prompt):
while True:
user_input = raw_input(prompt)
try:
user_date = datetime.datetime.strptime(user_input, "%m-%d")
break
except Exception as e:
print "There was an error:", e
print "Please enter a date"
return user_date.date()
birthday = get_date("Please enter your birthday (MM-DD): ")
another_date = get_date("Please enter another date (MM-DD): ")
if birthday > another_date:
print "The birthday is after the other date"
elif birthday < another_date:
print "The birthday is before the other date"
else:
print "Both dates are the same"
</code></pre>