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

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
facebraker
User
Beiträge: 25
Registriert: Montag 22. April 2013, 13:17

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
EyDu
User
Beiträge: 4881
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

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."
Das Leben ist wie ein Tennisball.
facebraker
User
Beiträge: 25
Registriert: Montag 22. April 2013, 13:17

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
Antworten