Bonjour , j'ai un exercice sur algorithmique des tableaux avec la programmation (Python) qui liée avec Math aussi ,
En fait ,j'ai pas très bien compris comment algorithm marche c'est à dire le code marche. j'ai la correction aussi, et je ne comprends pas pourquoi le code la fin quand on returne s ça donne 8 ? je sais on prend la valeur 7 + 1 sur n = 5741 mais je ne vois pas trop comment le code marche.
Pourriez vous m'expliquer en détaille s'il vous plaît.
Voici Exercise :
--------------------
Écrire une fonction (sommeChiffresRangPair) qui retourne la somme des chiffres de rang pair d'un nombre entier n passé en paramètre (le chiffre le plus à droite est considéré comme étant de rang 0). Par exemple, si n vaut 5741, la fonction retournera 8, c'est-à-dire 7 + 1.
-----------------------
Code correction :
def sommeChiffresRangPair (n):
s = 0
while n > 0:
s += n % 10
n //= 100
return s
salut
ben il suffit d'exécuter ce code à la main avec un papier et un crayon
tour 0 : s = 0 et n = 5741
tour 1 : s = 0 + 1 = 1 et n = 57
tour 2 : s = 1 + 7 = 8 et n = 0
fin
bonsoir
(le chiffre le plus à droite est considéré comme étant de rang 0).
donc les chiffres de rang pair seront, pour 5741, les chiffres 1 et 7.
s += n % 10
n%10 (modulo 10) va retourner le reste de la division de 5741 par 10
soit n%10 = 1
s += n % 10 cette instruction va ajouter ce reste à s
n //= 100 retourne le résultat entier de la division de n par 100 et le met dans n
si tu veux, cette instruction est équivalente à celle-ci : n = n//100
donc, après cette instruction, n contiendra 57.
...
J'ai testé mais je toujours pas compris une chose
j'ai compris le tour 1 s : 0 +1 = 1 car on prend 5741 % 10 donc on obtient le reste 1
mais pour le tour 2 : s = 1 + 7 = 8 ???
carita Oui c'est lors j'ai fait calcul sur le papier j'ai trouvé 57 aussi le problème j'ai du mal à comprendre comment algorithm marche pour obtenir 8.
carpediem C'est bon merci beaucoup ,
je vois pourquoi je suis bloqué parce que j'ai oublié on doit prendre la valeur du deuxième tour c'est à dire tour 2 qui n = 57 % 10 donc obtient le rest 5 et la valeur du tour 1 qui contient s = 1 donc 1+7 = 8
1 + 7 = 8 on est d'accord
ce qu'il faut bien savoir, c'est que l'opérateur composé +=
réalise 2 opérations en même temps : l'addition, ET l'affectation
s += n % 10 peut s'écrire plus simplement
s = s + n%10 ==> je calcule n%10 et j'additionne (je cumule) le résultat trouvé avec le contenu déjà existant de s
au 1er tour : s contient 1
au second tour, 57%10 = 7 ==> s va contenir 1 + 7, soit 8
Vous devez être membre accéder à ce service...
Pas encore inscrit ?
1 compte par personne, multi-compte interdit !
Ou identifiez-vous :