«Не число» или «NaN» - это особый тип значения с плавающей запятой согласно стандарту IEEE-754.Функции numpy.isnan()
и math.isnan()
проверяют, имеет ли данное число с плавающей запятой это специальное значение (или одно из нескольких значений «NaN»).Передача чего-либо, кроме числа с плавающей запятой, в одну из этих функций приводит к TypeError
.
. Чтобы выполнить проверку ввода, которую вы хотели бы выполнить, вы не должны использовать input()
.Вместо этого используйте raw_input()
, try:
, чтобы преобразовать возвращаемую строку в float
и обработать ошибку, если это не удалось.
Пример:
def input_float(prompt):
while True:
s = raw_input(prompt)
try:
return float(s)
except ValueError:
print "Please enter a valid floating point number."
Как отметил @JF Себастьян,
input()
делает eval(raw_input(prompt))
, скорее всего, это не то, что вам нужно.
Или, если быть более точным, raw_input
передает строку, которая после отправки в eval
будет оцениваться и обрабатываться так, как если бы это была команда со значением ввода, а не строкой вводасам.