Listes opérations
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