Bienvenue sur Zoofast.fr, votre plateforme de référence pour toutes vos questions! Trouvez des solutions rapides et fiables à vos problèmes avec l'aide de notre communauté d'experts.

Bonsoir, j’aurais besoin d’aide pour cet exo svp
C’est sur Python et niveau seconde.

Un roi désire récompenser l'inventeur du jeu d'échecs.
L'inventeur demande une quantité de grains riz pour chacune des 64 cases. Un grain est demandé pour la première case puis 2 pour la deuxième puis 4 sur la troixième puis 8 en doublant à chaque case.
Compléter le programme suivant pour qu'il calcule le nombre total de grain de riz.
n=1
t=1
for i in range(...):
print(t)

Perso j’ai fait:
n=1
t=1
for i in range (65):
n=n+2
t=t+n
print (t)
Mais je sais pas si c’est bon car du coup il manque les deux numéros du troisième jour et le 8....

Merci d’avance.

Sagot :

Bonjour

L'exercice est basé sur le très connu problème de l'échiquier de Sissa, l'avantage c'est qu'il est tellement connu qu'il a une page Wikipédia, nous permettant donc facilement d'identifier si on est arrivés à la bonne réponse à la fin (spoiler: oui)

Ton fragment de code est mauvais pour deux raisons:

  • Tu redéfinis n par n+2, sauf qu'ici il s'agit bien de n*2 (relis l'énoncé) C'est assez sûrement un simple problème de lecture. ^^
  • Tu fixes une range de 65. Sauf que l'énoncé nous dit déjà que n (nombre de grain de riz) est égal à 1 déjà sa définition, donc le premier jour, la première case est déjà à retirer. Et la première exécution fera déjà la seconde case et puisque Python commence à compter à 0 il faut bien une range de 63

Ci-joint le code corrigé et son rendu en console.

Bonne journée :)

View image ClementCg
View image ClementCg