While-schleife... Problem

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
guter_hund
User
Beiträge: 19
Registriert: Montag 4. Dezember 2006, 13:25

Dienstag 5. Dezember 2006, 12:51

Hi.
Sorry aber ich verzweifelle gerade an einer While-Schleife :oops: :roll: :lol:
Ich weiß Baby-Kram aber ich hab keine ahnung was da flasch ist.

Also Ich möchte ein kleines Script schreiben das Zinsen berechnet. Hier mal der Code:

Code: Alles auswählen

print 'Willkommen beim Zinsrechner'
print
pro = True
while pro:
    print '- Neu Sitzung -'
    base = raw_input('Was möchtest du berechnen? Dein Kapital, deine Zinsen oder dein Prozentsatz? ')
    if base == 'Kapital':
        print 'K'
    if base == 'Zinsen':
        print 'Z'
    if base == 'Prozentsatz':
        print 'P'

    else:
        print 'Bitte nur ein Wort angeben!'
        pro = True
else:
    print 'Ende'
Is nur eine Vorab Version ohne viel Drum herum.
Es passiert folgendes: (Ausgabe)

Code: Alles auswählen

Willkommen beim Zinsrechner

- Neu Sitzung -
Was möchtest du berechnen? Dein Kapital, deine Zinsen oder dein 
Prozentsatz? Kapital
K
Bitte nur ein Wort angeben!
- Neu Sitzung -
Was möchtest du berechnen? Dein Kapital, deine Zinsen oder dein Prozentsatz? 
Der PythonInterpreter Ignoriert alle 'else' Anweisungen...

Brauche dringend Hilfe.
Danke im Vorraus.

Edit (Leonidas): Code-Highlighting eingeschaltet.
pr0stAta
User
Beiträge: 271
Registriert: Freitag 17. September 2004, 11:49
Wohnort: Bremen

Dienstag 5. Dezember 2006, 13:11

Code: Alles auswählen

print 'Willkommen beim Zinsrechner'
pro = True
while pro:
    print '- Neu Sitzung -'
    base = raw_input('Was möchtest du berechnen? Dein Kapital, deine Zinsen oder dein Prozentsatz? ')
    if base == 'Kapital':
        print 'K'
    elif base == 'Zinsen':
        print 'Z'
    elif base == 'Prozentsatz':
        print 'P'
    elif base == 'Beenden':
        pro = False
    else:
        print 'Bitte nur ein Wort angeben!'

else:
    print 'Ende' 
Nimm mal das. Problem ist, du musst die while Schleife auch irgendwie beenden um in den unteren else zweig zu kommen. der 1. else zweig wird
bei dir immer angezeigt, wenn du nicht Prozentsatz eingibst da sich
else nur auf die letzte if abfrage bezieht. nimm daher mal elif. Anstatt zu prüfen, ob die Variable pro == True ist, könntest du auch einfach schreiben:

Code: Alles auswählen

while 1:
  if eingabe == "beenden":
    break
Benutzeravatar
Rebecca
User
Beiträge: 1662
Registriert: Freitag 3. Februar 2006, 12:28
Wohnort: DN, Heimat: HB
Kontaktdaten:

Dienstag 5. Dezember 2006, 13:17

Das else in Zeile 15 bezieht sich nur auf das vorherige if, also das in Zeile 12. Und wenn du 'Kapital' eingibst, dann ist if base == 'Prozentsatz': natuerlich falsch, und der else-Zweig wird ausgefuehrt. Was du wohl eingentlich willst, ist ein if-elif-elif-...-else-Konstrukt.

Das letzte else in Zeile 18 bezieht sich auf das while und wird dann ausgefuehr, wenn die while-Bedingung nicht erfuellt ist und somit die while-Schleife kein weiteres mal durchlaufen wird. Da bei dir aber die Varieble pro immer True ist, wird die while-Schleife nie verlassen.

Ich weiss nicht genau, wie du dir dein Programm vorstellst, aber schau dir mal das hier an:

Code: Alles auswählen

while True:
    print '- Neu Sitzung -'
    base = raw_input('Was möchtest du berechnen? Dein Kapital, deine Zinsen oder dein Prozentsatz? ')
    if base == 'Kapital':
        print 'K'
        break
    elif base == 'Zinsen':
        print 'Z'
        break
    elif base == 'Prozentsatz':
        print 'P'
        break

    else:
        print 'Falsche Eingabe!'
        
print 'Ende' 
guter_hund
User
Beiträge: 19
Registriert: Montag 4. Dezember 2006, 13:25

Freitag 22. Dezember 2006, 19:05

Danke an euch.
Antworten