Isupper: примеры (PYTHON)

Функция isupper для строк в языке Python
Раздел: Строки, Проверка регистра
isupper: bool

Описание метода isupper

Метод str.isupper() является встроенным методом строк (string) в Python. Он применяется для проверки, содержатся ли в строке хотя бы один символ, способный быть в верхнем регистре (например, буквы), и все ли такие символы в строке приведены к верхнему регистру.

Основное назначение - определение, состоит ли текст только из заглавных букв.

Аргументы: Метод не принимает никаких аргументов.

Возвращаемое значение: Булево значение (True или False).

  • Возвращает True, если все символы в строке, которые могут быть приведены к верхнему регистру (т.е. буквы), являются заглавными, и при этом в строке есть хотя бы один такой символ.
  • Возвращает False в остальных случаях: если строка пуста, если все символы не являются буквами (например, цифры, пробелы, знаки препинания), или если хотя бы одна буква в строке строчная.

Простые примеры использования

Базовые случаи применения метода isupper().

print("PYTHON".isupper())
True
print("Python".isupper())
False
print("123ABC!".isupper())
True
print("hello".isupper())
False
print("123!".isupper())
False
print("".isupper())
False

Похожие строковые методы в Python

  • str.islower() - проверяет, все ли буквенные символы в строке строчные.
  • str.istitle() - проверяет, начинаются ли все слова в строке с заглавной буквы.
  • str.isalpha() - проверяет, состоит ли строка только из букв.
  • str.isdigit() / str.isnumeric() / str.isdecimal() - проверяют, состоит ли строка только из цифр.
  • str.isalnum() - проверяет, состоит ли строка только из букв и цифр.
  • str.isspace() - проверяет, состоит ли строка только из пробельных символов.

Метод isupper() предпочтительнее использовать, когда требуется именно проверка регистра буквенных символов, а не наличия букв или других символов. Например, для валидации пароля, который должен содержать заглавные буквы.

Частые ошибки и недоразумения

1. Проверка пустой строки или строк без букв. Метод возвращает False, что иногда может быть неочевидным.

print("123!".isupper())  # Нет букв вообще
print("".isupper())     # Пустая строка
False
False

2. Смешение с методом upper(). isupper() - это проверка, а upper() - преобразование строки.

s = "text"
print(s.upper())   # Преобразует в "TEXT"
print(s.isupper()) # Проверяет, является ли исходная строка заглавной (False)
TEXT
False

3. Ожидание True для строк, содержащих не-буквенные символы. Метод корректно работает с такими строками, если все буквы в них заглавные.

print("HELLO 123!".isupper())  # Буквы заглавные, есть другие символы
True

Изменения в последних версиях Python

Метод str.isupper() не претерпел значительных изменений в последних основных версиях Python (3.x). Его поведение остается стабильным и соответствует первоначальному замыслу.

Расширенные примеры применения

1. Валидация ввода пользователя: Проверка, что введенный текст содержит хотя бы одну заглавную букву.

Пример python
user_input = "MyPassword123"
has_upper = any(char.isupper() for char in user_input)
print(f"Строка содержит заглавные буквы: {has_upper}")
Строка содержит заглавные буквы: True

2. Фильтрация списка строк: Отбор строк, полностью написанных заглавными буквами (и содержащих хотя бы одну букву).

Пример python
words = ["HELLO", "World", "123", "U.S.A.", "", "lower"]
upper_words = [word for word in words if word.isupper()]
print(upper_words)
['HELLO', 'U.S.A.']

3. Анализ текста: Подсчет количества слов в тексте, написанных заглавными буквами.

Пример python
text = "Это ПРИМЕР текста. SOME WORDS здесь WRITTEN in CAPITALS."
words = text.split()
count_upper = sum(1 for word in words if word.isupper())
print(f"Слов в верхнем регистре: {count_upper}")
Слов в верхнем регистре: 3

4. Обработка с учетом локали: Важно помнить, что метод работает с символами Unicode. Для некоторых алфавитов понятие регистра может отсутствовать.

Пример python
print("ΓΕΙΑ ΣΟΥ".isupper())  # Греческие заглавные буквы
print("Привет".isupper())    # Кириллица, строчные
True
False

5. Комбинирование с другими строковыми методами:

Пример python
s = "  HELLO  "
# Проверка после удаления пробелов
print(s.strip().isupper())
True

Аналоги метода isupper в других языках

JavaScript: Прямого аналога нет, обычно используют регулярные выражения или сравнивают строку с её версией в верхнем регистре.

function isUpper(str) {
  return /^[^a-z]*$/.test(str) && /[A-Z]/.test(str);
}
console.log(isUpper("ABC")); // true
console.log(isUpper("AbC")); // false
true
false

Java: Метод String.matches() с регулярным выражением.

String str1 = "JAVA";
System.out.println(str1.matches("[A-Z]+")); // true, но требует только буквы
// Более точный аналог:
boolean isUpper = str1.chars().anyMatch(Character::isLetter) && str1.equals(str1.toUpperCase());
true

PHP: Функция ctype_upper() проверяет символы в строке, но вернет false, если строка содержит не-буквы.

echo ctype_upper('ABC') ? 'true' : 'false'; // true
echo ctype_upper('123') ? 'true' : 'false'; // false
true
false

C#: Аналогично Java, через сравнение с ToUpper() и проверку наличия букв.

string str = "CSharp";
bool isUpper = str.Any(char.IsLetter) && str.All(c => !char.IsLetter(c) || char.IsUpper(c));
Console.WriteLine(isUpper); // false
False

Go: Нет встроенной функции, требуется реализация через обход строки.

SQL (например, PostgreSQL): Можно использовать оператор ~ для регулярных выражений.

SELECT 'HELLO' ~ '^[^a-z]*$' AND 'HELLO' ~ '[A-Z]' AS is_upper;
true

Отличия от Python: во многих языках нет готового метода, и логика проверки может отличаться в части обработки не-буквенных символов.

питон isupper function comments

En
Isupper Check if all characters are uppercase