Programme def... ()

Depuis le début de l’année 2017, deux scientifiques Marc et Alice étudient l’évolution d’une population de
moustiques sur l’île Chépaou. Ils ont réussi à obtenir l’estimation suivante sur l’évolution de la population :
si la population contient x moustiques au cours d’une année, alors il y a aura 1.09x − 200 moustiques
l’année suivante. Par contre, ils ne sont pour l’instant pas d’accord sur l’estimation de la population en
2017 : ils s’accordent seulement sur le fait que ce nombre est compris entre 8 000 et 12 000. Il faudra donc
considérer cette donnée comme une variable.
1. Écrire une fonction f qui prend en argument le nombre x de moustiques à une certaine année et qui
renvoie le nombre de moustiques l’année suivante. La valeur de retour de f doit arrondir la réponse
à l'entier inférieur. Comme les valeurs obtenues seront toujours positives, vous pouvez utiliser au
choix int(..) ou la fonction floor(. ) du module math. Exemple: int(4.5) vaut 4 et math.floor(6.75)
vaut 6.
pour ca j'ai trouvé:
from random import*
x=randint(8000,12000)
def f(x):
    r= 1.09*x-200
    return int(r)

2. Écrire une fonction nb_moustiques qui prend en arguments nb_debut, le nombre estiméde
moustiques en 2017, et un entier annee_voulue. La fonction doit renvoyer le nombre de
moustiques qu’il y aura en annee_voulue.
la j'ai bloqué voila ce que j'ai fait:
def nb_moustiques(nb_debut,annee_voulue):
    r= f(x)*annee_voulue
    return r

et du coup par exemple quand je mets nb_moustiques(x,2)
au lieu de me donner le nombre de moustiques dans 2 ans, ca me donne le nombre de moustiques dans 1 an multiplié par 2
3. Écrire une fonction annee_atteindra qui prend en argument un entier seuil et un entier nb_debut
(qui correspondra au nombre de moustiques en 2017) et qui renvoie l’année à partir de laquelle le
nombre de moustiques sera supérieur ou égal à seuil.
j'ai trouvé ca:
def annee_atteindra(n,nb_debut):
    while n>= nb_moustiques(nb_debut, annee_voulue):
        r = annee_voulue-2017
        return r


mais tant que les programmes précédents ne sont pas corrects, ca ne marche pas
merci d'avance

1 réponse

  1. Modérateur
    Bonjour,

    Bon.. déjà il serait bien de ne pas ouvrir 50 questions en même temps sur le forum...
    Ta première question n'est toujours pas résolue...

    Ensuite...
    Pour le : 2)
    Il faut jusqu'au nombre d'année désirée
    Puis, dans chaque tour de la boucle, aller calculer le nombre de moustiques en se basant sur le calcul de l'itération précédente...

    Par exemple, nb_debut = 5000 , année = 3
    premier tour de la boucle :
    resultat = f(5000) ( ce qui donne : 5000 * 1.09 - 200 => 5250 )

    deuxième tour de la boucle
    resultat += f(resultat) ( donc f(5250) .. ce qui donne : 5 522,5 )

    troisième tour :
    resultat += f(resultat) ( donc f(5522 ) ... etc... )

    1. Modérateur
      et pour la 3 ... tu as totalement inversé le sens
      Le sens de la comparaison dans ton while et l'addition au lieu d'une soustraction pour ton r )