Python

Как проверить первый символ строки в Python: индекс 0, startswith и пустая строка

Первый символ строки в Python можно проверить через индекс 0: text[0]. Но перед этим нужно убедиться, что строка не пустая, иначе Python выдаст IndexError

Простой пример

text = "Python"

if text[0] == "P":
    print("Строка начинается с P")

В Python индексация начинается с нуля, поэтому text[0] — первый символ, text[1] — второй, text[-1] — последний

Проверка первого символа через text[0]

word = "apple"

if word[0] == "a":
    print("Слово начинается с a")
else:
    print("Слово начинается с другой буквы")

Такой способ удобен, когда нужен именно один первый символ

Но если строка может быть пустой, код опасен

word = ""
print(word[0])

Ошибка

IndexError: string index out of range

Python не может взять первый символ, потому что в строке нет ни одного символа

Безопасная проверка с условием

word = ""

if word and word[0] == "a":
    print("Слово начинается с a")
else:
    print("Слово пустое или начинается не с a")

Условие word проверяет, что строка не пустая. Если строка пустая, Python даже не дойдет до word[0], потому что оператор and останавливается на первом ложном условии

Метод startswith

Для проверки начала строки часто лучше использовать startswith()

text = "Python"

if text.startswith("Py"):
    print("Строка начинается с Py")

startswith() умеет проверять не только один символ, но и целую подстроку. При этом он безопасно работает с пустой строкой

text = ""

print(text.startswith("P"))

Результат

False

Ошибки не будет

Когда выбрать text[0], а когда startswith

Задача Лучше использовать
Нужен именно первый символ text[0], но с проверкой пустой строки
Нужно проверить начало слова или фразы text.startswith(...)
Строка может быть пустой startswith() или проверка if text
Нужно получить символ и дальше с ним работать text[0]

Пример с startswith() читается естественнее

filename = "report.pdf"

if filename.startswith("report"):
    print("Это отчет")

Проверка без учета регистра

Если нужно считать Python и python одинаковыми, приведите строку к одному регистру

text = "Python"

if text.lower().startswith("p"):
    print("Строка начинается с p или P")

lower() возвращает строку в нижнем регистре. Исходная строка при этом не меняется

Проверить первый символ в списке строк

words = ["apple", "banana", "avocado", ""]

for word in words:
    if word.startswith("a"):
        print(word)

Результат

apple
avocado

Пустая строка просто даст False, ошибки не будет

Если используете word[0], нужна защита

for word in words:
    if word and word[0] == "a":
        print(word)

Проверить, что строка начинается с цифры

text = "2026 год"

if text and text[0].isdigit():
    print("Строка начинается с цифры")

Метод isdigit() проверяет, является ли символ цифрой. Здесь снова нужна проверка text, чтобы не брать text[0] у пустой строки

Проверить несколько возможных начал

startswith() умеет принимать кортеж вариантов

url = "https://aglamov.biz"

if url.startswith(("http://", "https://")):
    print("Это ссылка")

Это удобно для проверки адрес, расширений, префиксов и команд пользователя

Мини-практика

Напишите программу, которая проверяет, начинается ли введенное слово с буквы п

word = input("Введите слово: ")

if word.lower().startswith("п"):
    print("Слово начинается с п")
else:
    print("Слово начинается с другой буквы или пустое")

После этого измените программу так, чтобы она проверяла начало строки на http:// или https://

Частые ошибки

Брать text[0] у пустой строки

Проверяйте if text или используйте startswith()

Путать первый символ и первый индекс

Первый символ находится по индексу 0, а не 1

Не учитывать регистр

"Python".startswith("p") вернет False. Используйте lower() или casefold() при необходимости

Использовать срез там, где startswith читается лучше

text[:2] == "Py" работает, но text.startswith("Py") обычно понятнее

Что почитать дальше по Python

Если нужен общий маршрут по теме, откройте рубрику Python. Для соседних задач пригодятся эти разборы:

Подписаться
Уведомить о
guest
0 комментариев
Старые
Новые Популярные

Настройки cookie

0
Оставьте комментарий! Напишите, что думаете по поводу статьи.x