Besoin d’aide s’il vous plaît

Je suis complètement bloquer je vous serait très reconnaissante si vous êtes en mesure de m’aider
On lache une balle rebondissante à 120 cm
Après chaque rebonds la hauteur de la balle diminue de 10 %.
Écrire un programme en python avec une fonction python obligatoire permettant de donner le nombre de rebonds après lesquels la hauteur de la balle et de moitié par rapport à la hauteur initiale.
Retrouver la valeur n.
J’ai résolu le problème mathématique: la balle atteint la moitié de sa hauteur au 6 eme rebond a une hauteur de 63,42.

hello,

avec une boucle dans laquelle on décrément 10% de la valeur d’origine a chaque tour avec un compteur de tour et un test comparant la hauteur du tour avec la moitié de la hauteur initial ça devrait le faire.

def nom_fonction(hauteur_origine,pourcentage_perte):
      bloc d'instructions
      return nb_tour

print nom_fonction(hauteur_origine,pourcentage_perte)

https://courspython.com/

Bonjour aussi,

Deux choses :

  • Je pense que @bof (et d’autres, y compris moi) peut écrire l’intégralité du code en moins de 2 minutes.
    Mais, la procédure didactique sera de t’aider et de ne surtout pas te donner la solution.
    C’est comme ça que ma n°2 qui est en première procède et que je l’aide pour ses python-maths.
    Jamais de solution complète directe.

  • Un message respecte un certain nombre de règles, notamment une salutation de principe et un peu de « mise en forme ».

Cela dit, je vais m’amuser à pondre le code sur mon Raspberry pour le fun :smiley:

++

Bonsoir,
Je comprend veuillez excusez mon impolitesse perso je suis en 4 eme alors je vous demande de bien vouloir me corriger si c’est possible.

def rebonds_balle (120,10):
     
    nombre_rebonds = 0
    while hauteur > 120:
        nombre_rebonds = nombre_rebonds + 1
        hauteur = 0.9 * hauteur
    return nombre_rebonds

    

print rebonds_balle (120,10)

Re,

4ème ??? :astonished:
Ma n°3 ne fait pas de python, elle (dommage)

ça ne serait pas un truc comme ça ?

def rebonds_balle(hauteur_origine,pourcentage_perte):
...nombre_rebonds = 0
...while hauteur > 120:
......nombre_rebonds = nombre_rebonds + 1
......hauteur = 0.9 * hauteur
...return nombre_rebonds

et on l’appelle avec
rebonds_balle(120,10)

(là, je bosse autre chose)

il y a un truc souvent utile quand on écrit un programme c’est de le faire tourner " à la main" si j’applique cette « technique » à ton programme ça donne :
tant que la hauteur est supérieure à 120 … oops ça commence mal !

Et hauteur sera déclarée « non définie », non ?

yes se serait pas mal de l’initialiser avec la valeur hauteur_origine avant de rentrer dans la boucle
:wink:

j’imagine que le problème suivant ce serait de calculer combien de rebonds après que l’on ait atteint la moitié…

Bonjour,
moi je défini en constante ce dont je dispose dans l’énoncé:
hauteur de départ,
perte en % à chaque rebond
limite (la moitié de la hauteur de départ)
#!/usr/bin/env python3

constantes

hauteur = 120
perte = 10 # perte en %
limite = hauteur/2

def rebonds_balle (h,limite,p):
nombre_rebonds = 0
while h > limite:
nombre_rebonds = nombre_rebonds + 1
h = ((100-p)/100) * h
rep = ‹ %u = %f › % (nombre_rebonds,h)
print (rep)
return nombre_rebonds

print (rebonds_balle (hauteur,limite,perte))

peut mieux faire :wink:
le septième rebond ne dépasse pas la limite…

lol ça me rappelle mes années de cauchemars au collège :see_no_evil:

bon aller je poste ma copie …

#!/usr/bin/env python3
# coding: utf-8
def rebonds_balle (hauteur_origine,pourcentage_perte):
   hauteur = hauteur_origine
   nombre_rebonds = 0
   pourcentage = 1 - pourcentage_perte / 100
   while True:
       hauteur = pourcentage * hauteur
       if hauteur > hauteur_origine/2:
          nombre_rebonds = nombre_rebonds + 1
          print ("au rebond " , nombre_rebonds, " la hauteur atteinte est de : %.3f" % hauteur)
       else:
          break
   return nombre_rebonds

print ("le nombre total de rebonds supérieurs à la moitié de la hauteur initiale est de : ", rebonds_balle (120,10))

le while true crée une boucle que le break interrompt lorsque le rebond n’atteint plus la moitié de la hauteur ( ça remplace un do until ou un do while qui doivent pas exister dans python; enfin je les ais pas trouvé !

Edité: supprimé (j’avais fait une mise en page affreuse et le sujet est vieux)