Определение, является ли ввод числом

#python

#python

Вопрос:

Как мне узнать, является ли ввод моего пользователя числом?

 input = raw_input()

if input = "NUMBER":
    do this
else:
    do this
  

Что такое «ЧИСЛО» в данном случае?

Ответ №1:

Зависит от того, что вы подразумеваете под «числом». Если любое число с плавающей запятой подходит, вы можете использовать

 s = raw_input()
try:
    x = float(s)
except ValueError:
    # no number
else:
    # number
  

Комментарии:

1. Если вы хотите также поддерживать комплексные числа, используйте complex() . Для простых целых чисел int() должно быть достаточно.

Ответ №2:

Если вы тестируете на наличие целых чисел, вы можете использовать функцию isdigit:

 x = "0042"

x.isdigit()
  

Верно

Комментарии:

1. Как ни печально, x = "0.5"; x.isdigit() == False . Не подходит для чисел с плавающей точкой.

2. Также не работает для отрицательных чисел и оснований, отличных от 10.

Ответ №3:

string = raw_input(‘пожалуйста, введите число:’)

Проверить, является ли символ цифрой, несложно, как только вы поймете, что символы — это просто номера кода ASCII. Символ ‘0’ — это ASCII-код 48, а символ ‘9’ — это ASCII-код 57. ‘1’-‘8’ находятся между ними. Таким образом, вы можете проверить, является ли конкретный символ цифрой, написав:

validNumber=False

в то время как недопустимый номер:

string = raw_input(‘пожалуйста, введите число:’)

i= 0

validNumber=True

в то время как я

если нет (строка [i]>=’0′ и строка[i]<=’9′):

validNumber=False

print ‘Вы ввели недопустимое число. Пожалуйста, попробуйте еще раз ‘

разрыв

i=i 1

Ответ №4:

Ответ, который я нашел в другом месте на StackOverflow [я забыл где], дал следующий код для проверки, является ли что-то числом:

 #This checks to see if input is a number
def is_number(s):
    try:
        float(s)
        return True
    except ValueError:
        return False