J'essaie d'écrire un programme qui calcule la population d'organismes en croissance sur une certaine période:
Un biologiste local a besoin d'un programme pour prédire la croissance démographique. Les intrants seraient: p>
- le nombre initial d'organismes li>
- le taux de croissance (un nombre réel supérieur à 1) li>
- Le nombre d'heures qu'il faut pour atteindre ce taux li>
- Un nombre d'heures au cours de laquelle la population se développe li> ul>
Par exemple, on pourrait commencer par une population de 500 organismes, un taux de croissance de 2 et une période de croissance pour atteindre ce taux de 6 heures. En supposant qu'aucun des organismes meurt, cela impliquerait que cette population doublerait toutes les 6 heures. Ainsi, après 6 heures de croissance, nous aurions 1000 organismes et après 12 heures, nous aurions 2 000 organismes. P>
Écrivez un programme qui prend ces entrées et affiche une prédiction de la population totale. P> blockQquote>
Voici le code que j'ai jusqu'à présent: p>
xxx pré> J'ai traversé la logique plusieurs fois et ne peut pas comprendre pourquoi je peux 't obtenir la réponse
réponse souhaitée forte> de 80 p> p>
3 Réponses :
Vous n'avez pas besoin d'une boucle, cela peut être calculé avec une formule simple pour la croissance exponentielle: i utilise Si vous devez vraiment utiliser une boucle, vous avez deux problèmes. p> Premièrement, votre condition de boucle est en arrière, il devrait utiliser Utiliser second, Troisième, vous n'avez pas besoin de multiplier les organismes code> et également l'ajouter à mais si La formule équivalente qui ignore la période partielle utiliserait une division entière: P> math.floor () code> parce que le formule peut produire des fractions si
totalhours code> n'est pas un multiple de
numofhours code>, mais vous ne pouvez pas avoir un demi-organisme. P>
plutôt que
> = p>
numofhours + = numofhours code> double cette variable à chaque fois. Vous devez utiliser une variable distincte pour le moment où la simulation est en cours d'exécution. P>
Totalorganisms code>. Il suffit de multiplier les organismes code> par le taux de croissance, qui sera le nouveau nombre total d'organismes. P>
totalhours code> n'est pas un multiple de
numofhours code>, cela ignorera la croissance au cours de la dernière période partielle. P>
totalOrganisms = organisms * rateOfGrowth ** (totalHours // numOfHours)
Cela fonctionne pour la plupart des chiffres, mais ce cas de test, par exemple, qui ne fonctionne pas: entrez le nombre initial d'organismes: 100 Entrez le taux de croissance [un nombre réel> 0]: 5 Entrez le nombre d'heures pour atteindre le taux de croissance. : 2 Entrez les heures de croissance totales: 25 La population totale est 54591503356
Quelle devrait être la réponse à la place?
24414062500 est ce que la réponse est censée être. idk pourquoi mais votre équation fonctionne avec mes trois autres chèques de problèmes à côté de celui-ci
C'est la bonne réponse pour les heures totales = 24, pas 25. Vous ignorez la croissance au cours de la dernière heure.
Vous supposez que la croissance arrive instantanément toutes les 2 heures, tous les organismes scindés simultanément en 5.
Oh, tu as raison. Peut-être que c'est un type dans mes devoirs. Merci pour votre aide!
Peut-être qu'ils ont également fait que simplifier l'hypothèse. J'ai ajouté une formule pour cela.
Oh oui! Ça l'a fait!
La croissance démographique n'est pas vraiment un processus continu. Ce que vous avez vraiment besoin de savoir, c'est combien de fois chaque organisme donne naissance aux enfants et combien d'enfants il a. C'est en fait une séquence Fibonacci.
organisms = int(input("Enter the initial number of organisms:")) rateOfGrowth = int(input("Enter the rate of growth : ")) numOfhours = int(input("Enter the number of hours to achieve the rate of growth: ")) totalhours = int(input("Enter the total hours of growth: ")) hours=0 while (hours <= totalhours): organisms*=rateOfGrowth hours += numOfhours if (hours==totalhours): break print("The total population:" ,organisms)
C'est génial si vous pouvez ajouter des explications.
number = int(input("Enter the initial number of organisms: ")) rate = float(input("Enter the rate of growth [a real number > 1]: ")) cycleHours = int(input("Enter the number of hours to achieve the rate of growth:")) totalHours = int(input("Enter the total hours of growth: ")) cycles = totalHours // cycleHours for eachPass in range(cycles): number = number * rate print("The total population is", int(number))
tandis que NUMOFHOURS> = TOTALHOURS: CODE> n'a pas l'air bien. Vous ne voulez pas dire
<= code>? (Pas encore passé le reste du code)
Vous ne pouvez pas avoir de nouvelles lignes dans des chaînes à moins que vous n'utilisiez des guillemets triples. Pourquoi avez-vous divisé l'entrée des invites sur 2 lignes?
@Barmar qui n'est que parce que mon éditeur de code repousse les lignes de ce côté parce qu'ils étaient trop longs.
L'éditeur de débordement de la pile ne fait pas cela. Mais de toute façon, corriger le code multiligne et ébranler
> = code> (qui est immédiatement vrai) à
<= code> vous permet de
70 code>
OH @ROGANJOSH qui a aidé. Je ne suis pas à 70 pop mais je ne sais pas pourquoi ça ne me donnera pas 80
Parce que vous êtes absent de l'ajout de la culture de départ de 10. Vous calculez la croissance à chaque période, mais n'ayez pas ajouté à ce que vous avez commencé.
Numofhours + = Numofhours Code> ne semble pas vrai.
Vous avez besoin d'une variable distincte pour le nombre d'heures d'exécution de la simulation,
numofhours code> est déjà utilisé pour le temps nécessaire pour atteindre
fréquence de grave code>.
@Barmar n'est-il pas le même que de compter + = 1? Mais au lieu de cela, j'ai utilisé des numofhours + = numofhours afin que cela puisse éventuellement arriver à 6 et la boucle finirait
@Barmar alors à quoi ressemblerait-il?
NuméroShours + = Numofhours Code> est identique à celui
numofhours * = 2 code>.