1175 Stimmen

Prüfung, ob eine Variable eine ganze Zahl ist oder nicht

Wie prüfe ich, ob eine Variable eine ganze Zahl ist?

0 Stimmen

@katrielalex: Wenn er meine Antwort als die richtige gewählt hat, bedeutet das nicht, dass Hulk den von Ihnen erwähnten Eindruck hatte. Es gibt auch die ValueError Ausnahmemöglichkeit, die VOR der type() .

0 Stimmen

@Hulk: Ich will wirklich nicht dafür werben, dass Sie meine Antwort akzeptieren - Sie können sie gerne an Ashish zurückgeben; er hat eine absolut gültige und technisch korrekte Antwort gegeben. Ich wollte nur sicherstellen, dass Sie auch den Rest der Ratschläge auf dieser Seite gelesen haben.

0 Stimmen

@katrielalex: Ashish hatte Recht, aber die Kodierungsszenarien brauchten die Ausnahmeklausel, und so habe ich meine Antwort geändert, nichts für ungut, Ashish.

31voto

Parsa Punkte 1107

Warum nicht etwas wie:

if x%1 == 0:

9 Stimmen

-1 weil ich diesen Code nicht in der Produktion oder bei meinen Teamkollegen sehen möchte. Er verbirgt Ihre Absicht. Die meisten der anderen Antworten hier sind viel deutlicher und sollten bevorzugt werden.

26 Stimmen

@Dennis: aber das funktioniert auch für Floats mit Dezimalteil gleich Null. Sie können es in eine Funktion verpacken und es wird explizit sein.

0 Stimmen

Was wäre, wenn x nicht einmal eine Zahl, sondern eine Zeichenkette ist?

19voto

Dairy Window Punkte 1169

Anstatt die Dinge übermäßig zu verkomplizieren, warum nicht ein einfaches

if type(var) is int:

5 Stimmen

Verwenden Sie nicht type(), da es nicht immer funktioniert, verwenden Sie stattdessen isinstance(). Siehe die obige Antwort stackoverflow.com/a/3501408/2574719

16voto

Fariman Kashani Punkte 574

Sie können auch Folgendes verwenden str.isdigit . Versuchen Sie nachzuschauen help(str.isdigit)

def is_digit(str):
      return str.isdigit()

0 Stimmen

Es funktioniert nur, wenn str ein String ist. Integers hat keine isdigit oder is_digit Methode.

3 Stimmen

isdigit() gibt zurück. False für negative ganze Zahlen

15voto

Jungle Hunter Punkte 7159

Gefunden zugehörige Frage hier auf SO selbst.

Python-Entwickler ziehen es vor, Typen nicht zu prüfen, sondern eine typspezifische Operation durchzuführen und eine TypeError Ausnahme. Wenn Sie aber den Typ nicht kennen, haben Sie folgende Möglichkeiten.

>>> i = 12345
>>> type(i)
<type 'int'>
>>> type(i) is int
True

3 Stimmen

-1 Sie sollten zumindest erklären, warum Sie dies nicht tun sollten. Die bloße Veröffentlichung dieses Codes fördert schlechtes Python. (Ich hasse es, dies herunterzustufen, weil es technisch korrekt ist, aber es sollte nicht hochgestuft werden).

0 Stimmen

Das war's. Es würde Sie freuen, wenn Sie feststellen würden, dass es auch jetzt nicht hochgestuft wird.

0 Stimmen

Danke! Herabstufung entfernt. (Obwohl Sie etwas nachdrücklicher darauf hinweisen könnten, keine type =p.)

14voto

Resin Drake Punkte 488

Eine einfache Methode, die ich in meiner gesamten Software verwende, ist die folgende. Sie prüft, ob die Variable aus Zahlen besteht.

test = input("Enter some text here: ")
if test.isdigit() == True:
   print("This is a number.")
else:
   print("This is not a number.")

2 Stimmen

Dies funktioniert bei Variablen, die Strings sind, stürzt aber bei Variablen ab, die bereits Ziffern sind (isdigit() ist eine String-Methode in Python).

0 Stimmen

Auch isdigit gibt zurück. False für negative Zahlen und Gleitkommazahlen: '-10'.isdigit() y '1.5'.isdigit() .

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X