Aller au contenu

Messages recommandés

Posté(e)

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

  • E-Bahut
Posté(e)

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.

Posté(e)

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))    
    
        
        
 

  • E-Bahut
Posté(e)
  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....

  • E-Bahut
Posté(e)

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.

  • E-Bahut
Posté(e)

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.

  • E-Bahut
Posté(e)

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.

Posté(e)

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))    
    
        

 

  • E-Bahut
Posté(e)

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.

  • E-Bahut
Posté(e)

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 ?

 

  • E-Bahut
Posté(e)

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))

 

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.

Invité
Répondre à ce sujet…

×   Collé en tant que texte enrichi.   Coller en tant que texte brut à la place

  Seulement 75 émoticônes maximum sont autorisées.

×   Votre lien a été automatiquement intégré.   Afficher plutôt comme un lien

×   Votre contenu précédent a été rétabli.   Vider l’éditeur

×   Vous ne pouvez pas directement coller des images. Envoyez-les depuis votre ordinateur ou insérez-les depuis une URL.

×
×
  • Créer...
spam filtering
spam filtering