Операции сравнения работают не только с числами, но и со строками. В Python строки сравниваются лексикографически: посимвольно слева направо по числовым кодам символов (Unicode). Для латинских букв эти коды совпадают с ASCII.
print("apple" < "banana") # => True
print("cat" > "dog") # => False
print("abc" == "abc") # => True
print("hello" != "world") # => True
Здесь "apple" < "banana", потому что код a (97) меньше кода b (98) — первый символ решает исход сравнения. Код символа можно посмотреть так: ord('a') → 97.
print(ord("a")) # => 97
print(ord("b")) # => 98
Сравнение чувствительно к регистру — 'Z' (90) < 'a' (97). Пример сравнения, где первые буквы разного регистра:
print("Zebra" < "apple") # True — 'Z'(90) < 'a'(97)
print("apple" < "Banana") # False — 'a'(97) > 'B'(66)
print("Apple" < "apple") # False — 'A'(65) < 'a'(97)
Напишем функцию, которая проверяет, начинается ли слово с заданной буквы. Для этого возьмём первый символ строки и сравним его с нужной буквой.
def starts_with(word: str, letter: str) -> bool:
return word[0] == letter
print(starts_with("apple", "a")) # => True
print(starts_with("banana", "a")) # => False
Операции сравнения — это такие же выражения, как и арифметические. Это значит, что в них можно подставлять не только готовые значения, но и другие выражения как в примере выше: word[0]. Например, вместо числа можно использовать результат работы функции len, которая возвращает длину строки:
print(len("apple") > 3) # => True, потому что len("apple") = 5
print(len("hi") > 3) # => False, потому что len("hi") = 2
В примере выше, сначала выполняется функция len("apple"), результатом будет число 5. Потом это число сравнивается с 3. То есть порядок вычисления такой:
- Сначала считаются аргументы выражения (например, длина строки).
- Потом выполняется операция сравнения.
Так можно комбинировать разные операции, получая более сложные проверки.
Полезные предикаты
У строк в Python есть много встроенных методов-предикатов. Они возвращают True или False и помогают проверять разные свойства строки. Ниже приведены самые часто используемые:
print("hello".startswith("he")) # True — строка начинается с "he"
print("hello".endswith("lo")) # True — строка заканчивается на "lo"
print("123".isdigit()) # True — все символы являются цифрами
print("abc".isalpha()) # True — все символы являются буквами
print("abc123".isalnum()) # True — строка состоит только из букв и цифр
print(" ".isspace()) # True — строка содержит только пробелы
print("Hello".islower()) # False — не все символы в нижнем регистре
print("HELLO".isupper()) # True — все символы в верхнем регистре
print("Title Case".istitle()) # True — каждое слово начинается с заглавной буквы
Такие методы позволяют проверять строки на нужные условия прямо в коде, без написания дополнительных функций.