Programme def... ()

Fermé
sk_ Messages postés 15 Date d'inscription mardi 2 novembre 2021 Statut Membre Dernière intervention 5 novembre 2021 - 2 nov. 2021 à 14:15
jordane45 Messages postés 38319 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 30 novembre 2024 - 2 nov. 2021 à 14:40
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

jordane45 Messages postés 38319 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 30 novembre 2024 4 706
2 nov. 2021 à 14:38
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... )


0
jordane45 Messages postés 38319 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 30 novembre 2024 4 706
2 nov. 2021 à 14:40
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 )
0