1
votes

Comment écrire deux dates variables dans une fonction?

Pour un exercice, je suis censé écrire une fonction avec deux dates comme entrées variables et les comparer. Cependant, quelle que soit la manière dont j'essaie de définir la fonction, cela me donne une syntaxe invalide.

J'essaie de faire quelque chose comme ceci:

birthday(date(1969, 10, 5), date(2015, 10, 5))

Il est prévu que la fonction s'appelle ainsi:

from datetime import date

def birthday(date(year1, month1, day1), date(year2, month2, day2)):
    party = False
    if month1 == month2 and day1 == day2:
        party = True

    return party


4 commentaires

Pouvez-vous modifier votre question pour donner un exemple de la façon dont vous souhaitez appeler la fonction?


dodona.ugent.be/en/courses/172/series / 1697 / exercices / 1652696‌ 920


En tant que nouvel utilisateur de ce site, vous n'avez probablement pas vu ceci: Que dois-je faire lorsque quelqu'un répond à ma question?


En tant que nouvel utilisateur, je n'ai pas de privilèges de vote ...


3 Réponses :


1
votes

Vous ne déclarez pas les composants des dates dans les arguments de la fonction car ce sont des dates prêtes à l'emploi qui lui sont passées, comme indiqué dans les exemples donnés, tels que

def birthday(date1, date2):
    return date1.month == date2.month and date1.day == date2.day

Il vous suffit donc de:

bd1 = date(2000, 10, 20)
bd2 = date(2008, 10, 20)
bd3 = date(2000, 10, 1)

print(birthday(bd1, bd2))
print(birthday(bd1, bd3))

Ensuite, vous pouvez faire

import datetime
from datetime import date

def birthday(date1, date2):
    party = False

    if date1.month == date2.month and date1.day == date2.day:
        party = True

    return party

Et obtenir la sortie

Vrai
Faux

(Vous n'aurez peut-être pas besoin de import datetime : je l'ai fait.)

Vous pouvez même raccourcir la fonction à

birthday(date(1969, 10, 5), date(2015, 10, 5))


0 commentaires

1
votes

Eh bien, la question n'est pas claire mais vous pouvez le faire de cette manière:

True

Output:

from datetime import date

def birthday(date1,date2):
    party = False
    if date1.month == date2.month and date1.day == date2.day:
        party = True

    return party

date1= date(2019, 4, 13)
date2= date(2019, 4, 13)

print(birthday(date1,date2))


1 commentaires

Un peu d'explication sur la raison pour laquelle la fonction de l'OP ne fonctionnait pas pourrait vous aider à obtenir un vote positif;)



1
votes

si vous voulez comparer le mois et le jour de 2 dates pour vérifier l'anniversaire, essayez le code de coup:

from datetime import date

def bd(d1: date, d2: date) -> bool:
    return d1.month == d2.month and d1.day == d2.day

print(bd(date(1989, 8, 11), date(2019, 8, 11)))


0 commentaires