Aller au contenu

Ep 19

le document

l'algorithme

Issue de : 23-NSI-38⚓

coquille dans le sujet

Manque le code suivant :

🐍 Script Python
    if code_concatene % code_additionne == 0:
        mot_est_parfait = True
    else:
        mot_est_parfait = False

EXERCICE 1⚓

On rappelle que :

  • le nombre \(a^n\) est le nombre \(a \times a \times a \times \dots \times a\), oĂč le facteur \(a\) apparaĂźt \(n\) fois,
  • en langage Python, l’instruction t[-1] permet d’accĂ©der au dernier Ă©lĂ©ment du tableau t.

Dans cet exercice, l’opĂ©rateur ** et la fonction pow ne sont pas autorisĂ©s.

Programmer en langage Python une fonction liste_puissances qui prend en argument un nombre entier a, un entier strictement positif n et qui renvoie la liste de ses puissances

\(\rm{[a^1, a^2, ..., a^n]}\).

Programmer Ă©galement une fonction liste_puisssances_borne qui prend en argument un nombre entier a supĂ©rieur ou Ă©gal Ă  2 et un entier borne, et qui renvoie la liste de ses puissances, Ă  l’exclusion de \(\rm{a^0}\), strictement infĂ©rieures Ă  borne.

Exemples :

🐍 Script Python
>>> liste_puissances(3, 5)
[3, 9, 27, 81, 243]
>>> liste_puissances(-2, 4)
[-2, 4, -8, 16]
>>> liste_puissances_borne(2, 16)
[2, 4, 8]
>>> liste_puissances_borne(2, 17)
[2, 4, 8, 16]
>>> liste_puissances_borne(5, 5)
[]
RĂ©ponse

Complétez le code ci-dessous

###
# Mettez votre code icibksl-nlbksl-nl



Solution

###
def listepy-undpuissances(a,n):bksl-nl puissances = [a]bksl-nl for i in range(n-1):bksl-nl puissances.append(puissances[-1] py-str a)bksl-nl return puissancesbksl-nlbksl-nldef listepy-undpuissancespy-undborne(a, borne):bksl-nl lst = []bksl-nl val = abksl-nl while val < borne:bksl-nl lst.append(val)bksl-nl val = val py-str abksl-nl return lstbksl-nlbksl-nltry:bksl-nl assert listepy-undpuissances(3, 5) == [3, 9, 27, 81, 243]bksl-nl assert listepy-undpuissances(-2, 4) == [-2, 4, -8, 16]bksl-nl assert listepy-undpuissancespy-undborne(2, 16) == [2, 4, 8]bksl-nl assert listepy-undpuissancespy-undborne(2, 17) == [2, 4, 8, 16]bksl-nl assert listepy-undpuissancespy-undborne(5, 5) == []bksl-nl print('Tout semble correct 👍')bksl-nlbksl-nlexcept AssertionError as asser:bksl-nl print('Le rĂ©sultat de votre fonction n\'est pas conforme đŸ€”')bksl-nl



EXERCICE 2⚓

On affecte Ă  chaque lettre de l'alphabet un code selon le tableau ci-dessous :

A B C D E F G H I J K L M
1 2 3 4 5 6 7 8 9 10 11 12 13
N O P Q R S T U V W X Y Z
14 15 16 17 18 19 20 21 22 23 24 25 26

Pour un mot donnĂ©, on dĂ©termine d’une part son code alphabĂ©tique concatĂ©nĂ©, obtenu par la juxtaposition des codes de chacun de ses caractĂšres, et d’autre part, son code additionnĂ©, qui est la somme des codes de chacun de ses caractĂšres.

Par ailleurs, on dit que ce mot est « parfait » si le code additionné divise le code concaténé.

Exemples :

  • Pour le mot "PAUL", le code concatĂ©nĂ© est la chaĂźne '1612112', soit l’entier 1 612 112. Son code additionnĂ© est l’entier 50 car 16 + 1 + 21 + 12 = 50. 50 ne divise pas l’entier 1 612 112 ; par consĂ©quent, le mot "PAUL" n’est pas parfait.

  • Pour le mot "ALAIN", le code concatĂ©nĂ© est la chaĂźne '1121914', soit l’entier 1 121 914. Le code additionnĂ© est l’entier 37 car 1 + 12 + 1 + 9 + 14 = 37. 37 divise l’entier 1 121 914 ; par consĂ©quent, le mot "ALAIN" est parfait.

ComplĂ©ter la fonction code_parfait Ă  la page suivante et qui prend en paramĂštre un mot en majuscule et renvoie un triplet constituĂ© du code additionnĂ©, du code concatĂ©nĂ© et d’un boolĂ©en indiquant si le mot est parfait ou non.

