Seite 1 von 1

Prüfen ob eine Zahl ungerade und größer Null

Verfasst: Dienstag 18. März 2014, 17:08
von facebraker
Hallo,

ich bin hier irgendwie am verzweifeln, das Problem ist nicht groß aber es ist aberwitzig.
Ich möchte einfach prüfen ist eine Zahl ungerade und größer als Null.
Er soll solange eingeben werden bis die Bedingungen stimmen

Hier ist der Code:

Code: Alles auswählen

zahl = int(input())
print(int(zahl)%2)
print(int(zahl) < 0)

while int(zahl)%2 ==0 and int(zahl) > 0:


    if zahl > 0 and zahl % 2 == 0:
        print ("Zahl muss ungerade sein")

    zahl = int(input())


print ("Zahl erfüllt die Bedingungen")

Das war noch relativ simpel, das funktioniert

Aber wie kann ich prüfen ob es positive Zahlen sind?

Denn wenn ich negative Zahlen eingebe ist alles Falsch und er passiert die Schleife?

Das Problem liegt doch an der Stelle, dass die Schleife sich immer wiederholt solang die Bedingung wahr ist, wenn sie
falsch ist passiert er die Schleife, irgendwie unsinnig?


Irgendwie verknotet sich mein Gehirn ;-)

Gruß Alex

Re: Prüfen ob eine Zahl ungerade und größer Null

Verfasst: Dienstag 18. März 2014, 17:14
von EyDu
Hallo.

Die Schleife wird so lange durchlaufen, wie die Bedingung des while wahr ist. Wenn du eine negative Zahl eingibst, dann wird ``int(zahl) > 0`` zu False ausgewertet. Damit ist die ganze bedingung False und die Schleife wird abgebrochen. Du möchtest ausdrücken: so lange die Zahl gerade ist und sie nicht größer Null ist.

Dein Problem würde man aber ganz anders angehen und den ganzen doppelten Code einsparen:

Code: Alles auswählen

while True:
    zahl = int(input())

    if zahl > 0 and zahl % 2 == 1:
        break
    else:
        print "Zahl muss größer 0 nund ungerade sein."

Re: Prüfen ob eine Zahl ungerade und größer Null

Verfasst: Dienstag 18. März 2014, 17:28
von facebraker
Hallo EyDu,

sehr elegante Lösung, ich habe mich so sehr auf die Schleife mit Austrittsbedingung eingeschossen, dass wir die Idee
gar nicht kam, manchmal sieht man den Wald vor lauter Bäumen nicht ;-)

Vielen Dank!

Gruß Alex