Страницы

Поиск по вопросам

четверг, 19 декабря 2019 г.

Python 3 Проверка на дробное число введённое пользователем

#python #python_3x #input #валидация


Как сделать проверку на число? Например:

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


Как проверить а, если пользователь введет строку? При этом мне ему нужно написать,
что это не число.
    


Ответы

Ответ 1



Проверка Этот метод возвращает True, если получил любую строку, которую можно распознать как число с плавающей точкой. def isfloat(value): try: float(value) return True except ValueError: return False Чтобы дать ответ пользователю, вы можете использовать тернарный оператор: print('это число' if isfloat(input('введите число')) else 'это не число') Или обычное условие: a = input('введите число') if isfloat(a): print('это число') else print('это не число') Вот что является и не является "числом" (float) в 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 Скобки препятствуют распознаванию Эта таблица - перевод ответа, данного Eric Leschinski на en.SO. Я закомментировал лишние части строки, чтобы ее можно было скопировать и выполнить как код.

Ответ 2



try: a = float(input('Текст')) except ValueError: print('Введено не число')

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

Отправить комментарий