Приклади розв’язку задач на рядки символів. Частина 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
⇑