Aller au contenu

Python


Clemmellian

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.

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

 

Archivé

Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.

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