[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.

Kurodinho
2021-03-20 15:33:47

up

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:38:54

c'est par rapport à cet exercice d'un site qu'un khey ma gentiment filé : http://www.france-ioi.org/algo/task.php?idChapter=644&iOrder=19

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)

Infos
Gestion du forum

contact@geevey.com

API disponible. Utilisez le paramètre "api" en GET, peu importe le contenu, sur une page du site.

Notes

    Partenaire: JVFlux
    Ce site n'est pas associé à Jeuxvideo.com ou Webedia. Nous utilisons seulement des archives publiques.
    Il est inutile de me spammer par e-mail pour supprimer un topic. Au contraire, en conséquence, je mettrais votre topic dans le bloc ci-dessous.
Non-assumage
    Personne n'a pas assumé de topic pour le moment.