Задачи со строками 10-11 класс

Цикл по значениям

Задача Ввод Вывод
s = input()
for ch in s:
    print(ch)
Школа

Ш

к

о

л

а


Цикл по индексам

Задача Ввод  Вывод
s = input()
for k in range(len(s)):
    print(k, s[k])
Школа

0 Ш

1 к

2 о

3 л

4 а


Правило сравнения символов

Задача Ввод  Вывод
a = "@"
b = "+"
if a > b:
    print(a, ">", b)
else:
    print(a, "<", b)

@

+

@ > +

Все языки программирования, не только Python, сравнивают символы, используя таблицу ASCII. Какой символ в этой таблице имеет больший номер, тот и больше.


Сравнение строки с перевёрнутой

s = input() # Пользователь вводит строку, сохраняем её в переменную s

if s < s[::-1]: # Сравниваем исходную строку с перевёрнутой

    print(s)  # Если исходная меньше, печатаем её

elif s[::-1] < s: # Если перевёрнутая меньше исходной

    print(s[::-1]) # Печатаем перевёрнутую строку

else: # Если строки равны (одинаковые)

    print("ПЛНДРМ") # Печатаем "ПЛНДРМ" (это палиндром)


Комментарии:


  • s[::-1] — создаёт новую строку, в которой символы идут в обратном порядке.

  • Сравнение строк происходит лексикографически (по алфавиту).

  • Если строки равны — это палиндром.


Извлечение цифр из строки.

s = input() # Пользователь вводит строку, сохраняем её в s
digits = "" # Создаём пустую строку, куда будем собирать цифры

for number in s: # Перебираем каждый символ строки s
    if number in "0123456789": # Если символ является цифрой (проверяем вхождение в строку-образец)
        digits += number # Добавляем этот символ в строку digits

print(digits) # Печатаем получившуюся строку из цифр
print(int(digits) * 2) # Преобразуем строку digits в число, умножаем на 2 и печатаем


Комментарии:


  • number — имя переменной цикла, можно назвать как угодно, например char или c.

  • in "0123456789" — проверяет, есть ли символ в строке, содержащей все цифры.

  • digits += number — это то же самое, что digits = digits + number.

  • int(digits) — преобразует строку с цифрами в целое число.

  • Если цифр не было, digits останется пустой строкой, и преобразование в int() вызовет ошибку.


Поиск одинаковых соседей (с ошибкой в условии).

s = input() # Пользователь вводит строку, сохраняем в s

for z in range(1, len(s)-2): # Перебираем индексы от 1 до len(s)-3 (потенциальная ошибка!)
    if s[z] == s[z - 1] or [z] == s[z + 1]: # Здесь опечатка: [z] вместо s[z]
        print('YES') # Печатаем YES
        break # Прерываем цикл
else: # Этот блок выполнится, если цикл завершился без break
    print('NO') # Печатаем NO


Комментарии:


  • range(1, len(s)-2) — неправильный диапазон. Правильно: range(1, len(s)-1).

  • [z] == s[z + 1] — это сравнение списка [z] с символом строки, всегда будет False. Должно быть s[z] == s[z + 1].

  • break — немедленно выходит из цикла.

  • else у цикла — выполняется, только если цикл не был прерван break.



Подсчёт совпадений в двух строках.

s1 = input() # Вводим первую строку
s2 = input() # Вводим вторую строку

ans = 0 # Счётчик совпадений, изначально 0

for z in range(len(s1)): # Перебираем все индексы от 0 до длины строки s1-1
    if s1[z] == s2[z]: # Сравниваем символы на одинаковых позициях
        ans = ans + 1 # Если равны, увеличиваем счётчик на 1

print(ans) # Печатаем количество совпадений


Комментарии:


  • len(s1) — длина первой строки (строки одинаковой длины по условию).

  • range(len(s1)) — создаёт последовательность чисел от 0 до len(s1)-1.

  • ans = ans + 1 — можно записать короче: ans += 1.

  • print(ans) — выводит итоговое число.