NumPy - Mit isnan(x)
Ich versuche, numpy, um zu überprüfen, ob ein Benutzer Eingabe ist numerisch, habe ich versucht mit:
from numpy import *
a = input("\n\nInsert A: ")
if isnan(a) == True:
print 'Not a number...'
else:
print "Yep,that's a number"
Auf seine eigene und es funktioniert gut, aber wenn ich Betten es in eine Funktion wie in diesem Fall:
from numpy import *
def test_this(a):
if isnan(a) == True:
print '\n\nThis is not an accepted type of input for A\n\n'
raise ValueError
else:
print "Yep,that's a number"
a = input("\n\nInsert A: ")
test_this(a)
Dann bekomme ich eine NotImplementationError sagen, es ist nicht implementiert, für diese Art, kann mir jemand erklären, wie das funktioniert nicht?
Jede Hilfe wäre sehr geschätzt, danke nochmal.
Ist es dein Ziel, um zu testen, ob der Wert, den der Benutzer eingegeben wird, eine gültige Nummer?
Ja, ich glaubte es würde besser sein, als mit einfach: wenn Typ(a) != int oder Typ(a) != float:
1. vermeiden
für die Erwähnung
Ja, ich glaubte es würde besser sein, als mit einfach: wenn Typ(a) != int oder Typ(a) != float:
1. vermeiden
from numpy import *
Sie konnte import numpy as np
und später verwenden np.isnan()
usw. statt. 2. Nicht zu vergleichen mit True
direkt verwenden if np.isnan(a)
statt. 3. input()
hat eval(raw_input(prompt))
es ist wahrscheinlich nicht das, was Sie wollen.für die Erwähnung
eval
InformationsquelleAutor George Burrows | 2011-12-14
Du musst angemeldet sein, um einen Kommentar abzugeben.
"Keine Zahl" oder "NaN" ist eine Besondere Art von Gleitkommazahlen nach dem IEEE-754-standard. Die Funktionen
numpy.isnan()
undmath.isnan()
testen, ob eine bestimmte Gleitkomma-Zahl dieses speziellen Wertes (oder eines von mehreren, die "NaN" - Werte). Die übergabe alles andere als eine floating-point-Zahl, um eine dieser Funktion führt eineTypeError
.Um die Eingaben zu prüfen, die Sie tun möchten, sollten Sie nicht verwenden
input()
. Verwenden Sie stattdessenraw_input()
,try:
zum konvertieren der string zurückgegeben wird, um einefloat
, und den Fehler behandeln, wenn dies fehlschlägt.Beispiel:
Als @J. F. Sebastian wies darauf hin,
Oder deutlicher,
raw_input
geht entlang einer saite, die einmal gesendeteval
werden bewertet und behandelt, als wäre es Befehl mit dem Wert des input-statt der input-string selbst.InformationsquelleAutor Sven Marnach
Einer der am meisten umfassende Möglichkeiten, zu überprüfen, ob eine Benutzereingabe eine gültige Zahl in Python versucht, es zu konvertieren, um ein float-Wert, und fangen Sie die Ausnahme.
Laut den Kommentaren und anderen Antworten, die Prüfung für NaN hat nichts zu tun mit Gültiger Benutzer-numerische Eingabe, sondern es wird geprüft, ob ein numerisches Objekt hat besonderen Wert Nicht um eine Zahl.
InformationsquelleAutor jsbueno
InformationsquelleAutor jfs
Können Sie den Eingang direkt:
InformationsquelleAutor Bora Caglayan