<jupyter_start><jupyter_text>Les exercices du partiel sont calqués sur les *Acquis d'apprentissages visés*, vous trouverez des exemples d'exercices et d'anciens partiels dans la section *Entrainement*.Chaque exercice reçoit une note : "A" "B" "C" "D" ou "E". ("Z" = exercice non fait)Les fonctions suivantes permettent de calculer votre note finale en fonction des notes obtenues aux exercices.<jupyter_code>bareme = {"A": 20, "B": 16, "C": 11, "D": 8, "E": 1, "Z":0}
valide = {"A","B","C"}
ca_passe = {"A", "B", "C", "D"}<jupyter_output><empty_output><jupyter_text>Le premier partiel contient 7 exercices : 6 exercices correspondant aux 6 AAV de la première partie de l'année et un exercice "bonus" de niveau 2 (le bonus compte pour la note mais pas pour la validation). Pour valider le partiel, il faut réaliser tous les exercices hors bonus et obtenir **C ou plus sur au moins 4 exercices** et **D ou plus sur au moins 5 exercices**.Par ailleurs : * si vous obtenez **E** sur au moins 3 exercices, votre note sera **au maximum 6** quelque soit votre réussite au reste * si vous obtenez **D** ou moins sur 3 exercices, votre note sera **au maximum 9** quelque soit votre réussite au reste * si vous obtenez **D** ou moins sur 2 exercices, votre note sera **au maximum 12** quelque soit votre réussite au reste.<jupyter_code>def note_max(notes):
    """
    Retourne la note maximale en fonction de la liste des résultats aux différents exercices
    Input :
        - une liste de taille 7 contenant les notes aux 7 exercices
    """
    assert(len(notes) == 7)
    notes = notes [:-1] # le bonus n'est pas pris en compte pour la validation
    d = {k:0 for k in bareme}
    for k in notes:
        d[k]+=1
    if d["E"] + d["Z"] >= 3:
        return 6
    if d["E"] >= 2 or d["Z"] >= 1 or d["D"] + d["E"] >= 3:
        return 9
    if d["D"] + d["E"] >= 2:
        return 12
    return 20
assert note_max(["A","B","D","A","C","A","Z"]) == 20
assert note_max(["A","B","D","A","C","D","Z"]) == 12
assert note_max(["A","A","C","D","D","E","Z"]) == 9
assert note_max(["C","D","D","C","C","D","Z"]) == 9
assert note_max(["A","B","D","D","D","D","Z"]) == 9
assert note_max(["A","B","E","A","C","E","Z"]) == 9
assert note_max(["A","Z","D","Z","D","D","Z"]) == 9
assert note_max(["A","Z","E","E","D","D","Z"]) == 6
def valide_Partiel(notes):
    """
    Retourne si le partiel est validé ou non en fonction de la 
    liste des resultats aux differents exercices.
    Input :
        - une liste de taille 7 contenant les notes aux 7 exercices
    """
    return note_max(notes) >= 10
assert valide_Partiel(["A","B","D","A","C","D","Z"])
assert not valide_Partiel(["A","A","C","D","D","E","Z"])
assert not valide_Partiel(["C","D","D","C","C","E","Z"]) 
assert not valide_Partiel(["A","B","E","A","C","E","Z"])
assert not valide_Partiel(["A","B","D","D","D","D","Z"])
assert valide_Partiel(["A","B","E","C","C","C","Z"])
assert not valide_Partiel(["A","B","C","D","D","D","Z"])
def calcule_note(notes, coeffs):
    """
    Retourne la note sur 20 en fonction de la 
    liste des resultats aux differents exercices.
    Input :
        - une liste de taille 7 contenant les notes aux 7 exercices
        - les coefficients associés
    """
    mx = note_max(notes)
    mn = 10
    if mx < 10:
        notes = notes[:-1] # on ne compte pas le bonus
        coeffs = coeffs[:-1]
        mn = 0

    notes = [bareme[notes[i]]*coeffs[i] for i in range(len(notes))]
    #print(sum(notes)/sum(coeffs))
    return max(mn,min(mx, sum(notes)/sum(coeffs)))
def calcule_note_partiel1(notes):
    return calcule_note(notes, [2,2,2,2,2,2,1])
def calcule_note_partiel2(notes):
    return calcule_note(notes, [2,2,1,2,2,2,1])
calcule_note_partiel1(["C","B","A","E","A","A","B"])
calcule_note_partiel1(["E","C","B","E","C","A","Z"])
calcule_note_partiel1(["A","A","B","A","A","A","B"])<jupyter_output><empty_output>
{'fraction_non_alphanumeric': 0.2011302337528898, 'fraction_numerical': 0.02132031852042127, 'mean_word_length': 4.430962343096234, 'pattern_counts': {'":': 6, '<': 10, '<?xml version=': 0, '>': 15, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'chain_length': '2', 'dir': 'jupyter-structured-clean-dedup', 'id': '107423', 'license': 'CC-BY-4.0', 'n_tokens_mistral': 1474, 'n_tokens_neox': 1418, 'n_words': 432, 'path': 'Algorithmic_Polytech/CalculNote.ipynb', 'repo_name': 'VivianePons/courses', 'size': '3893'}