While Schleife

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Göteborg
User
Beiträge: 6
Registriert: Dienstag 14. Oktober 2014, 09:37

Guten Abend, ich bräuchte da noch einmal Hilfe. Und zwar muss ich folgende Aufgabe lösen:

- Schreiben Sie ein Programm, das eine Gleitkommazahl als Variable Guthaben entgegennimmt.
- Wenn diese Zahl größer als null ist, soll sie so lange um 12,25 Prozent vergrößert werden, wie ihr Wert kleiner als das Dreifache des Startwerts ist.
- Die Anzahl der Durchläufe soll in der Variablen n gespeichert werden.
- Geben Sie die beiden Variablen nach jeder Erhöhung mittels print(n,Guthaben) aus.


Bisher habe ich folgendes erreicht, aber ich weiß nicht, wie ich die Variable n einbauen soll und ich weiß auch nicht, warum er nicht nach dem zweiten Break aufhört, wenn das Guthaben bereits das Dreifache überschritten hat:

Code: Alles auswählen

Guthaben = float(input("Bitte geben Sie Ihr Guthaben ein: "))

while True:
    if Guthaben <= 0:
        print("Falsches Guthaben eingegeben!")
        break
    
    else:
        
        Guthaben = Guthaben * 1.1225
        print("%.3f" %(Guthaben))
        if Guthaben >= Guthaben * 3:
            break
Vielleicht kann mir ja jemand weiterhelfen, danke schonmal im Vorraus!
BlackJack

@Göteborg: Welchen Wert müsste `Guthaben` denn haben das ``Guthaben >= Guthaben * 3`` ist? Da gibt es nur *einen einzigen* nämlich die 0, denn nur bei der gilt ``0 >= 0 * 3``. Falls Du das mit dem *Ausgangs*guthaben vergleichen willst, solltest Du Dir *das* vielleicht irgendwo merken. Zum Beispiel an einen Namen binden der danach *nicht* neue Werte zugewiesen bekommt.

Der erste Test gehört nicht in die Schleife. Die Eingabe ist entweder grösser als 0 oder nicht. Das muss man nicht in jedem Durchlauf testen.

Das `n` musst Du halt vor der Schleife initialisieren und in der Schleife hochzählen. Oder Du verwendest eine ``for``-Schleife über `itertools.count()`.
Göteborg
User
Beiträge: 6
Registriert: Dienstag 14. Oktober 2014, 09:37

Okay, also besetze ich die Variablen als "Guthaben" und "NeuGuthaben":

Code: Alles auswählen

Guthaben = float(input("Bitte geben Sie Ihr Guthaben ein: "))

for Guthaben in range(Guthaben*3):
    print(Guthaben)

while True:
    if Guthaben < 0:
        print("Falsches Guthaben eingegeben!")
        break
    
    else:
        
        NeuGuthaben = Guthaben * 1.1225
        print("%.3f" %(NeuGuthaben))
        if NeuGuthaben > Guthaben * 3:
            break
Ich weiß jetzt nicht genau, wie und wo ich das "n" mit der for-Schleife einbauen soll. Habe nochmal ein bisschen gegoogelt und bin jetzt total verwirrt...

Code: Alles auswählen

    for n in range(Guthaben, Guthaben*3): 
        NeuGuthaben = Neuguthaben * 1.1225 
Die Schleife beginnt mit dem Wert "Guthaben", der beliebig eingesetzt werden kann und läuft solange, bis maximal Guthaben*3. Und es wird jede Variable "Neuguthaben" mit 1.1225 multipliziert... denke ich zumindest :lol: :K
Sirius3
User
Beiträge: 18335
Registriert: Sonntag 21. Oktober 2012, 17:20

@Göteborg: Hilf Dir die Ausgabe der ersten for-Schleife bei der Lösung Deines Problems? Und welchen Wert wird NeuGuthaben in jedem while-Schleifendurchgang haben?
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

Die `for`-Schleife mit `itertools.count` ist so gemeint:

Code: Alles auswählen

for n in itertools.count():
      #berechne  neues guthaben
      if large_enough(deposit):
          break

print("termination after %d rounds" % n)
Antworten