Определение функции, которая принимает два аргумента, включая имя (строку) и дату рождения (дату) - PullRequest
0 голосов
/ 13 мая 2019

Моя домашняя работа просит меня: Определить функцию make_birthday_intro(), которая принимает два аргумента: имя (строка) и дату рождения (дата).

Вы должны использовать вашу функцию make_introduction() из части 1! Вам может потребоваться вычислить переменную для передачи в этот вызов функции.

Подсказка: используйте функцию relativedelta() для расчета текущего возраста человека, а также того, когда ему исполнится 1 год. Вы можете получить количество дней или лет из значения relativedelta (например, time_difference), обратившись к свойствам .days или .years (например, time_difference.years).

И вторая часть

Создайте переменную my_bday_intro, вызвав вашу функцию make_birthday_intro() и указав свое имя (уже переменная!) И дату вашего рождения. Распечатайте переменную после ее создания.

1017 *

Мой преподаватель и я действительно изо всех сил пытались решить это вместе, но я считаю, что отчасти проблема заключалась в том, что мы не проработали первую часть задания вместе, поэтому он не до конца понял эту часть задания, которое я понял позже может быть частью того, почему мы так застряли, мы пропустили переменную. Я не могу понять, где вообще начинать со второй части задания, потому что мы застряли в части make_birthday_intro.

мой код make_introduction из части 1, включая весь код, ведущий к нему

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)

Я не уверен, с чего начать со второй части задания

Эта функция должна возвращать строку в формате «Здравствуйте, меня зовут {ИМЯ}, и мне {ВОЗРАСТ} лет. Через {N} дней я буду {NEW_AGE}» (заменяя {ИМЯ}, {ВОЗРАСТ}, {N} и {NEW_AGE} с соответствующими значениями).

Где это должно быть готово "Здравствуйте, меня зовут Кейтлин, мне 24 года. Через 274 дня мне будет 25"

однако мой текущий вывод:

8857 days, 0:00:00

И я, честно говоря, не уверен, что мне следует искать во второй части

Ответы [ 2 ]

0 голосов
/ 13 мая 2019

Я не слишком разбирался в формулировке проблемы и, поскольку Разди сказал, что вы близки, я переписал некоторые вещи.

С этим решением вам нужна 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.
0 голосов
/ 13 мая 2019

Вы очень близки.Чтобы получить возраст в годах, вы можете взять из дат только параметры года и вычесть их, чтобы получить разницу в годах.Чтобы получить дни, оставшиеся до дня рождения, вы можете сначала получить дату рождения в текущем году, а затем вычесть ее из текущей даты, чтобы получить разницу в днях.Осложнение возникает, когда день рождения уже прошел, но, возможно, его можно изменить с простым приращением в годах.

Вы бы приблизительно сделали это так (еще не проверяли себя):

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)

...