我试图计算一天中的哪个会计周,并且我的代码在Spyder和PythonTutor中正确运行,但是当我尝试通过SPSS的Python功能运行它时,我得到了一个不同的错误。
Spyder中的代码:
from datetime import date, timedelta
VisitDate=date(2017,9,10)
def WhichWeek(DateOfVisit):
StartDate=date(2017,9,1)
EndDate=StartDate+timedelta(days=+6)
Beginning=StartDate
End=EndDate
NumberWeeks=10
for i in range(NumberWeeks):
if(DateOfVisit>=Beginning and DateOfVisit<=End:
print('It worked',i)
return i
else:
print ('It failed', i, Beginning, End)
Beginning=Beginning+timedelta(days=+7)
End=End+timedelta(days=+7)
WhichWeek(VisitDate)
运行并返回预期值。 (打印语句只是为了帮助排除故障)。
但是,当我使用Python扩展程序在SPSS中运行它时:
begin program.
def WhichWeek(DateOfVisit):
from datetime import date, timedelta
StartDate = date(2016,9,1)
EndDate=StartDate+timedelta(days=+6)
Beginning=StartDate
End=EndDate
NumberWeeks=10
for i in range(NumberWeeks):
if DateOfVisit>=Beginning and DateOfVisit<=End:
print('It worked',i)
return i
else:
print ('It failed', i, Beginning, End)
Beginning=Beginning+timedelta(days=+7)
End=End+timedelta(days=+7)
end Program.
SPSSINC TRANS RESULT=Week_Test /FORMULA WhichWeek(VisitDate).
EXECUTE.
FREQUENCIES VARIABLES=Week_Test
/FORMAT=DFREQ
/ORDER=ANALYSIS.
它现在给了我错误&#34;论坛引用未定义的变量或无法评估:无法将datetime.date与float进行比较
VisitDate是我的SPSS数据集中已定义的变量,由于我在Spyder中没有收到此错误,因此无法继续进行故障排除。
编辑:我将Spyder版本从VisitDate1更改为VisitDate以限制混乱。我还应该说,在Spyder中,我会在静态日期运行它,以测试它是否正确识别周(2017-09-10)而不是实际的数据集。在SPSS中,我是针对数据集运行的。