Hallo liebe Programmierer!
Ich hab folgendes Problem:
Ich soll eine Population für Organismen errechnen, wenn pro Tag 30% dazukommen. Das ganze soll 5 Tage dauern.
Folgendes habe ich schon gemacht:
#Frage nach Anzahl
while True:
Anzahl_Organismen = int(input('Anzahl beginninder Organismen?: '))
if Anzahl_Organismen < 0:
print('Anzahl muss größer/gleich Null sein!')
#Frage nach Prozentualem Zuwachs
while True:
prozentualer_zuwachs_pro_tag = float(input('Wie hoch ist der Zuwachs po Tag in prozent?: '))
if prozentualer_zuwachs_pro_tag < 0:
print('Zuwachs muss größer als Null sein!')
else:
break
#Frage der Dauer
while True:
Tage = float(input('Wie viel Tage soll es dauern?: '))
if Tage < 0:
print('Tage müssen mehr als Null sein!')
else:
break
print('Durch ihre eingabe sieht die Poulation wie folgt aus: ')
for Tage in range(1,6,1):
square = Tage + (Anzahl_Organismen*prozentualer_zuwachs_pro_tag/100)
print(Tage, '', square)
Jetzt bekomme ich als Ergebnis immer nur die 0.6 (30%von 2) aber der addiert das nicht
Sieht dann wie folgt aus:
1 1.6
2 2.6
3 3.6
4 4.6
5 5.6
Und das richtige Ergebnis sollte sein
1 2
2 2.6
3 3.38
4 4.394
5 5.7122
Könnt ihr mir helfen wo das Problem liegt?
Populationen errechnen
-
- User
- Beiträge: 2
- Registriert: Dienstag 7. Dezember 2021, 20:08
Hallo,
deine Ausgabe addiert nur die 30% (0.6) auf den Tag.
Das Problem liegt in dieser Zeile:
Square wird immer wieder mit dem Tag + die 0.6 überschrieben. Der vorherige Tag geht aber verloren.
Probiere mal folgendes:
Die print-Anweisung vor der Rechnung gibt dir den 1. Tag mit der Anzahl an Organismen aus.
Danach folgt die Berechnung. Square wird eig. nicht benötigt, du kannst stattdessen die Anzahl hernehmen, diese um die vorherige Anzahl erhöhen und dazu den Prozentsatz aufaddieren.
Meine Ausgabe ergibt dann:
Anzahl beginnender Organismen?: 2
Wie hoch ist der Zuwachs pro Tag in Prozent?: 30
Wie viel Tage soll es dauern?: 5
Durch ihre Eingabe sieht die Population wie folgt aus:
1 2.0
2 2.6
3 3.38
4 4.394
5 5.7122
Beste Grüße,
Platon
----------------------------------------------------------------------------------------------------------------------
Kompletter Code:
deine Ausgabe addiert nur die 30% (0.6) auf den Tag.
Das Problem liegt in dieser Zeile:
Code: Alles auswählen
square = Tage + (Anzahl_Organismen*prozentualer_zuwachs_pro_tag/100)
Probiere mal folgendes:
Code: Alles auswählen
for Tage in range(1, Tage + 1, 1):
print(Tage, '', Anzahl_Organismen)
Anzahl_Organismen = Anzahl_Organismen + (Anzahl_Organismen*prozentualer_zuwachs_pro_tag/100)
Danach folgt die Berechnung. Square wird eig. nicht benötigt, du kannst stattdessen die Anzahl hernehmen, diese um die vorherige Anzahl erhöhen und dazu den Prozentsatz aufaddieren.
Meine Ausgabe ergibt dann:
Anzahl beginnender Organismen?: 2
Wie hoch ist der Zuwachs pro Tag in Prozent?: 30
Wie viel Tage soll es dauern?: 5
Durch ihre Eingabe sieht die Population wie folgt aus:
1 2.0
2 2.6
3 3.38
4 4.394
5 5.7122
Beste Grüße,
Platon
----------------------------------------------------------------------------------------------------------------------
Kompletter Code:
Code: Alles auswählen
# Frage nach Anzahl
while True:
Anzahl_Organismen = float(input('Anzahl beginnender Organismen?: '))
if Anzahl_Organismen < 0:
print('Anzahl muss größer/gleich Null sein!')
else:
break
# Frage nach Prozentualem Zuwachs
while Anzahl_Organismen >= 0:
prozentualer_zuwachs_pro_tag = float(
input('Wie hoch ist der Zuwachs pro Tag in Prozent?: '))
if prozentualer_zuwachs_pro_tag < 0:
print('Zuwachs muss größer als Null sein!')
else:
break
# Frage der Dauer
while True:
Tage = int(input('Wie viel Tage soll es dauern?: '))
if Tage <= 0:
print('Es muss mindestens ein Tag dauern!')
else:
break
print('Durch Ihre Eingabe sieht die Population wie folgt aus: ')
for Tage in range(1, Tage + 1, 1):
print(Tage, '', Anzahl_Organismen)
Anzahl_Organismen = Anzahl_Organismen + \
(Anzahl_Organismen*prozentualer_zuwachs_pro_tag/100)
-
- User
- Beiträge: 2
- Registriert: Dienstag 7. Dezember 2021, 20:08
Hi Sülo,
dein square addiert nur den aktuellen Tag + die %.
Der Wert des vorherige Tages geht verloren.
Dein Fehler ist also in der Berechnung in dieser Zeile:
Du brauchst square eigentlich garnicht. Du kannst dir den ersten Tag + die aktuelle Anzahl ausgeben lassen, im Anschluss daran kannst du deine Anzahl neu berechnen lassen und dann immer wieder die print-Funktion aufrufen, bis die Anzahl an Tagen durchgelaufen ist.
Probiere es mal so:
Es gibt nur ganze Tage, daher würde ich die Variable Tage in int ändern. Eigentlich würde es auch nur ganze Organismen geben, aber hier habe ich mal float gewählt.
Hier mal der komplette Code:
Viel Spaß und Beste Grüße,
Platon
dein square addiert nur den aktuellen Tag + die %.
Der Wert des vorherige Tages geht verloren.
Dein Fehler ist also in der Berechnung in dieser Zeile:
Code: Alles auswählen
square = Tage + (Anzahl_Organismen*prozentualer_zuwachs_pro_tag/100)
Probiere es mal so:
Code: Alles auswählen
for Tage in range(1, Tage + 1, 1):
print(Tage, '', Anzahl_Organismen)
Anzahl_Organismen = Anzahl_Organismen + (Anzahl_Organismen*prozentualer_zuwachs_pro_tag/100)
Es gibt nur ganze Tage, daher würde ich die Variable Tage in int ändern. Eigentlich würde es auch nur ganze Organismen geben, aber hier habe ich mal float gewählt.
Hier mal der komplette Code:
Code: Alles auswählen
# Frage nach Anzahl
while True:
Anzahl_Organismen = float(input('Anzahl beginnender Organismen?: '))
if Anzahl_Organismen < 0:
print('Anzahl muss größer/gleich Null sein!')
else:
break
# Frage nach Prozentualem Zuwachs
while Anzahl_Organismen >= 0:
prozentualer_zuwachs_pro_tag = float(
input('Wie hoch ist der Zuwachs pro Tag in Prozent?: '))
if prozentualer_zuwachs_pro_tag < 0:
print('Zuwachs muss größer als Null sein!')
else:
break
# Frage der Dauer
while True:
Tage = int(input('Wie viel Tage soll es dauern?: '))
if Tage <= 0:
print('Es muss mindestens ein Tag dauern!')
else:
break
print('Durch Ihre Eingabe sieht die Population wie folgt aus: ')
for Tage in range(1, Tage + 1, 1):
print(Tage, '', Anzahl_Organismen)
Anzahl_Organismen = Anzahl_Organismen + \
(Anzahl_Organismen*prozentualer_zuwachs_pro_tag/100)
Platon
Setze Code hier im Forum immer in Code-Tags. Dann bleibt die Einrückung erhalten. Die Tags werden automatisch eingefügt, wenn du den </>-Knopf im vollständigen Editor drückst. Dazwischen gehört dein Code.
Namen werden klein_mit_unterstrich geschrieben.
Was denkst du denn, was diese Zeilen tun? (ich habe die Namen korrigiert)
Schau dir doch mal an, was "square" in jedem Durchlauf für einen Wert hat.
Verstehst du warum?
Namen werden klein_mit_unterstrich geschrieben.
Was denkst du denn, was diese Zeilen tun? (ich habe die Namen korrigiert)
Code: Alles auswählen
for tag in range(1,6,1):
square = tag + (anzahl_organismen * prozentualer_zuwachs_pro_tag / 100)
Verstehst du warum?