我的问题是,如果任何人都可以请帮我调试这段代码:如何使用Python找到两个日期之间的差异? (打,如果一个人是18岁以上)
import datetime
print ("What is your date of birth? ")
dateofbirth = input("Please type your date of birth in a YYYY-MM-DD format ")
year, month, day = map(int, dateofbirth.split('-'))
dateofbirth1 = datetime.date(year, month, day)
today = datetime.date.today()
open('dateutil.tar').read()
from dateutil.relativedelta import relativedelta
difference_in_years = relativedelta(today, dateofbirth1).years
if difference_in_years < 18
print ("Sorry, you are not eligible to vote.")
else
print ("You are over 18 and thus eligible to vote.")
我的目标是尽量写一段代码,可以制定出如果有人超过18岁,因此有资格投票。这是通过要求人们输入他们的出生日期,然后计算他们的出生日期和今天的日期之间的差异,然后使用IF语句来告诉他们他们是否能够投票来实现的(即,如果年的差异大于或小于18)。
目前我在调试这段代码时遇到了一些问题。首先,在第10行有一个语法错误,我不确定如何纠正。其次,如果我再删除最后一个4线和运行代码我得到以下错误:
Traceback (most recent call last):
File "C:\removed\canyouvote.py", line 8, in <module>
open('dateutil.tar').read()
File "C:\Program Files (x86)\Python\lib\encodings\cp1252.py", line 23, in decode
return codecs.charmap_decode(input,self.errors,decoding_table)[0]
UnicodeDecodeError: 'charmap' codec can't decode byte 0x81 in position 5: character maps to <undefined>
然而在所有的可能性也有,我目前无法拿起对方失误。遗憾的是,由于我对编程非常陌生,我的知识和经验并不是很好,所以任何帮助都将不胜感激!在试图研究解决方案时,我试图使用我不熟悉的编码,所以请纠正我错误的地方。
非常感谢您提前!
嘛'SyntaxError'是因为[语法是错误的(https://docs.python.org/3/tutorial/controlflow.html#if-statements)和什么是你想怎么办与文件?你没有把内容分配给任何东西,那一行的重点是什么? – jonrsharpe 2014-10-29 00:40:44
在Python中,像'if'和'else'这样的复合语句在套件之前需要冒号,套件必须缩进。请参阅本教程的[编程的第一步](https://docs.python.org/3/tutorial/introduction.html#first-steps-towards-programming)部分。 – abarnert 2014-10-29 00:42:31
另外,你为什么在这里使用'dateutil'?你有没有尝试打印出你从'today - dateofbirth1'得到的东西是否有用? (如果你还没有习惯于在交互式解释器中输入东西,在你的代码中使用'print'调用,或者使用调试器,你至少需要学习一个,最后是三个,即使是最微不足道的方案也能成功写出来。) – abarnert 2014-10-29 00:43:56