[Dev] Python
yuna-91
2021-03-20 15:32:02
Pourquoi mon programme ne fonctionne pas d'après un test unitaire ? :
Exercice :
L'objectif est de construire une tour à l'aide de petits cubes en bois, sachant que la forme de cette tour consiste en un ensemble de grands cubes placés les uns au-dessus des autres. La base de la tour est un cube de taille 17×17×17, c'est-à-dire composé de 17×17×17 = 4 913 petits cubes. Sur ce cube est posé un autre cube de taille 15×15×15. Au-dessus de ce dernier se trouve un cube de 13×13×13. La tour continue ainsi jusqu'à atteindre le sommet, qui consiste en un cube de taille 1×1×1.
Votre programme doit calculer et afficher le nombre total de petits cubes nécessaires pour construire la pyramide. Effectuez les calculs dans le programme en y intégrant une boucle.
Mon programme :
nbTotal = 0
nbTrans = 0
init = 17
for loop in range(init):
nbTrans = init * init * init
nbTotal = nbTotal + nbTrans
init = init - 2
print(nbTotal)
c'est bizarre non ? (jamais fait de python avant)
Edit : pas le droit d'utiliser de conditions, c'est seulement avec variable/boucle
TestDeTuring
2021-03-20 15:33:06
Fais un pastebin ou on voit correctement l'indentation, le problème peut venir de la.
Et donne la sortie comparée à celle attendue.
yuna-91
2021-03-20 15:34:34
Le 20 mars 2021 à 15:33:06 TestDeTuring a écrit :
Fais un pastebin ou on voit correctement l'indentation, le problème peut venir de la.
Et donne la sortie comparée à celle attendue.
https://pastebin.com/GFnz4TEy
QLFCelinent1961
2021-03-20 15:37:57
Ca te donne quoi comme sortie pour 17 alors?
gediminas
2021-03-20 15:38:06
nbTotal = 0
nbTrans = 0
init = 17
while (init >0):
nbTrans = init * init * init
nbTotal = nbTotal + nbTrans
init = init - 2
print(nbTotal)
yuna-91
2021-03-20 15:39:44
Le 20 mars 2021 à 15:38:06 gediminas a écrit :
nbTotal = 0
nbTrans = 0
init = 17
while (init >1):
nbTrans = init * init * init
nbTotal = nbTotal + nbTrans
init = init - 2
print(nbTotal)
Sauf qu'on a pas encore vu dans leur cours la boucle conditionelle
TintinTimonier
2021-03-20 15:41:00
Dans ta boucle for, il me semble que tu peux pas "redéfinir" la valeur init, la boucle va faire les valeurs 16,15,14,13 ... et non pas deux par deux.
Le choix du VDD est plus judicieux. Faut juste mettre >=1 et pas >1 vu que tu comptes aussi la ligne 1.
T'es pas non plus obligé de déclarer la variable nbTrans.
yuna-91
2021-03-20 15:41:04
Le 20 mars 2021 à 15:37:57 QLFCelinent1961 a écrit :
Ca te donne quoi comme sortie pour 17 alors?
il me dit ça : Nombre total de valeurs affichées : 1
Votre valeur numero 1 (4913) est à une distance supérieure à 1000 de la reponse attendue.
NotEpictetus
2021-03-20 15:42:17
init = 17
total = 0
for val in range(init,0, -2):
| print(val)
| total += val**3
print(total)