Seite 1 von 1

While-Schleife Problem

Verfasst: Mittwoch 5. Oktober 2005, 13:22
von Rapthor
Hallo,

ich habe eine kleine Applikation geschrieben und frage mich, warum die Bearbeitung niemals über die "while"-Schleife hinaus geht, obwohl man eine Ganzzahl (6) bzw. Kommazahl (3.1) eingibt:

Code: Alles auswählen

gueltig = False 

while ~gueltig: 
    try: 
        eingabe = raw_input("Bitte Wert in Euro eingeben: ") 
        eingabe = float(eingabe) 
        gueltig = True 
    except ValueError: 
        print "Bitte eine Zahl eingeben!" 

print "Der Betrag entspricht %f DM" %(eingabe*1.96)

Wer kann mir hier helfen?

Rapthor

Edit (Leonidas): Code in Python-Tags gesetzt.

Verfasst: Mittwoch 5. Oktober 2005, 13:35
von heftic
Hallo Rapthor!

machs doch einfach so:

Code: Alles auswählen

gueltig = False

while gueltig==False:
    try:
        eingabe = raw_input("Bitte Wert in Euro eingeben: ")
        eingabe = float(eingabe)
        gueltig = True
    except ValueError:
        print "Bitte eine Zahl eingeben!"

print "Der Betrag entspricht %f DM" %(eingabe*1.96)
Edit (Leonidas): Code in Python-Tags gesetzt.

Verfasst: Mittwoch 5. Oktober 2005, 13:49
von heftic
und so ist es sogar noch einfacher:

Code: Alles auswählen

gueltig = False

while gueltig==False:
    try:
        eingabe = input("Bitte Wert in Euro eingeben: ")
        gueltig = True
    except NameError:
        print "Bitte eine Zahl eingeben!"

print "Der Betrag entspricht %f DM" %(eingabe*1.96)
Edit (Leonidas): Code in Python-Tags gesetzt.

Re: While-Schleife Problem

Verfasst: Mittwoch 5. Oktober 2005, 14:01
von Francesco
Rapthor hat geschrieben:Hallo,

ich habe eine kleine Applikation geschrieben und frage mich, warum die Bearbeitung niemals über die "while"-Schleife hinaus geht, obwohl man eine Ganzzahl (6) bzw. Kommazahl (3.1) eingibt:

Code: Alles auswählen

gueltig = False 

while ~gueltig: 
    try: 
        eingabe = raw_input("Bitte Wert in Euro eingeben: ") 
        eingabe = float(eingabe) 
        gueltig = True 
    except ValueError: 
        print "Bitte eine Zahl eingeben!" 

print "Der Betrag entspricht %f DM" %(eingabe*1.96)

Wer kann mir hier helfen?

Rapthor
doc: """~x the bits of x inverted""": es ist kein logischer "Negierer", oder wie man es sonst bezeichnen sollte ;)

entspricht in C(++) ebenfalls '~', für den logischen Wert gibt es '!' in C.


z=False
>>> ~z
-1
>>> z=True
~z
-2

also in beiden Fällen True:

True => Wert 1
False => Wert 0

Darum ist auch True + True gleich 2
am einfachsten:
while not gueltig:
...

Verfasst: Mittwoch 5. Oktober 2005, 14:27
von Rapthor
Super Sache! Ich danke euch.