Python: Обход строк
С помощью циклов обрабатывают числа и работают со строками. Например, можно получить конкретный символ по его индексу, а также формировать строки в циклах.
Ниже пример кода, который печатает буквы каждого слова на отдельной строке:
def print_name_by_symbol(name: str) -> None:
i = 0
# Такая проверка будет выполняться до конца строки,
# включая последний символ. Его индекс `length - 1`.
while i < len(name):
# Обращаемся к символу по индексу
print(name[i])
i = i + 1
name = 'Arya'
print_name_by_symbol(name)
# => 'A'
# => 'r'
# => 'y'
# => 'a'Цикл проходит по каждому символу строки по очереди:
'Arya'
│ │ │ │
A r y a
↓ ↓ ↓ ↓
каждый символ обрабатывается по очередиВ этом коде важно правильно поставить условие в while. Оба варианта i < len(name) и i <= len(name) - 1 приведут к одному результату.
Переворот строки
Вместо печати можно собирать новую строку. Например, напишем функцию, которая переворачивает строку:
def reverse_string(text: str) -> str:
result = ''
i = len(text) - 1
while i >= 0:
result = result + text[i]
i = i - 1
return result
print(reverse_string('Arya')) # => ayrA
print(reverse_string('hexlet')) # => telxehПеременная result инициализируется пустой строкой как нейтральным элементом для конкатенации. Цикл начинается с последнего индекса (len(text) - 1), двигается к нулю и завершается, когда индекс становится меньше нуля. На каждом шаге к результату добавляется текущий символ. В итоге строка строится в обратном порядке.
Задание
Напишите функцию mask_card_number(), которая скрывает номер банковской карты. Функция должна заменить все символы строки на *, кроме последних четырех.
Пример работы:
mask_card_number("1234567812345678") # "************5678"
mask_card_number("12345678") # "****5678"Полезное
Ваше упражнение проверяется по этим тестам
import solution
def test():
assert solution.mask_card_number("1234567812345678") == "************5678"
assert solution.mask_card_number("12345678") == "****5678"
assert solution.mask_card_number("0000111122223333") == "************3333"Решение учителя откроется через:
20:00
