На этом шаге мы перечислим методы, используемые для проверки содержимого строки, и приведем пример их использования.
Для проверки типа содержимого строки предназначены следующие методы:
>>> "0123".isalnum(), "123abc".isalnum(), "abc123".isalnum() (True, True, True) >>> "строка".isalnum() True >>> "".isalnum(), "123 abc".isalnum(), "abc, 123".isalnum() (False, False, False)
>>> "string".isalpha(), "строка".isalpha(), "".isalpha() (True, True, False) >>> "123abc".isalpha(), "str str".isalpha(), "st,st".isalpha() (False, False, False)
>>> "0123".isdigit(), "123abc".isdigit(), "abc123".isdigit() (True, False, False)
>>> "123".isdecimal(), "123стр".isdecimal() (True, False)
>>> "\u2155".isnumeric(), "\u2155".isdigit() (True, False) >>> print("\u2155") # Выведет символ 1/5 ⅕
>>> "STRING".isupper(), "СТРОКА".isupper(), "".isupper() (True, True, False) >>> "STRING1".isupper(), "СТРОКА, 123".isupper(), "123".isupper() (True, True, False) >>> "string".isupper(), "STRing".isupper() (False, False)
>>> "string".islower(), "строка".islower(), "".isupper() (True, True, False) >>> "string1".islower(), "строка, 123".islower(), "123".islower() (True, True, False) >>> "Строка".islower(), "STRing".islower() (False, False)
>>> "Str Str".istitle(), "Стр Стр".istitle() (True, True) >>> "Str Str 123".istitle(), "Стр Стр 123".istitle() (True, True) >>> "Str str".istitle(), "Стр стр".istitle() (False, False) >>> "".istitle(), "123".istitle() (False, False)
>>> "123".isprintable() True >>> "PHP Python".isprintable() True >>> "\n".isprintable() False
>>> "".isspace(), " \n\r\t".isspace(), "str str".isspace() (False, True, False)
>>> "s".isidentifier() True >>> "func".isidentifier() True >>> "123func".isidentifier() False
Следует иметь в виду, что метод isidentifier() лишь проверяет, удовлетворяет ли заданное имя правилам языка. Он не проверяет, совпадает ли это имя с ключевым словом Python. Для этого надлежит применять функцию iskeyword(), объявленную в модуле keyword, которая возвращает True, если переданная ей строка совпадает с одним из ключевых слов:
>>> import keyword >>> keyword.iskeyword("else") True >>> keyword.iskeyword("elsewhere") False
Переделаем программу из 30 шага, которая находит сумму произвольного количества целых чисел, введенных пользователем, таким образом, чтобы при вводе строки вместо числа программа не завершалась с фатальной ошибкой. Кроме того, предусмотрим возможность ввода отрицательных целых чисел:
# -*- coding: utf-8 -*- print("Введите слово 'stop' для получения результата") summa = 0 while True: x = input("Введите число: ") if x == "stop": break # Выход из цикла if x == "": print("Вы не ввели значение!") continue if x[0] == "-": # Если первым символом является минус if not x[1:].isdigit(): # Если фрагмент не состоит из цифр print("Необходимо ввести число, а не строку!") continue else: # Если минуса нет, то проверяем всю строку if not x.isdigit(): # Если строка не состоит из цифр print("Необходимо ввести число, а не строку!") continue x = int(x) # Преобразуем строку в число summa += x print("Сумма чисел равна: ", summa) input()
Результат ее выполнения приведен на рисунке 1.
Рис.1. Результат выполнения программы
На следующем шаге мы рассмотрим тип данных bytes.