Автор: Яндекс Учебник
Уровень: Простой
ПОКА нашлось (44) ИЛИ нашлось (9299) ИЛИ нашлось (49)
заменить (49, 944)
заменить (44, 2)
заменить (9299, 4)
На вход приведённой выше программе поступает строка, которая начинается с цифры «4», а затем содержит n цифр «9» (3<n<1 000).
Определите, сколько различных строк может получиться в результате её работы.
my_set = set()
for n in range(4, 1000):
s = '4' + '9' * n
while '44' in s or '9299' in s or '49' in s:
s = s.replace('49', '944', 1)
s = s.replace('44', '2', 1)
s = s.replace('9299', '4', 1)
my_set.add(s)
print(len(my_set))
Ответ: 3
my_set = set()
- Создание пустого множества my_set для хранения уникальных строк
for n in range(4, 1000):
- Цикл по значениям n от 4 до 999 включительно
s = '4' + '9' * n
- Создание строки, состоящей из цифры '4' и n цифр '9' (например, при n=4: '49999')
while '44' in s or '9299' in s or '49' in s:
- Цикл выполняется, пока в строке есть хотя бы одна из подстрок: '44', '9299' или '49'
s = s.replace('49', '944', 1)
- Замена первой найденной подстроки '49' на '944'
s = s.replace('44', '2', 1)
- Замена первой найденной подстроки '44' на '2'
s = s.replace('9299', '4', 1)
- Замена первой найденной подстроки '9299' на '4'
my_set.add(s)
- Добавление полученной строки в множество (автоматически исключает дубликаты)
print(len(my_set))
- Вывод количества уникальных строк в множестве
Please open Telegram to view this post
VIEW IN TELEGRAM
2 5❤🔥4🔥2
def create_counter():
count = 0 # Внутреннее состояние
def counter():
nonlocal count
count += 1
print("Текущий счет:", count)
return counter
my_counter = create_counter()
my_counter() # Текущий счет: 1
my_counter() # Текущий счет: 2
Каждый вызов my_counter() увеличивает внутренний счетчик, который "запомнен" внутри функции. Это и есть замыкание!
- Хранить состояние между вызовами
- Создавать "приватные" переменные
- Сделать код более модульным и безопасным
Please open Telegram to view this post
VIEW IN TELEGRAM
4❤🔥4❤1