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

02.05.2023 0 Автор : Марина Николаевна
Символьная строка в языке программирования

Символьная строка

Символьная строка — это последовательность символов, которая рассматривается как единый объект. В языке Python строка относится к типу str (от английского string — строка). Проверить можно запустив следующую программу:

a = "Питон"
print (type(s))

которая выведет

<class 'str'>

Новое значение записывается в строку с помощью оператора присвивания (как выше) или функции ввода с клавиатуры:

s = input()

Встроенная функция len определяет длину строки — количество символов в ней. Вот и переменную n записывается длина строки s:

n = len (s)

Сравнение строк

Строки можно сравнивать между собой также как и числа. Например, можно проверять равенство двух строк:

password = input ("Введите пароль:")
if password == "sEzAmm":
    print ("Слушаюсь и повинуюсь!")
else:
    print ("No pasaran!")

Можно также определить, какая из двух строк большая, какая — меньше. Если строки состоит только из русских или только латинских букв, то меньше будет та строка, которая идет раньше в алфавитном списке. Например, «паровоз» будет «меньше», чем слово «пароход»: они различаются в пятой букве и «в» < «x».  Это можно проверить экспериментально, например, с помощью такой программы:

s1 = "паровоз"
s2 = "пароход"
if s1 < s2:
    print (s1, "<", s2)
elif a1 == s2:
    print (a1, "=", s2)
else: 
    print (s1, ">", s2)

Откуда же компьютер «знает», что такое алфавитный порядок? При сравнении используются коды символов. В современных кодировках и русские, и английские буквы расположены в алфавитном порядке, т.е. код буквы «а» меньше, чем код буквы «х».

Сложение и умножение

Оператор «+» используется для «сложения» (объединения, сцепления) строк. Эта операция иногда называется конкатенацией. Например:

hello = "Привет"
name = "Пантелемон"
greeting = hello + "," + name + "!"

 В результате в переменную greeting будет записано значение

«Привет, Пантелеймон!»

В язык Python введена операция умножения строки на число: она заменяет многократное сложение. Например:

s = "Уа! Уа! Уа! Уа! Уа!"

можно заменить на:

s = "Уа!" *10

или

s = 10 * "Уа!" 

Обращение к символам

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

Индекс можно понимать как смещение символа от начала строки. Первфй по счету символ имеет нулевое смещение (находится в самом начале строки), поэтому у него индекс 0:

К любому символу можно обратиться по индексу, записав индекс в квадратных скобках после имени строки:

print (hello [1])                    # p
print ( hello [5] + [2]+ "k")         # тик

В языке Python  можно указывать отрицательные индексы. Это значит, что отсчет ведется от конца строки, так что символ hello  [-1 ]  — это последний символ строки hello:

Чтобы рассчитать «нормальную» позицию символа в строке, к отрицательному индексу нужно добавить длину строки. Например:

hello [-1] = hello [len (hello) -1] = hello [6]

Предыдущую программу можно было переписать, используя отрицательные индексы:

print (hello [-6])                    # p
print ( hello [-2] + [-5]+ "k")         # тик

Если указать неправильный индекс, произойдет ошибка — выход за границы строки, и программа завершится аварийно. Для строки длиной семь правильные индексы — от -7 до 6.

Перебор всех символов

Поскольку к символу можно обращаться по индексу, для перебора всех символов можно использовать цикл по переменной, которая будет принимать все возможные значения индексов.

Пусть нужно вывести в столбик кодывсех символов строки с именем s. Её длину можно найти с помощью функции len, индекс первого символа равен 0, а индекс последнего символа равен len (s ) — 1.

Таким образом, все допустимые индексы — это последовательность, которую строит вызов функции range (len (s)). 

Перебор можно выполнить так:

for i  in range (len (s)):
    print ( s[i], ord (s[i]))

В каждой строке сначала выводится сам символ, а потом  — его код, который возвращает встроенная функция ord.

В языке Python существует еще один удобный способ перебора всех элементов строки:

for  c in  s:
    print (c, ord (c))

Заголовок такого цикла можно «прочитать» так: «для всех с, входящих в состав s».  Это означает, что все символы строки s, с первого до последнего, по очереди оказываются в переменной с, и в теле цикла нам остается вывести код символа с.

В отличие от большинства современных языков программирования, в Python нельзя изменить символьную строку, поскольку строка — это неизменяемый объект. Это означает, что оператор присваивания s[5]=»a»  не сработает — будет выдано сообщение об ошибке.

Тем не менее можно составить из символов существующей строки новую строку и внести в неё нужные изменения. приведем полную программу, которая вводит строку с клавиатуры, заменяет в ней все буквы «э» на буквы «е» и выводит полученную строку на экран.

s = input (Введите строку: ")
sNew = "
for c in  s:
    if c == "э": c = "e"
    sNew += c
print (sNew)

Здесь в цикле for перебираются все символы, входящие в строку s.  В теле цикла  проверяем значение переменной с (это очередной символ исходной строки): если оно совпадает с буквой «э»,  то  заменяем его на букву «е» и добавляем в конце новой строки sNew с помощью оператора сложения.

Нужно отметить, что показанный здесь способ (многократное «сложение» строк) работает очень медленно. В практических задачах, где требуется замена символов, лучше использовать встроенную функцию replace, о которой пойдет речь дальше.

Продолжение информации о символьных строках.