On rappelle que pour tester si un entier a divise un entier b, on utilise l’opĂ©rateur modulo a % b qui renvoie le reste de la division euclidienne de b par a. Si a % b vaut 0, alors a divise b.

🐍 Script Python
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
dico = {"A": 1, "B": 2, "C": 3, "D": 4, "E": 5, "F": 6,
        "G": 7, "H": 8, "I": 9, "J": 10, "K": 11, "L": 12,
        "M": 13, "N": 14, "O": 15, "P": 16, "Q": 17,
        "R": 18, "S": 19, "T": 20, "U": 21, "V": 22,
        "W": 23, "X": 24, "Y": 25, "Z": 26}

def codes_parfait(mot):
    """Renvoie un triplet 
    (code_additionne, code_concatene, mot_est_parfait) oĂč :
    - code_additionne est la somme des codes des lettres du mot ;
    - code_concatene est le code des lettres du mot concaténées ;
    - mot_est_parfait est un booléen indiquant si le mot est parfait."""
    code_concatene = ""
    code_additionne = ... 
    for c in mot:
        code_concatene = code_concatene + ... 
        code_additionne = code_additionne + ... 
    code_concatene = int(code_concatene)
    mot_est_parfait = ... 
    return code_additionne, code_concatene, mot_est_parfait
🐍 Script Python
>>> est_parfait("PAUL")
(50, 1612112, False)
>>> est_parfait("ALAIN")
(37, 1121914, True)
RĂ©ponse

Complétez le code ci-dessous

###
dico = {"A": 1, "B": 2, "C": 3, "D": 4, "E": 5, "F": 6,bksl-nl "G": 7, "H": 8, "I": 9, "J": 10, "K": 11, "L": 12,bksl-nl "M": 13, "N": 14, "O": 15, "P": 16, "Q": 17,bksl-nl "R": 18, "S": 19, "T": 20, "U": 21, "V": 22,bksl-nl "W": 23, "X": 24, "Y": 25, "Z": 26}bksl-nlbksl-nldef estpy-undparfait(mot):bksl-nl # mot est une chaĂźne de caractĂšres (en lettres majuscules)bksl-nl codepy-undconcatene = ""bksl-nl codepy-undadditionne = ...bksl-nl for c in mot:bksl-nl codepy-undconcatene = codepy-undconcatene + ...bksl-nl codepy-undadditionne = ...bksl-nl codepy-undconcatene = int(codepy-undconcatene)bksl-nl if ... :bksl-nl motpy-undestpy-undparfait = Truebksl-nl else:bksl-nl motpy-undestpy-undparfait = Falsebksl-nl return codepy-undadditionne, codepy-undconcatene, motpy-undestpy-undparfaitbksl-nlbksl-nl



Solution

###
dico = {"A": 1, "B": 2, "C": 3, "D": 4, "E": 5, "F": 6,bksl-nl "G": 7, "H": 8, "I": 9, "J": 10, "K": 11, "L": 12,bksl-nl "M": 13, "N": 14, "O": 15, "P": 16, "Q": 17,bksl-nl "R": 18, "S": 19, "T": 20, "U": 21, "V": 22,bksl-nl "W": 23, "X": 24, "Y": 25, "Z": 26}bksl-nlbksl-nldef codespy-undparfait(mot):bksl-nl """Renvoie un triplet bksl-nl (codepy-undadditionne, codepy-undconcatene, motpy-undestpy-undparfait) oĂč :bksl-nl - codepy-undadditionne est la somme des codes des lettres du mot ;bksl-nl - codepy-undconcatene est le code des lettres du mot concatĂ©nĂ©es ;bksl-nl - motpy-undestpy-undparfait est un boolĂ©en indiquant si le mot est parfait."""bksl-nl codepy-undconcatene = ""bksl-nl codepy-undadditionne = 0bksl-nl for c in mot:bksl-nl codepy-undconcatene = codepy-undconcatene + str(dico[c]) bksl-nl codepy-undadditionne = codepy-undadditionne + dico[c] bksl-nl codepy-undconcatene = int(codepy-undconcatene)bksl-nl motpy-undestpy-undparfait = Truebksl-nl if codepy-undconcatene % codepy-undadditionne == 0:bksl-nl motpy-undestpy-undparfait = Truebksl-nl else:bksl-nl motpy-undestpy-undparfait = Falsebksl-nl return codepy-undadditionne, codepy-undconcatene, motpy-undestpy-undparfaitbksl-nlbksl-nltry:bksl-nl assert codespy-undparfait("PAUL") == (50, 1612112, False)bksl-nl assert codespy-undparfait("ALAIN") == (37, 1121914, True)bksl-nl print('Tout semble correct 👍')bksl-nlbksl-nlexcept AssertionError as asser:bksl-nl print('Le rĂ©sultat de votre fonction n\'est pas conforme đŸ€”')bksl-nlbksl-nl