0

我的作业要求我: 定义一个make_birthday_intro()接受两个参数的函数:姓名(字符串)和出生日期(日期)。

您应该使用make_introduction()第 1 部分中的函数!您可能需要计算一个变量以传递给该函数调用。

提示:使用该relativedelta()函数计算人的当前年龄,以及他们何时年满 1 岁。relativedelta您可以通过访问 .days 或 .years 属性(例如 time_difference.years)从一个值(例如 time_difference)中获取天数或年数。

第二部分

my_bday_intro通过调用你的make_birthday_intro()函数并传入你的名字(已经是一个变量!)和你的生日来创建一个变量。创建变量后打印它。

​</p>

我的导师和我真的很难一起解决这个问题,但我相信部分问题是我们没有一起完成作业的第一部分,所以他没有完全理解这部分作业,我后来意识到这可能是我们陷入困境的部分原因是我们缺少一个变量。我什至不知道从哪里开始作业的第二部分,因为我们被 make_birthday_intro 部分卡住了。

我的第 1 部分中的 make_introduction 代码,包括之前的所有代码

my_name = "Kaitlyn Griffith"
print(my_name)

my_age = 24
print(my_age)

def make_introduction(my_name, my_age):
    return "Hello, my name is, " + my_name + " and I'm " + str(my_age) + " years old."

我对家庭作业问题的尝试

import datetime

def make_birth_intro(name, date_of_birth):
    age = datetime.date.today() - date_of_birth
    print(age)

dateThing = datetime.date(1995, 2, 10)
make_birth_intro(make_introduction, dateThing)

我不知道从哪里开始作业的第二部分

此函数应返回格式为“您好,我的名字是 {NAME},我是 {AGE} 岁。在 {N} 天后我将成为 {NEW_AGE}”的字符串(替换 {NAME},{AGE} 、{N} 和 {NEW_AGE} 具有适当的值)。

它应该在哪里准备好“你好,我的名字是凯特琳,我今年 24 岁。274 天后我将 25 岁”

但是,我当前的输出是:

8857 days, 0:00:00

老实说,我不确定我应该在第二部分中寻找什么

4

2 回答 2

0

你很亲密。要获得以年为单位的年龄,您可以仅从日期中获取年份参数并减去它们以获得年差。要获取生日的剩余天数,您可以首先获取当年的出生日期,然后从当前日期中减去该日期以获得天数差。当生日已经过去但可能会通过简单的年数增量来改变时,就会出现并发症。

你会大致这样做(没有测试过自己):

def make_birth_intro(name, date_of_birth):
    today = datetime.date.today()
    age = today.year - date_of_birth.year
    print(age)
    this_birthday = date_of_birth.replace(year = today.year)
    if(this_birthday < today):
        this_birthday = this_birthday.replace(year=this_birthday.year + 1)
    days_left = this_birthday - today
    print(days_left.days)

于 2019-05-12T23:30:49.670 回答
0

我没有仔细阅读整个问题陈述,正如 razdi 说你很接近,我重写了一些东西。

使用此解决方案,您只需要 DOB 而不是您的年龄。


import datetime

def make_introduction(my_name, birth_info):
    """
    Handles the printing
    """
    return f"Hello, my name is {my_name} and I'm {birth_info[0]} years old, in {birth_info[1]} I'll be {birth_info[0] + 1}."

def make_birth_intro(date_of_birth):
    # // is a floor division to get age in years given days
    today = datetime.date.today()
    age = (today - date_of_birth).days // 365

    next_birthday = datetime.date(today.year, date_of_birth.month, date_of_birth.day)
    if next_birthday < today:
        """
        If we already had a birthday this year then add a year.
        """
        next_birthday = next_birthday.replace(year=today.year + 1) 
    days_till_level_up = (next_birthday - today).days
    return age, days_till_level_up

my_name = "Kaitlyn Griffith"
DOB = datetime.date(1995, 2, 10)

output = make_introduction(my_name, make_birth_intro(DOB))
print(output)

输出:

Hello, my name is Kaitlyn Griffith and I'm 24 years old, in 274 I'll be 25.
于 2019-05-12T23:36:54.467 回答