E-Bahut julesx Posté(e) le 20 février 2021 E-Bahut Signaler Posté(e) le 20 février 2021 Tout le programme, bien sûr, puisque tu veux connaitre le nombre d'étages. Citer
Clemmellian Posté(e) le 20 février 2021 Auteur Signaler Posté(e) le 20 février 2021 from math import* def pyramide(n): a=3 S=3 for i in range (2,n+1): a=a+4 S=S+a return S print(pyramide(3)) def nb_etages(N): n=2 while pyramide(n)<N: n=n+1 if pyramide(n)==N: return n else: return n-1 Citer
E-Bahut julesx Posté(e) le 20 février 2021 E-Bahut Signaler Posté(e) le 20 février 2021 Le print(pyramide(3)) n'est plus nécessaire, il te servait dans la première partie. Par contre, un print(nb_etages(105)) par exemple serait beaucoup plus utile. Citer
Clemmellian Posté(e) le 20 février 2021 Auteur Signaler Posté(e) le 20 février 2021 Merci beaucoup from math import* def pyramide(n): a=3 S=3 for i in range (2,n+1): a=a+4 S=S+a return S def nb_etages(N): n=2 while pyramide(n)<N: n=n+1 if pyramide(n)==N: return n else: return n-1 print(nb_etages(60)) Citer
E-Bahut julesx Posté(e) le 20 février 2021 E-Bahut Signaler Posté(e) le 20 février 2021 Et alors, ça donne quoi, comme résultat avec les valeurs que je t'avais suggérées ? Citer
E-Bahut PAVE Posté(e) le 20 février 2021 E-Bahut Signaler Posté(e) le 20 février 2021 Citation 1) Sur ton écran, dans la partie "éditeur", qu'est ce qu'il y a d'écrit ? un copié/collé COMPLET de ton script serait le bienvenu, pour qu'on en juge. Expand Je me doutais que tu n'avais pas mis la 1ère fonction pyramide(n) dans l'éditeur et que consécutivement ta deuxième fonction nb_etages(N), qui fait appel à la première, ne pouvait pas être exécutée. As tu compris cela ? cette notion de "fonction" indépendante mais réutilisable dans des programmes divers n'est pas facile à appréhender.... Citer
E-Bahut julesx Posté(e) le 20 février 2021 E-Bahut Signaler Posté(e) le 20 février 2021 OK, mais tu aurais pu préciser pour quelles valeurs de N, tu obtiens 5. Cela dit, de toute façon, il est toujours bon de préciser dans l'affichage du résultat à quoi il correspond. Maintenant, il ne reste plus qu'à voir comment tu gères l'affichage des allumettes restantes. Citer
Clemmellian Posté(e) le 20 février 2021 Auteur Signaler Posté(e) le 20 février 2021 t On souhaite connaître le nombre maximal d’étages que l’on peut construire avec 1000 allumettes. Citer
E-Bahut julesx Posté(e) le 20 février 2021 E-Bahut Signaler Posté(e) le 20 février 2021 Je ne vois pas ce qui t’arrête, il suffit de remplacer 105 par 1000 dans ton print. Citer
Clemmellian Posté(e) le 20 février 2021 Auteur Signaler Posté(e) le 20 février 2021 Mais pourquoi 105 Citer
E-Bahut julesx Posté(e) le 20 février 2021 E-Bahut Signaler Posté(e) le 20 février 2021 105, c'était pour faire un essai, comme 55. Avec pyramide(n), tu pouvais facilement voir que n=5 donnait 55 allumettes et n=7 donnait 105 allumettes. Donc, ton script complet devait retourner ces valeurs, ce qui est bien le cas. Citer
Clemmellian Posté(e) le 20 février 2021 Auteur Signaler Posté(e) le 20 février 2021 D'accord, donc mtn je cherche à trouver pour 1000 allumettes Il y a 22 étages ? Citer
E-Bahut julesx Posté(e) le 20 février 2021 E-Bahut Signaler Posté(e) le 20 février 2021 C'est ça, donc, question 2)a) résolue. Il ne te reste plus qu'à traiter la question 2)b). Citer
Clemmellian Posté(e) le 20 février 2021 Auteur Signaler Posté(e) le 20 février 2021 Il faut rajouter une variable pour les allumettes restante. Citer
E-Bahut julesx Posté(e) le 20 février 2021 E-Bahut Signaler Posté(e) le 20 février 2021 Si tu veux, mais ce n'est pas indispensable, le nombre d'allumettes de départ est N, et, s'il y a lieu, celles non utilisées sont données par N-pyramide(n-1), à faire figure dans le return du else. Mais propose la modification du script que tu envisages. Citer
Clemmellian Posté(e) le 20 février 2021 Auteur Signaler Posté(e) le 20 février 2021 Je propose : from math import* def pyramide(n): a=3 S=3 for i in range (2,n+1): a=a+4 S=S+a return S def nb_etages(N): n=2 while pyramide(n)<N: n=n+1 if pyramide(n)==N: return n else: return N-pyramide(n-1) print(nb_etages(1000)) Citer
E-Bahut julesx Posté(e) le 20 février 2021 E-Bahut Signaler Posté(e) le 20 février 2021 else: return N-pyramide(n-1) ne retourne que le nombre d'allumettes restantes, il manque le nombre d'étages. Par contre, ton script n'affiche qu'un ou deux nombres, il faudrait un peu préciser à quoi ils correspondent. Citer
Clemmellian Posté(e) le 20 février 2021 Auteur Signaler Posté(e) le 20 février 2021 Je suis désolée je ne comprends pas trop Citer
E-Bahut julesx Posté(e) le 20 février 2021 E-Bahut Signaler Posté(e) le 20 février 2021 Tu ne comprends pas quoi ? Si j'exécute ton script tel que tu l'as posté, j'obtiens 10 comme résultat. Ce n'est pas ce que demande l'énoncé, lui, il veut le nombre d'étages et le nombre d'allumettes restantes. Par contre, si je remplace return N-pyramide(n-1) par return n-1,N-pyramide(n-1) j'obtiens (22,10) qui est bien le nombre d'étages 22 et le nombre d'allumettes restantes 10. Tu vois mieux ? Citer
Clemmellian Posté(e) le 20 février 2021 Auteur Signaler Posté(e) le 20 février 2021 Oui ! merci Bonne soirée Citer
E-Bahut julesx Posté(e) le 20 février 2021 E-Bahut Signaler Posté(e) le 20 février 2021 Juste un petit complément. On peut agrémenter un peu le script comme suit : from math import* def pyramide(n): a=3 S=3 for i in range(2,n+1): a=a+4 S=S+a return S def nb_etages(N): n=2 while pyramide(n)<N: n=n+1 if pyramide(n)==N: return('Avec '+str(N)+' allumettes, on peut construire exactement '+str(n)+' étages.') else: return('Avec '+str(N)+' allumettes, on peut construire '+str(n-1)+' étages, et il reste '+str(N-pyramide(n-1))+' allumette(s).') Essaie avec print(nb_etages(1000)) puis avec print(nb_etages(990)) Citer
Messages recommandés
Rejoindre la conversation
Vous pouvez publier maintenant et vous inscrire plus tard. Si vous avez un compte, connectez-vous maintenant pour publier avec votre compte.