Wie prüfe ich, ob eine Variable eine ganze Zahl ist?
Dies funktioniert nicht, wenn die Variable z. B. eine Zeichenkette ist. Sie müssten die Ausnahme abfangen, usw. Siehe besser stackoverflow.com/a/3501408/2574719
Wie prüfe ich, ob eine Variable eine ganze Zahl ist?
In Anwesenheit von numpy prüfen wie ..
isinstance(var, numbers.Integral)
.. (langsam) oder ..
isinstance(var, (int, long, np.integer))
, um alle Typvarianten zu finden, wie np.int8
, np.uint16
, ...
(Tropfen long
in PY3)
Erkennen von ANY Ein ganzzahliges Objekt von irgendwoher zu finden, ist ein kniffliges Ratespiel. Überprüfen Sie
var & 0 == 0
für Wahrheit und Nicht-Ausnahme kann eine gute Wette sein. In ähnlicher Weise kann die Prüfung auf ausschließlich vorzeichenbehaftete Integer-Typen :
var ^ -1 == -var - 1
Dies funktioniert nicht, wenn die Variable z. B. eine Zeichenkette ist. Sie müssten die Ausnahme abfangen, usw. Siehe besser stackoverflow.com/a/3501408/2574719
Wenn die Variable wie eine Zeichenkette eingegeben wird (z. B. '2010'
):
if variable and variable.isdigit():
return variable #or whatever you want to do with it.
else:
return "Error" #or whatever you want to do with it.
Bevor ich dies benutzte, habe ich es mit try/except
und Überprüfung auf (int(variable))
, aber es war ein längerer Code. Ich frage mich, ob es einen Unterschied in der Nutzung von Ressourcen oder Geschwindigkeit.
Verwenden Sie die Funktion int als Hilfe
intchecker = float(input('Please enter a integer: '))
intcheck = 0
while intcheck != 1:
if intchecker - int(intchecker) > 0:
intchecker = float(input("You didn't enter a integer. "
"Please enter a integer: "))
else:
intcheck = 1
print('you have entered a integer')
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.
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 dertype()
.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.
2 Stimmen
@Hulk: Nicht böse gemeint. Aber um das klarzustellen, der einzige Weg, wie man eine Ausnahme abfangen kann (soweit ich weiß), ist die Verwendung einer Ausnahmeklausel. Ich habe vorgeschlagen, dass Sie die
TypeError
Ausnahme.20 Stimmen
Diese Frage ist zweideutig, und die Antworten sind entsprechend geteilt. Einige antworten darauf, wie man den Typ einer Variablen überprüft (5True, 5.0 False), während andere darauf antworten, wie man überprüft, dass der Wert eine ganze Zahl ist (5True, 5.0True, Fraction(5,1)True, 5.4False). Vielleicht sollten die Frage und die Antworten entsprechend aufgeteilt werden?
0 Stimmen
@S.Lott - Ich möchte meine Ausgabe formatieren, mit "{:03.2e}".format(value) für Fließkommazahlen und str(value) für Ganzzahlen.
0 Stimmen
Verwandt: stackoverflow.com/questions/21583758/
0 Stimmen
@S.Lott - es gibt einen sehr triftigen Grund dafür - wenn Sie Tests schreiben und prüfen, ob Ihr Wert tatsächlich Integer ist und wo assertIsNone die Bedingung, die Sie testen möchten, nicht testen würde.
0 Stimmen
Das ist eine völlig berechtigte Frage. Beispiel: Sie verarbeiten Daten in Stapeln, und der Erhalt einer nicht ganzzahligen Zahl in einer Zeile führt dazu, dass der gesamte Stapel in einer späteren Phase fehlschlägt. Sie möchten das Problem erkennen, bevor eine Ausnahme ausgelöst wird (und möglicherweise Ihre eigene Ausnahme auslösen).
1 Stimmen
Der einfachste Weg (der in Python 2.7.11 funktioniert) ist int(var) == var. Funktioniert mit .0 Floats und liefert boolean.
2 Stimmen
Meinen Sie "Wie stelle ich fest, ob der Typ einer Variablen eine ganze Zahl ist?" oder "Wie stelle ich fest, ob der Wert einer Variablen eine ganze Zahl ist?"