Aller au contenu

Épreuve Pratique BNS 2026⚓︎

Vous pouvez retrouver ici les 3 sujets 0 publiés le 08/10/2025.

Sujet 1

Correction Q1
def est_bissextile(n):
    if n % 400 == 0:
        return True
    elif n % 4 == 0 and n % 100 != 0:
        return True
    else:
        return False
Correction Q2
def determiner_phase(n):
    assert n <= 28 and n >= 1
    if n <= 5:
        return 1
    elif n <= 13:
        return 2
    elif n == 14:
        return 3
    else:
        return 4
Correction Q3
def test_ajouter_jours():
    assert ajouter_jours((7, 9, 2025), 3) == (10, 9, 2025)

    assert ajouter_jours((29, 8, 2025), 3) == (1, 9, 2025)
    #pour tester le changement de mois sur un mois à 31 jours

    assert ajouter_jours((29, 9, 2025), 3) == (2, 10, 2025)
    #pour tester le changement de mois sur un mois à 30 jours

    assert ajouter_jours((31, 12, 2025), 1) == (1, 1, 2026)
    #pour tester un changement d'année

    assert ajouter_jours((28, 2, 2024), 3) == (2, 3, 2024)
    #pour tester le changement de mois sur une année bissextile

    assert ajouter_jours((28, 2, 2025), 3) == (3, 3, 2025)
    #pour tester le changement de mois sur une année non-bissextile
Correction Q4

L'erreur qui apparait

 datetime(
ValueError: month must be in 1..12
semble nous indiquer que la date n'est pas au bon format.

En effet la documentation de iCalendar nous dit que la date doit être écrite au format AAAAMMJJ.

Or, la ligne de code

date = str(annee)+str(mois) +str(jour)
va produire 202535 pour le 05 mars 2025, au lieu de 20250305.

Pour résoudre ce problème, il faut remplacer cette ligne par :

date = str(annee)+'{:02d}'.format(mois) + '{:02d}'.format(jour)

Remarque : le formatage des chaînes de caractères n'est pas au programme...