Problème d'algorithme simple [Résolu]

Signaler
Messages postés
13508
Date d'inscription
lundi 2 mars 2009
Statut
Contributeur
Dernière intervention
9 juin 2021
-
Messages postés
13508
Date d'inscription
lundi 2 mars 2009
Statut
Contributeur
Dernière intervention
9 juin 2021
-
Bonjour,

Je précise que je n'ai jamais fait de Python, mais là mon avenir direct en dépend.

Je dois réaliser un mini script, voilà l'énoncé du problème :

Un socle est ainsi constitué d'étages, chaque étage ayant une hauteur égale à une unité et une base carrée. Le côté des carrés diminue de une unité à chaque étage.

Votre programme doit lire deux entiers, représentant respectivement la largeur du socle au niveau du sol et la largeur du socle au niveau de la face supérieure du socle. Il doit ensuite calculer et afficher le volume du socle.


Si on passe au script la valeur 7 puis ensuite la valeur 3, on doit obtenir en sortie 135.

Voila les explications pour arriver à ce résultat :

Le volume du premier étage est 7 × 7 = 49, le volume du second est 6 × 6 = 36, etc. et le volume du dernier étage est 3 × 3 = 9. Le volume total est donc : 7 × 7 + 6 × 6 + 5 × 5 + 4 × 4 + 3 × 3 = 135.


Mon algorithme (pourtant parfait ;) fonctionne avec certaines valeurs d'entrée mais pas avec tous, je ne comprends vraiment pas pourquoi :

largeur_Sol = int(input())
largeur_Sup = int(input())

count = largeur_Sol - largeur_Sup
result = largeur_Sol * largeur_Sol

for loop in range(count):
   etage = (largeur_Sol - count) * (largeur_Sol - count)
   result = result + etage

print(result)


Merci d'avance si vous pouvez m'expliquer ce qui cloche.




Configuration: Linux / Firefox 88.0



“L'intelligence artificielle se définit comme le contraire de la bêtise naturelle.”

3 réponses

Messages postés
15962
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
9 juin 2021
866
bonjour,
dans quel cas obtiens-tu quel résultat incorrect?
Messages postés
15962
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
9 juin 2021
866
en fait, en relisant ton programme, je me demande dans quel cas tu as un résultat correct.
afin de comprendre ce que fait ton programme, ajoute des instructions print() pour visualiser les valeurs de tes variables.
Messages postés
13508
Date d'inscription
lundi 2 mars 2009
Statut
Contributeur
Dernière intervention
9 juin 2021
4 382
Merci pour ta réactivité.

C'est un examen en ligne où mon algorithme est testé avec plusieurs paires de valeurs, mais je ne sais pas lesquelles, je sais d'après le résultat qu'il y a juste un cas de figure où mon algo fonctionne, ce qui est encore plus troublant.
Messages postés
13508
Date d'inscription
lundi 2 mars 2009
Statut
Contributeur
Dernière intervention
9 juin 2021
4 382 >
Messages postés
13508
Date d'inscription
lundi 2 mars 2009
Statut
Contributeur
Dernière intervention
9 juin 2021

Voilà ça fonctionne, j'ai créé une variable qui itère à chaque tour de boucle :

largeur_Sol = 7
largeur_Sup = 3

nbEtages = largeur_Sol - largeur_Sup
volume = largeur_Sol * largeur_Sol

var = 0

for loop in range(nbEtages):
var = var + 1
etage = (largeur_Sol - var) * (largeur_Sol - var)
volume = volume + etage

print(volume)


Je passe en "Résolu" merci pour ton aide.

Bonne soirée.
Messages postés
15962
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
9 juin 2021
866 >
Messages postés
13508
Date d'inscription
lundi 2 mars 2009
Statut
Contributeur
Dernière intervention
9 juin 2021

as-tu une idée du rôle de la variable que tu as choisi d'appeller
loop
?
Messages postés
13508
Date d'inscription
lundi 2 mars 2009
Statut
Contributeur
Dernière intervention
9 juin 2021
4 382 >
Messages postés
15962
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
9 juin 2021

Non je ne connais pas le rôle de la variable
loop
, je ne suis pas encore assez loin dans les cours et tests.

Et puis les cours se limitent à quelques lignes à l'intérieur du test.
Messages postés
15962
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
9 juin 2021
866
pourquoi ne testes-tu pas ton programme en dehors du site d'examen?
Messages postés
13508
Date d'inscription
lundi 2 mars 2009
Statut
Contributeur
Dernière intervention
9 juin 2021
4 382 >
Messages postés
15962
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
9 juin 2021

C'est ce que j'ai fait, j'ai trouvé ce site pour tester :
https://www.w3schools.com/python/trypython.asp?filename=demo_list

Ca fait 10 heures d'affilée que je suis sur le test, pour l'instant j'arrivais m'en sortir sans tester, c'est le seul énoncé qui m'a posé problème sur la centaine auxquels j'ai déjà répondu, je crois que j'ai besoin d'une pause ;)
Messages postés
9848
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
9 juin 2021
2 127
bonjour

perso, j’initialiserai result à 0 et j'ajouterai 1 à ta valeur de count

largeur_Sol = int(input())
largeur_Sup = int(input())

count = largeur_Sol - largeur_Sup + 1
result = 0

for loop in range(count):
   etage = (largeur_Sol - loop) * (largeur_Sol - loop)
   result = result + etage

print(result)

Cdlmnt
Messages postés
15962
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
9 juin 2021
866
perso, je me formerais, au lieu de me faire aider.
Messages postés
13508
Date d'inscription
lundi 2 mars 2009
Statut
Contributeur
Dernière intervention
9 juin 2021
4 382 >
Messages postés
15962
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
9 juin 2021

C'est justement un test d'entrée pour une formation de développeur BAC +2
Messages postés
15962
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
9 juin 2021
866 >
Messages postés
13508
Date d'inscription
lundi 2 mars 2009
Statut
Contributeur
Dernière intervention
9 juin 2021

c'est un test pour évaluer la capacité à se faire aider?
Messages postés
13508
Date d'inscription
lundi 2 mars 2009
Statut
Contributeur
Dernière intervention
9 juin 2021
4 382 >
Messages postés
15962
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
9 juin 2021

C'est une drôle de manière de voir les choses, pour plusieurs raisons :

- je n'ai pas demandé qu'on fasse tout l'exercice à ma place
- j'ai proposé ma solution qui était très proche du résultat recherché
- j'ai finalement trouvé et corrigé mon erreur tout seul comme un grand

Je te souhaite une bonne journée.