Примеры решения задач на строки символов. Часть 2
Содержание
-
- 1. Функция ChangeCharToStr(). Замена символа в строке
- 2. Функция ChangeCharToStrPair(). Замена символа на другой символ в строке на парных позициях
- 3. Функция DelCharAtPos(). Удаление буквы из слова, заданй номером позиции
- 4. Функция DelChar(). Удаление всех вхождений заданного символа из строки
- 5. Функция DelSubstring(). Удаление всех вхождений указанной подстроки в строке
- 6. Функция FormArrayWords(). Формирование массива частоты вхождений слов в строке
- Связанные темы
Поиск на других ресурсах:
1. Функция ChangeCharToStr(). Замена символа в строке
# Замена символа в строке. # Параметры: # - s - исходная строка; # - c_old - символ, который нужно заменить; # - c_new - символ, который заменяет символ c_old. # Функция возвращает новую (измененную) строку. def ChangeCharToStr(s, c_old, c_new): # Начальные присваивания s2 = "" i = 0 # Цикл замены символа while i<len(s): if s[i]==c_old: s2 = s2+c_new else: s2 = s2+s[i] i = i+1 return s2 # Демонстрация использования метода s = "asd sdks slkdj sss" s2 = ChangeCharToStr(s, 's', 'X') print("s = ", s) print("s2 = ", s2)
Результат выполнения программы
s = asd sdks slkdj sss s2 = aXd XdkX Xlkdj XXX
⇑
2. Функция ChangeCharToStrPair(). Замена символа на другой символ в строке на парных позициях
Функция ChangeCharToStrPair() имеет сходный с предыдущей функцией ChangeCharToStr() код. Чтобы определить, четна ли позиция, используется условие
i%2 == 0
где i – номер позиции.
# Замена символа на другой символ, лежащий на парной позиции. # Парными позициями считаются позиции 0, 2, 4, ... # Параметры: # - s - исходная строка; # - c_old - символ, который нужно заменить; # - c_new - символ, который заменяет символ c_old. # Функция возвращает новую (измененную) строку. def ChangeCharToStrPair(s, c_old, c_new): # Начальные присваивания s2 = "" i = 0 # Цикл замены символов на парных позициях while i<len(s): if (s[i]==c_old)and(i%2==0): s2 = s2+c_new else: s2 = s2+s[i] i = i+1 return s2 # Демонстрация использования метода s = "sad sdks slkdj sss" s2 = ChangeCharToStrPair(s, 's', 'X') print("s = ", s) print("s2 = ", s2)
Результат выполнения программы
s = sad sdks slkdj sss s2 = Xad Xdks slkdj sXs
⇑
3. Функция DelCharAtPos(). Удаление буквы из слова, заданй номером позиции
Для удаления буквы из слова в заданной позиции, используется срез.
# Удаление буквы из слова, заданной номером позиции # Параметры: # - s - строка, из которой удаляется символ; # - pos - позиция символа в удаляемой строке. def DelCharAtPos(s, pos): # 1. Проверка, корректны ли данные if (pos<0) or (pos>=len(s)): return s # 2. Удаление символа через срез return s[:pos]+s[pos+1:] s = "0123456789" s2 = DelCharAtPos(s, 0) print("s = ", s) print("s2 = ", s2)
Результат выполнения программы
s = 0123456789 s2 = 123456789
⇑
4. Функция DelChar(). Удаление всех вхождений заданного символа из строки
В функции DelChar() из исходной строки s создается новая строка s2, которая не содержит заданного символа c.
# Удаление всех вхождений заданного символа из строки # Параметры: # - s - строка, из которой удаляется символ; # - c - удаляемый символ. def DelChar(s, c): # новосозданная строка s2 = "" for sym in s: if sym!=c: # к строке s2 добавляются все символы кроме sym s2 += sym return s2 s = "012345363738494" s2 = DelChar(s, '3') print("s = ", s) print("s2 = ", s2)
Результат выполнения программы
s = 012345363738494 s2 = 01245678494
⇑
5. Функция DelSubstring(). Удаление всех вхождений указанной подстроки в строке
Модификацией предыдущей функции DelChar() является функция DelSubstring(), которая удаляет все вхождения подстроки из заданной строки.
# Удаление всех вхождений заданной подстроки из строки # Параметры: # - s - строка, из которой удаляется подстрока; # - sub - удаляемая подстрока. def DelSubstring(s, sub): # новосозданная строка s2 = "" index_s = 0 while index_s<len(s): # получить подстроку с помощью среза sub2 = s[index_s : index_s+len(sub)] # проверка на равенство исходной подстроки sub с текущей sub2 if sub2==sub: index_s = index_s + len(sub) else: s2 = s2+s[index_s] index_s = index_s+1 return s2 s = "12344334343455" s2 = DelSubstring(s, '3') print("s = ", s) print("s2 = ", s2)
Результат выполнения программы
s = 12344334343455 s2 = 124444455
⇑
6. Функция FormArrayWords(). Формирование массива частоты вхождений слов в строке
Функция FormArrayWords() определяет частоту повторений слов в заданной строке. Функция возвращает словарь, содержащий пары строка:количество. Символы-разделители задаются параметром функции в виде списка.
# Словарь определяет количество вхождений слова в строке. # Параметры: # - s - рассматриваемая строка; # - chars - массив символов-разделителей слов. def FormArrayWords(s, chars): # 1. Учесть, что символы разделители могут быть в начале строки index_s = 0 while (index_s<len(s))and(s[index_s] in chars): index_s = index_s+1 # 2. Начальные настройки prev_index = index_s # позиция начала слова A = [] # список слов # 3. Цикл выделения слов в строке в виде списка while index_s < len(s): if s[index_s] in chars: # если s[index_s] - символ-разделитель sub = s[prev_index:index_s] # получить подстроку A = A+[sub] # добавить подстроку в массив # перемотка, если несколько символов-разделителей идут подряд while (index_s<len(s))and(s[index_s] in chars): index_s = index_s+1 prev_index = index_s else: # если символа-разделителя нет index_s = index_s+1 # проверка, последнее ли слово if index_s==len(s): sub = s[prev_index:index_s] A = A + [sub] # 4. Формирование словаря на основании списка A D = {} for word in A: if word not in D: D[word] = 1 else: D[word] = D[word]+1 return D # Демонстрация использования метода # 1. Исходная строка s = " ,, abc defg hjk, , mm nn, op op mm abc, " # 2. Массив символов-разделителей chars = [ ' ', ','] # 3. Формирование частотного словаря D = FormArrayWords(s, chars) print("D = ", D)
Результат выполнения программы
D = {'abc': 2, 'defg': 1, 'hjk': 1, 'mm': 2, 'nn': 1, 'op': 2}
⇑
Связанные темы
- Решение задач на строки символов. Часть 1
- Решение задач на обработку целых чисел. Часть 1
- Решение задач на обработку целых чисел. Часть 2
⇑