- Как проверить, является ли строка числом на Python
- Проверка на число с помощью метода isdigit()
- Проверка на число с помощью конструкции Try-Except
- Python: проверка, является ли переменная числом
- Использование функции type()
- numbers.Number
- Использование блока try-except
- String.isnumeric()
- String.isdigit()
- Проверка на число
- isdigit, isnumeric и isdecimal
- Проверка с помощью исключения
- Для целых чисел
- Python операции со строками
- isalnum Python
- Пример 1. Работа isalnum()
- Пример 2. Работа isalnum()
- isalpha Python
- Пример 1. Работа isalpha
- Пример 2. Работа isalpha
- Python isdecimal
- Пример 1. Работа с isdecimal
- isdigit Python
- Пример. Работа с методом isdigit
- islower Python
- Как использовать метод islower() в программе?
- Python isnumeric
- Пример. Работа с методом isnumeric()
- isupper Python
- Пример 1: Возвращаемое значение isupper()
Как проверить, является ли строка числом на Python
Для того чтобы проверить, является ли строка числом, в Python можно воспользоваться разными способами, как сложными, так и простыми. Рассмотрим два простых способа с использованием стандартных функций.
Проверка на число с помощью метода isdigit()
isdigit() это стандартный строковой метод языка Python, который возвращает True , если строка состоит минимум из одного символа, и все символы строки являются цифрами. В противном случае возвращает False .
>>> str = "35" >>> str.isdigit() True >>> str = "bear" >>> str.isdigit() False >>> str = "bear35" >>> str.isdigit() False >>> str = "3.5" >>> str.isdigit() False
Стоит обратить внимание на последнюю проверку из примера выше. Строка содержащая число с плавающей точкой (float) – 3.5 , тоже не прошло проверку. Поскольку остальные символы, включая знак минуса и точку, не являются цифрами, то метод isdigit() также будет возвращать False при проверке отрицательных чисел, и чисел с плавающей точкой.
Проверка на число с помощью конструкции Try-Except
Чтобы избежать промахов, в случаях когда строка содержит отрицательное число или число с плавающей точкой, используем конструкцию Try-Except для обработки исключений:
def is_number(str): try: float(str) return True except ValueError: return False
В функции is_number() , на третьей строке происходит попытка преобразования строки в число с плавающей точкой. Если успешно, возвращается True , если строка кроме цифр, знака минуса и точки, содержит другие символы, программа вернет False .
>>> is_number('10') True >>> is_number('3.5') True >>> is_number('-5') True >>> is_number('five') False
Вот такие два простых способа, чтобы проверить, является ли строка числом.
Python: проверка, является ли переменная числом
В этой статье мы рассмотрим несколько примеров того, как проверить, является ли переменная числом в Python.
Python имеет динамическую типизацию. Нет необходимости объявлять тип переменной во время ее создания — интерпретатор определяет тип во время выполнения:
variable = 4 another_variable = 'hello'
Кроме того, переменную можно переназначить новому типу в любой момент:
# Присвойте числовое значение variable = 4 # Переназначить строковое значение variable = 'four'
Этот подход, имея преимущества, также знакомит нас с несколькими проблемами. А именно, когда мы получаем переменную, мы обычно не знаем, какого она типа. Если мы ожидаем число, но получаем неопределенный variable , мы захотим проверить, является ли он числом, прежде чем выполнять какие-то действия.
Использование функции type()
В Python функция type() возвращает тип аргумента:
myNumber = 1 print(type(myNumber)) myFloat = 1.0 print(type(myFloat)) myString = 's' print(type(myString))
Таким образом, способ проверки типа:
myVariable = input('Enter a number') if type(myVariable) == int or type(myVariable) == float: # Do something else: print('The variable is not a number')
Здесь мы проверяем, является ли тип переменной, введенной пользователем, int или float , продолжая выполнение программы, если это так. В противном случае мы уведомляем пользователя, что он ввел переменную, отличную от Number. Помните, что если вы сравниваете несколько типов, например int или float , вам придется использовать эту type() функцию оба раза.
Если бы мы просто сказали if type(var) == int or float , что вроде бы нормально, возникла бы проблема:
myVariable = 'A string' if type(myVariable) == int or float: print('The variable a number') else: print('The variable is not a number')
Это, независимо от ввода, возвращает:
Это потому, что Python проверяет значения истинности утверждений. Переменные в Python могут быть оценены как True за исключением False , None , 0 и пустых [] , <> , set() , () , » или «» .
Следовательно, когда мы пишем or float в нашем условии, это эквивалентно записи or True , которая всегда будет возвращать True .
numbers.Number
Хороший способ проверить, является ли переменная числом — это модуль numbers . Вы можете проверить, является ли переменная экземпляром класса Number , с помощью функции isinstance() :
import numbers variable = 5 print(isinstance(5, numbers.Number))
Примечание. Этот подход может неожиданно работать с числовыми типами вне ядра Python. Некоторые фреймворки могут иметь нечисловую реализацию Number , и в этом случае этот подход вернет ложный результат False .
Использование блока try-except
Другой способ проверить, является ли переменная числом — использовать блок try-except. В блоке try мы преобразуем данную переменную в int или float . Успешное выполнение блока try означает, что переменная является числом, то есть либо int , либо float :
myVariable = 1 try: tmp = int(myVariable) print('The variable a number') except: print('The variable is not a number')
Это работает как для int, так и для float, потому что вы можете привести int к float и float к int.
Если вы специально хотите только проверить, является ли переменная одной из них, вам следует использовать функцию type() .
String.isnumeric()
В Python isnumeric() — это встроенный метод, используемый для обработки строк. Методы issnumeric() возвращают «True», если все символы в строке являются числовыми символами. В противном случае он возвращает «False».
Эта функция используется для проверки, содержит ли аргумент все числовые символы, такие как: целые числа, дроби, нижний индекс, верхний индекс, римские цифры и т.д. (Все написано в юникоде)
string = '123ayu456' print(string.isnumeric()) string = '123456' print( string.isnumeric())
String.isdigit()
Метод isdigit() возвращает истину, если все символы являются цифрами, в противном случае значение False.
Показатели, такие как ², также считаются цифрами.
print("\u0030".isdigit()) # unicode for 0 print("\u00B2".isdigit()) # unicode for ²
Проверка на число
Достаточно часто требуется узнать: записано ли в переменной число. Такая ситуация может возникнуть при обработке введенных пользователем данных. При чтении данных из файла или при обработке полученных данных от другого устройства.
В Python проверка строки на число можно осуществить двумя способами:
- Проверить все символы строки что в них записаны цифры. Обычно используется для этого функция isdigit.
- Попытаться перевести строку в число. В Python это осуществляется с помощью методов float и int. В этом случае обрабатывается возможное исключение.
Рассмотрим как применяются эти способы на практике.
isdigit, isnumeric и isdecimal
У строк есть метод isdigit, который позволяет проверить, являются ли символы, являются ли символы, из которых состоит строка цифрами. С помощью этого метода мы можем проверить, записано ли в строку целое положительное число или нет. Положительное — это потому, что знак минус не будет считаться цифрой и метод вернет значение False.
a = '0251' print(a.isdigit()) True
Если в строка будет пустой, то функция возвратит False.
Методы строки isnumeric и isdecimal работают аналогично. Различия в этих методах только в обработке специальных символов Unicode. А так как пользователь будет вводить цифры от 0 до 9, а различные символы, например, дробей или римских цифр нас не интересуют, то следует использовать функцию isdigit.
Проверка с помощью исключения
Что же делать, если требуется проверить строку на отрицательное число. В Python с помощью isdigit не удастся определить отрицательное число или число с плавающей точкой. В этом случае есть универсальный и самый надежный способ. Надо привести строку к вещественному числу. Если возникнет исключение, то значит в строке записано не число.
Приведем функцию и пример ее использования:
def is_number(str): try: float(str) return True except ValueError: return False a = '123.456' print(is_number(a)) True
Для целых чисел
Аналогично можно сделать и проверку на целое число:
def is_int(str): try: int(str) return True except ValueError: return False a = '123.456' print(is_int(a)) False
Python операции со строками
В Python операции со строками можно производить различными методами. Практически для каждой операции есть свои методы. В статьте методы строк Python, которая является частью этой статьи, рассмотрены дополнительные методы, советую вам с ними ознакомиться.
isalnum Python
Метод isalnum python возвращает значение True , в случае, если все символы в строке являются буквами и цифрами. В противном случаем метод isalnum() вернет нам значение False .
Пример 1. Работа isalnum()
name = "M234onica" print(name.isalnum()) # С пробелом name = "M3onica Gell22er " print(name.isalnum()) name = "Mo3nicaGell22er" print(name.isalnum()) name = "133" print(name.isalnum()) #РезультатПример 2. Работа isalnum()
name = "M0n1caG3ll3r" if name.isalnum() == True: print("Все символы строки (name) являются буквами и цифрами.") else: print("Символы не являются буквенно-цифровыми.")isalpha Python
Метод isalpha Python, проверяет являются ли все символы в строке алфавитными буквами, в случае если это так, возвращает True , иначе False .
Пример 1. Работа isalpha
name = "Monica" print(name.isalpha()) # С пробелом name = "Monica Geller" print(name.isalpha()) # С цифрами name = "Mo3nicaGell22er" print(name.isalpha()) #РезультатПример 2. Работа isalpha
name = "MonicaGeller" if name.isalpha() == True: print("Все строки являются буквенными") else: print("Не являются буквенными") #РезультатAll characters are alphabetsPython isdecimal
Метод Python isdecimal проверяет, есть ли в строке десятичные символы. В случае если десятичные символы присутствуют, то он возвращает нам значение True , иначе возвращает значение False .
Пример 1. Работа с isdecimal
s = "28212" print(s.isdecimal()) # contains alphabets s = "32ladk3" print(s.isdecimal()) # contains alphabets and spaces s = "Mo3 nicaG el l22er" print(s.isdecimal()) #РезультатТак же существуют еще два метода isdigit() и isnumeric() , которые так же проверяют содержит ли строка цифровые символы, советую вам так же с ними ознакомиться.
isdigit Python
В предыдущем блоке, я описал метод isdecimal() , метод isdigit() работает похожим образом. Данный метод вернет нам значение True , еси все символы в строке являются цифрами, или false в противном случае.
str1 = '342' print(str1.isdigit()) str2 = 'python' print(str2.isdigit()) # Результат: True # FalseПример. Работа с методом isdigit
s = "28212" print(s.isdigit()) # Содержит буквы и цифры s = "Mo3 nicaG el l22er" print(s.isdigit()) #РезультатВ Python надстрочные и подстрочные индексы так же считаются цифровым символом. Соответственно, в случае если в строке содержатся такие символы, то метод isdigit() вернет нам значение True .
Римские цифры к примеру считаются цифровыми символами, но не цифрами, соответственно метод isdigit() вернет нам значение false .
Для проверки, является ли символ числовым, вы можете воспользоваться методом isnumeric() .
islower Python
Метод islower python проверяет являются ли все буквы в строке, буквами нижнего регистра. В случае, если все буквы являются буквами нижнего регистра, метод islower() вернет нам значение True , в случае если в строке содержится хотя бы один заглавный символ, мы получим значение False .
s = 'this is good' print(s.islower()) s = 'th!s is a1so g00d' print(s.islower()) s = 'this is Not good' print(s.islower()) #РезультатКак использовать метод islower() в программе?
s = 'this is good' if s.islower() == True: print('Does not contain uppercase letter.') else: print('Contains uppercase letter.') s = 'this is Good' if s.islower() == True: print('Does not contain uppercase letter.') else: print('Contains uppercase letter.') #Результат Does not contain uppercase letter. Contains uppercase letter.Совместно с методом islower() настоятельно советую ознакомиться с методом capitalize().
Python isnumeric
Метод isnumeric() возвращает значение True , в случае если все символы в строке являются числовыми символами. В противном случае метод isnumeric() вернет значение False .
Немного разберемся, что является числовым символом в Python.
- Десятичные символы — 0,1,2,3,4,5
- Цифры — Нижний и верхний индекс
- Символы — Дробь, римские цифры, числители валют
Пример. Работа с методом isnumeric()
s = '1242323' print(s.isnumeric()) #s = '²3455' s = '\u00B23455' print(s.isnumeric()) # s = '½' s = '\u00BD' print(s.isnumeric()) s = '1242323' s='python12' print(s.isnumeric()) #Результатisupper Python
Метод isupper Python проверяет находятся ли все символы в строке в верхнем регистре? Метод isupper() возвращает два параметра.
- True — в случае если все символы в строке находятся в верхнем регистре
- False — в случае если все символы в строке находятся в нижнем регистре
Пример 1: Возвращаемое значение isupper()
# Пример строки string = "THIS IS GOOD!" print(string.isupper()); # Цифры и буквы string = "THIS IS ALSO G00D!" print(string.isupper()); # Строка с нижним регистром string = "THIS IS not GOOD!" print(string.isupper()); #Результат