【发布时间】:2014-10-29 00:33:05
【问题描述】:
我的问题是,是否有人可以帮我调试这段代码:
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是因为the syntax is erroneous 而你到底想对文件做什么?您没有将内容分配给任何东西,那条线的意义何在? -
在 Python 中,像
if和else这样的复合语句在套件之前需要一个冒号,并且套件必须缩进。请参阅教程的First Steps Towards Programming 部分。 -
另外,你为什么在这里使用
dateutil?你有没有试过打印出你从today - dateofbirth1得到的东西,看看它是否有用? (如果您不习惯在交互式解释器中输入内容、在代码中调用print或使用调试器,那么您将需要学习至少一个,最终需要学习全部三个,然后再学习'即使是最琐碎的程序也能成功编写。)
标签: python debugging datetime if-statement syntax-error