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
Rapthor
User
Beiträge: 2
Registriert: Mittwoch 5. Oktober 2005, 13:14

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.
heftic
User
Beiträge: 22
Registriert: Mittwoch 21. September 2005, 13:09
Wohnort: Siegen

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.
mfg

heftic
heftic
User
Beiträge: 22
Registriert: Mittwoch 21. September 2005, 13:09
Wohnort: Siegen

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.
mfg

heftic
Francesco
User
Beiträge: 824
Registriert: Mittwoch 1. Dezember 2004, 12:35
Wohnort: Upper Austria

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:
...
Rapthor
User
Beiträge: 2
Registriert: Mittwoch 5. Oktober 2005, 13:14

Super Sache! Ich danke euch.
Antworten