Обход строки

Многие задачи требуют посимвольной обработки строки. Часто обработка начинается с начала, берётся каждый символ по очереди, что-то с ним происходит, и так продолжается, пока не будет достигнут конец строки. Эта схема обработки называется обходом. Один из способов написать обход — использовать цикл for для обхода по индексам:

s = 'school'
for i in range(len(s)):
    print(f"{s[i]} {i}")
s 0
c 1
h 2
o 3
o 4
l 5

Этот цикл обходит строку и выводит каждую букву и её номер в отдельной строке.

 

Другой способ реализовать обход с помощью цикла for — обход по символам:

s = 'student'
for ch in s:
    print(f"{ch}")
s
t
u
d
e
n
t

В цикле каждый следующий символ в строке присваивается переменной \(ch\). Цикл продолжается до тех пор, пока не останется ни одного символа.

Оператор in

Оператор in — это оператор, который принимает две строки и возвращает True, если первая является подстрокой для второй:

s = 'банан'
a = 'ан' in s
b = 'семя' in s
print(f"{a}")
print(f"{b}")
True
False

Пример 1

Выведите все гласные символы строки \(s\), имеющие нечётные индексы. Нумерация индексов начинается с \(0\).

s = input()
for i in range(1, len(s), 2):
    if s[i] in "aeiouy":
        print(f"{s[i]}")
watermelon
a
e

Пример 2

В строке \(s\) замените все строчные буквы «a» на заглавные «A».

s = input()
for ch in s:
    if ch == 'a':
        print(f"A", end='')
    else:
        print(f"{ch}", end='')
abracadabra
AbrAcAdAbrA

Пример 3

В строке \(s\) найдите самую левую позицию буквы «a». Позиции нумеруются с единицы слева направо. Если буквы «a» нет в строке, выведите \(-1\).

s = input()
idx = -1
for i in range(len(s)):
    if s[i] == 'a':
        idx = i + 1
        break
print(f"{idx}")
banana
2

none
-1

Пример 4

Преобразуйте символы строки \(s\) в нижний регистр.

s = input()
for ch in s:
    if "А" <= ch <= "Я" or "A" <= ch <= "Z":
        x = chr(ord(ch) + 32)
        print(f"{x}", end="")
    else:
        print(f"{ch}", end="")
FRUIT
fruit

Пример 5

Посчитайте, сколько раз слово «YES» встречается в слове \(w\).

w = input()
cnt = 0
for i in range(1, len(w) - 1):
    s = w[i - 1] + w[i] + w[i + 1]
    if s == 'YES':
        cnt += 1
print(f"{cnt}")
YESTERDAY
1

Пример 6

В слове \(w\) найдите самую младшую букву (символ, имеющий наименьший ASCII код).

w = input()
mn = w[0]
for ch in w:
    if ch < mn:
        mn = ch
print(f"{mn}")
python
h

Пример 7

Определите, состоит ли строка \(s\) только из строчных букв.

s = input()
ans = 'YES'
for ch in s:
    if not ('а' <= ch <= 'я' or 'a' <= ch <= 'z'):
        ans = 'NO'
        break
print(f"{ans}")
lower
YES

python3
NO

Практические задания