How to make a check on the number? For example:

a = float(input('Текст')) 

How to check if user enters string? At the same time I need to write to him that this is not a number.

2 answers 2

Check

This method returns True if it received any string that can be recognized as a floating point number.

 def isfloat(value): try: float(value) return True except ValueError: return False 

To answer the user, you can use the ternary operator:

 print('это число' if isfloat(input('введите число')) else 'это не число') 

Or the usual condition:

 a = input('введите число') if isfloat(a): print('это число') else print('это не число') 

This is what is and is not a "number" ( float ) in Python:

 #Команда isFloat? Комментарий #------------------------------------ -------- -------------------------------- print(isfloat("")) #False Пустая строка print(isfloat("127")) #True Распознаваемая строка print(isfloat(True)) #True Истина - это число print(isfloat("True")) #False "Истина" - это не число! print(isfloat(False)) #True Зато Ложь - число print(isfloat("123.456")) #True Десятичное число print(isfloat(" -127 ")) #True Пробелы вокруг числа обрезаются print(isfloat("\t\n12\r\n")) #True Включая переносы строк print(isfloat("NaN")) #True Not a number - число! print(isfloat("NaNanananaBATMAN")) #False Но не в составе большей строки print(isfloat("-iNF")) #True Минус бесконечность print(isfloat("123.E4")) #True Экспоненциальная нотация print(isfloat(".1")) #True Только мантисса print(isfloat("1,234")) #False Дискриминация, запятая не считается разделителем! print(isfloat(u'\x30')) #True Unicode - это число print(isfloat("NULL")) #False "Null" - обычная строка print(isfloat(0x3fade)) #True Шестнадцатеричное число print(isfloat("6e7777777777777")) #True Насколько большое, что считается бесконечным print(isfloat("1.797693e+308")) #True Максимальное значение float print(isfloat("infinity")) #True То же что inf - бесконечность print(isfloat("infinityandBEYOND")) #False Но не в составе большей строки print(isfloat("12.34.56")) #False Только одна точка print(isfloat(u'四')) #False Японский символ '4' это не float. print(isfloat("#56")) #False знак фунта стерлингов print(isfloat("56%")) #False Проценты не обрабатываются print(isfloat("0E0")) #True Странная, но экспонента print(isfloat(0**0)) #True Ноль в степени ноль print(isfloat("-5e-5")) #True Отрицательная степень print(isfloat("+1e1")) #True Можно явно указать, что число положительное print(isfloat("+1e1^5")) #False Нераспознаваемый экспоненциальный формат print(isfloat("+1e1.3")) #False Экспонента должна быть целым числом print(isfloat("-+1")) #False Слишком много знаков print(isfloat("(1)")) #False Скобки препятствуют распознаванию 

This table is a translation of the answer given by Eric Leschinski to en.SO. I commented out the extra parts of the line so that it can be copied and executed as code.

  • any .isdecimal() character is a number, for example: float('៣') == 3.0 - jfs
  • @jfs from the phone, I see just a rectangle. :) I will read and answer tomorrow. - Nick Volynkin
  • Your answer creates the (erroneous) impression that only digits in the ASCII range are recognized. Throw away a phone that does not work with Unicode in 2016. All such examples can be generated using: [c for c in map(chr, range(sys.maxunicode+1)) if c.isdecimal()] (a set of characters that float recognizes as digits) - jfs
  • one
    @jfs send a new one, throw this one out) - Nick Volynkin
 try: a = float(input('Текст')) except ValueError: print('Введено не число')