Seite 1 von 1

negative Zahlen werden nicht erkannt

Verfasst: Donnerstag 28. April 2016, 17:35
von kara
Guten Abend,

und zwar stehe ich vor folgenden Problem. Ich habe folgendes vor: Ich möchte eine Abfrage erstellen, die den Benutzer dazu auffordert eine beliebige Zahl einzugeben und das Programm dann daraufhin antwortet, ob die Zahl negativ, positiv oder gleich 0 ist. Dazu habe ich folgendes eingetippt:

zahl=input("Bitte geben Sie eine Zahl ein:")

while not zahl.isdigit():
print("Error! Bitte stellen Sie sicher, ob Sie eine Zahl eingegeben haben!")
zahl=input("Bitte geben Sie eine Zahl ein:")

zahl=float(zahl)

if zahl<0:
print("Die eingegebene Zahl ist negativ!")

elif zahl>0:
print("Die eingegebene Zahl ist positiv!")

else:
print("Die eingegebene Zahl ist 0!")


Der Haken bei mir ist die rot markierte while Schleife in der ich den isdigit Befehl ausgeführt habe. Diese soll sicher stellen, dass der Benutzer eine Zahl eingibt. Jedoch stellt sich bei mir das Problem, dass es keine negativen Zahlen in Form von:" -5,-3" etc erkennt und dann wieder auffordert eine Zahl einzugeben.




Kann mir hierbei evtl. jemand weiterhelfen?
Habe leider keinen passenden Beitrag hier im Forum dazu gefunden.

Danke im Voraus.

PS habe es in Blöcke aufgeteilt um klarzumachen was noch aufgrund der getätigten Doppelpunkte zusammen gehört, da leerzeichen nicht erkannt werden.

Re: negative Zahlen werden nicht erkannt

Verfasst: Donnerstag 28. April 2016, 18:00
von eckhard
@kara: mit zahl.isdigit() kommst Du hier nicht weiter. zahl.isdigit() testet ob alle Zeichen in der
Zeichenkette zahl Ziffern sind und die Zeichenkette nicht leer ist. Ein Minuszeichen ist nun mal
keine Ziffer und auch ein Punkt bei float-Werten würde nicht gehen.

Ein Konstrukt wie

Code: Alles auswählen

try:
    float(zahl)
except ValueError:
    print('Keine Zahl')


entsprechend eingesetzt, kann wahrscheinlich helfen.

eckhard

Re: negative Zahlen werden nicht erkannt

Verfasst: Donnerstag 28. April 2016, 18:02
von Sirius3
@kara: der übliche Weg ist, einfach zu versuchen, die Eingabe in ein float zu konvertieren. Falls das klappt, war's wohl eine Zahl, wenn nicht, dann nicht.
Scheitert der Aufruf von float wird eine Ausnahme (ValueError) geworfen, die in einem try-Block mit except abgefangen werden.