С помощью циклов не только обрабатывают числа, но работают и со строками. Например, можно получить конкретный символ по его индексу, а также формировать строки в циклах. В этом уроке разберем, как это делать.
Ниже пример кода, который печатает каждую букву каждого слова на отдельной строке:
def print_name_by_symbol(name):
i = 0
# Такая проверка будет выполняться до конца строки,
# включая последний символ. Его индекс `length - 1`.
while i < len(name):
# Обращаемся к символу по индексу
print(name[i])
i += 1
name = 'Arya'
print_name_by_symbol(name)
# => 'A'
# => 'r'
# => 'y'
# => 'a'
Главное в этом коде — поставить правильное условие в while
. Это можно сделать двумя способами: i < len(name)
или i <= len(name) - 1
— они приведут к одному результату.
Еще циклы можно использовать, чтобы формировать строки. Подобная задача часто встречается в веб-программировании. Она сводится к обычной агрегации, когда применяется интерполяция или конкатенация.
Переворот строки — алгоритмическая задача, которую задают на собеседованиях. Правильный способ перевернуть строку — использовать функцию из стандартной библиотеки. Но важно знать, как ее реализовать.
Один из алгоритмов выглядит так:
Строим новую строку
Перебираем символы исходной строки в обратном порядке
def reverse_string(string):
index = len(string) - 1
reversed_string = ''
while index >= 0:
current_char = string[index]
reversed_string = reversed_string + current_char
# То же самое через интерполяцию
# reversed_string = f'{reversed_string}{current_char}'
index = index - 1
return reversed_string
reverse_string('Game Of Thrones') # 'senorhT fO emaG'
# Проверка нейтрального элемента
reverse_string('') # ''
Разберем функцию построчно:
index = len(string) - 1
— записываем в новую переменную индекс последнего символа строки (индексы начинаются с нуля)reversed_string = ''
— инициализируем строку, куда будем записывать результатwhile index >= 0:
— условие: повторяем тело цикла, пока текущий индекс не дошел до 0
— до первого символаcurrent_char = string[index]
— берем из строки символ по текущему индексуreversed_string = reversed_string + current_char
— записываем в строку-результат новое значение: текущая строка-результат + новый символindex = index - 1
— обновляем счетчикreturn reversed_string
— когда цикл завершился, возвращаем строку-результатСоветуем скопировать эту функцию в https://repl.it/languages/python3 и поэкспериментировать с ней.
Работая со строками, программисты часто допускают ошибку — выходят за границы строки. Если неправильно подобрать начальное значение счетчика или допустить ошибку в предикате цикла, функция может обращаться к несуществующему символу.
Особенно часто забывают, что индекс последнего элемента всегда меньше на единицу размера строки. В строках начальный индекс равен 0
, значит, индекс последнего элемента — len(str) - 1
.
Вам ответят команда поддержки Хекслета или другие студенты.
Курсы программирования для новичков и опытных разработчиков. Начните обучение бесплатно
Наши выпускники работают в компаниях:
С нуля до разработчика. Возвращаем деньги, если не удалось найти работу.
Зарегистрируйтесь или войдите в свой аккаунт