玩日期和函数时未定义的变量

2024-09-28 05:26:21 发布

您现在位置:Python中文网/ 问答频道 /正文

你可以说我是一个极端的新手,我在学校有一门课程,我需要能够,某种程度上,用python解决问题。到目前为止,所有这些都是有效的,但最后一个(只是一小部分)不会让步。你知道吗

前4个函数运行良好(每个函数有2个参数,一个生日(bday)和一个随机日期(today))。它们确定随机日期是否为生日/未出生日/百日/同一天,如果是,则分别返回True或False。每个函数的第一行如下所示,脚本的其余部分无关紧要。你知道吗

def birthday(bday, today):

def unbirthday(bday, today):

def hundredday(bday, today):

def sameweekday(bday, today):

再说一遍,这些很好用。你知道吗

最后一个函数必须返回所有日期,在某个开始日期和结束日期之间,上面的生日变体中的哪一个匹配。第一个参数也是bday,下一个参数是start(默认为bday,这是混蛋),第三个参数是end(默认为今天),第四个参数是birthday(默认为实际生日)。你知道吗

def birthdays(bday, start=bday, end=date.today(), birthday=birthday):

它的start=bday不起作用,表示这个bday没有定义。剧本的其余部分无关紧要,因为我还没完成。你知道吗

(我在脚本的开头导入datetime,所有第一个函数都可以使用它的工具正常工作)


Tags: 函数脚本falsetrue参数todaydefstart
2条回答

一种解决方案是默认的start=None,然后在函数体中:

if start is None:
    start = bday

这应该会给你想要的行为。你知道吗

在创建变量之前,不能读取变量:

def birthdays(bday, start=bday, end=date.today(), birthday=birthday):
                ^ -1      ^ -2

上面的函数参数只是变量名定义。”此时插入函数调用的数据块将被命名为bday”。它们不作为可读变量存在于函数签名中,只存在于函数体本身中。所以你上面的#2试图从一个不存在的变量中读取数据。你知道吗

相关问题 更多 >

    热门问题