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')
Это, независимо от ввода, возвращает:
The variable is 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))
True
Примечание. Этот подход может неожиданно работать с числовыми типами вне ядра 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())
False True
String.isdigit()
Метод isdigit() возвращает истину, если все символы являются цифрами, в противном случае значение False.
Показатели, такие как ², также считаются цифрами.
print("\u0030".isdigit()) # unicode for 0 print("\u00B2".isdigit()) # unicode for ²
True True
Проверьте, определена ли переменная в Python
В этом посте мы обсудим, как проверить, определена ли переменная в Python.
1. Использование locals() функция
Чтобы проверить, определена ли переменная в локальной области, вы можете использовать locals() функция, которая возвращает словарь, представляющий текущую локальную таблицу символов.
if ‘x’ in locals ( ) :
print ( ‘Variable exist.’ )
print ( ‘Variable don\’t exist.’ )
if __name__ == ‘__main__’ :
foo ( ) # Переменная существует.
2. Использование vars() функция
В качестве альтернативы вы можете использовать no-arg vars() функция, которая действует как locals() функция.
if ‘x’ in vars ( ) :
print ( ‘Variable exist.’ )
print ( ‘Variable don\’t exist.’ )
if __name__ == ‘__main__’ :
foo ( ) # Переменная существует.
3. Использование dir() функция
Без аргументов, dir() функция возвращает список имен в текущей локальной области видимости.
if ‘x’ in dir ( ) :
print ( ‘Variable exist.’ )
print ( ‘Variable don\’t exist.’ )
if __name__ == ‘__main__’ :
foo ( ) # Переменная существует.
4. Использование globals() функция
Наконец, чтобы проверить существование глобальной переменной, вы можете использовать globals() функция. Он возвращает словарь, представляющий текущую глобальную таблицу символов.
if ‘x’ in globals ( ) :
print ( ‘Variable exist.’ )
print ( ‘Variable don\’t exist.’ )
if __name__ == ‘__main__’ :
foo ( ) # Переменная существует.
Это все, что касается определения того, определена ли переменная в Python.
Оценить этот пост
Средний рейтинг 5 /5. Подсчет голосов: 24
Голосов пока нет! Будьте первым, кто оценит этот пост.
Сожалеем, что этот пост не оказался для вас полезным!
Расскажите, как мы можем улучшить этот пост?
Спасибо за чтение.
Пожалуйста, используйте наш онлайн-компилятор размещать код в комментариях, используя C, C++, Java, Python, JavaScript, C#, PHP и многие другие популярные языки программирования.
Как мы? Порекомендуйте нас своим друзьям и помогите нам расти. Удачного кодирования 🙂
Подписывайся
0 Комментарии
Встроенные отзывы
Просмотреть все комментарии
Загрузить больше комментариев
Просматривать
Подпишитесь на новые публикации
- Все проблемы
- Практика DSA
- 100 самых популярных задач
- 50 лучших классических задач
- Лучшие алгоритмы
- Компилятор С/С++
- Компилятор Java
- Компилятор Python
- Компилятор JavaScript
- компилятор PHP
- Компилятор C#
- Свяжитесь с нами
- Политика конфиденциальности
- условия обслуживания
- Подпишитесь на новые публикации
Techie Delight © 2023 Все права защищены.
Этот веб-сайт использует файлы cookie. Используя этот сайт, вы соглашаетесь с использованием файлов cookie, нашей политикой, условиями авторского права и другими условиями. Читайте наши Политика конфиденциальности. Понятно
Проверка является ли переменная строковой в Python
Иногда мы хотим проверить, является ли переменная или входной аргумент String, а затем выполнять только дальнейшие действия. Мы можем использовать функцию isinstance(), чтобы проверить, является ли переменная строковой или нет.
Давайте посмотрим на простой пример, чтобы проверить, является ли переменная строкой или нет.
i = 5 # not str print(isinstance(i, str)) s = 'abc' # string print(isinstance(s, str))
False True
Ввод функции
Если вы посмотрите на пример выше, мы создаем переменную, поэтому мы уже знаем ее тип. Однако, если нам нужно определить функцию для обработки входной строки, рекомендуется проверить, является ли введенный вход строкой или нет.
Допустим, у нас есть функция, определенная как:
def process_string(input_str): print('Processing', input_str)
Если у нас есть следующий фрагмент кода для выполнения этой функции:
process_string('abc') process_string(100)
Processing abc Processing 100
Поскольку у нас нет проверки для входного аргумента, наша функция также обрабатывает нестроковые аргументы.
Если мы хотим, чтобы наша функция выполняла свою логику только для строкового аргумента, мы можем добавить проверку с помощью функции isinstance().
def process_string(input_str): if (isinstance(input_str, str)): print('Processing', input_str) else: print('Input Must be String')
Теперь, когда мы вызываем эту функцию как:
process_string('abc') process_string(100)
Processing abc Input Must be String
Мы можем использовать функцию isinstance() для проверки типа любой переменной или аргументов функции.
Проверка на существование переменной python
В функции не передаётся никакого значения, но, по сути, для их взаимодействия я должен ввести какую-то общую переменную Я так и сделал, создав строковую переменную, и возвращая её как результат Но осталась проблема — при первом вызове функции мне нужно создать эту строковую переменную. Могу ли я реализовать её создание таким образом:(дальше псевдокод)
if not variable.exist(): string = ''
Как это можно описать в коде?
Отслеживать
задан 6 окт 2019 в 13:01
Artyom Lazovikov Artyom Lazovikov
559 1 1 золотой знак 7 7 серебряных знаков 18 18 бронзовых знаков
3 ответа 3
Сортировка: Сброс на вариант по умолчанию
Вообще не понял задачи 🙂 но псевдокод переводится в код вот так. Локальная переменная:
if 'variable' not in locals(): variable = ''
if 'variable' not in globals(): variable = ''
Отслеживать
ответ дан 6 окт 2019 в 13:09
25.9k 7 7 золотых знаков 31 31 серебряный знак 48 48 бронзовых знаков
Глобальные переменные — вообще очень скользкий инструмент, а в вашем случае можно легко обойтись без них:
def five(val=None): if val is None: return 5 # Если функция вызвана с пустыми скобками - просто возвращает 5 else: # А если в скобках что-то было # То здесь выполняется какая-то другая логика с этим значением
Отслеживать
ответ дан 6 окт 2019 в 14:01
20.3k 4 4 золотых знака 25 25 серебряных знаков 52 52 бронзовых знака
import inspect class ArithmeticFunc: def __init__(self, val): self._val = val def __add__(self, other): return type(self)(self._val + other._val) def __mul__(self, other): return type(self)(self._val * other._val) def __call__(self, func=None): if func is None: return self return func(self) @classmethod def lookup(cls, name): mapping = < 'four': 4, 'five': 5, 'seven': 7, 'nine': 9, >try: num = mapping[name] except KeyError as ex: raise LookupError(ex) return cls(num) def __repr__(self): return str(self) def __str__(self): return str(self._val) def operator(func): def binded_to_first(first): def binded_to_second(second): return func(first, second) return binded_to_second return binded_to_first def set_up(): importer = inspect.currentframe().f_back importer.f_globals.update(< 'times': operator(lambda first, second: second * first), 'plus': operator(lambda first, second: first + second) >) for name in importer.f_code.co_names: if ( (name in importer.f_globals) or (name in importer.f_locals) or (name in dir(__builtins__)) ): continue try: importer.f_globals[name] = ArithmeticFunc.lookup(name) except LookupError: pass def main(): set_up() print(seven(times(five()))) # 35 print(four(plus(nine()))) # 15 if __name__ == '__main__': main()
Отслеживать
ответ дан 6 окт 2019 в 16:35
Andrio Skur Andrio Skur
2,883 3 3 золотых знака 14 14 серебряных знаков 27 27 бронзовых знаков
-
Важное на Мете
Похожие
Подписаться на ленту
Лента вопроса
Для подписки на ленту скопируйте и вставьте эту ссылку в вашу программу для чтения RSS.
Дизайн сайта / логотип © 2023 Stack Exchange Inc; пользовательские материалы лицензированы в соответствии с CC BY-SA . rev 2023.10.27.43697
Нажимая «Принять все файлы cookie» вы соглашаетесь, что Stack Exchange может хранить файлы cookie на вашем устройстве и раскрывать информацию в соответствии с нашей Политикой в отношении файлов cookie.