F. Модернизация системы вывода

Разработайте функцию modern_print, которая принимает строку и выводит её, если она не была выведена ранее.

Примечание

В решении не должно быть вызовов требуемых функций.

Пример

Ввод

modern_print("Hello!")
modern_print("Hello!")
modern_print("How do you do?")
modern_print("Hello!")

Вывод

Hello!
How do you do?

Ввод

modern_print("Ало!")
modern_print("Ало!")
modern_print("Я тебя не слышу")
modern_print("Ало!")
modern_print("Ало!")
modern_print("Позвони когда сможешь")
modern_print("Позвони когда сможешь")
modern_print("Я тебя не слышу")

Вывод

Ало!
Я тебя не слышу
Позвони когда сможешь

Решение

Для решения этой задачи нам потребуется глобальная переменная, которая накапливала бы уже напечатанные строки. Тип переменной может быть множеством или списком. С академической точки рения множество предпочтительнее потому что в не проще и быстрее организован поиск.

Посмотреть код

Решение

Python
history = []


def modern_print(string):
    if string not in history:
        print(string)
        history.append(string)

Решение

Python
history = set()


def modern_print(string):
    if string not in history:
        print(string)
        history.add(string)
Подписаться
Уведомить о
guest
4 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии
Денис
Денис
15.05.2025 11:00

Вообще не понял как решать задачу и не думал что в рамках задачи можно создавать внешнее хранилище в виде списка и его редактировать внутри функции. Бродя по интернету в поисках решения нашел способ через создание атрибута внутри функции в таком виде:

def modern_print(string: str) -> str:
  if not hasattr(modern_print, ‘printed’):
    modern_print.printed = set()
  if string in modern_print.printed:
    pass
  else:
    modern_print.printed.add(string)
    print(string)

Последний раз редактировалось 25 дней назад Денис ем
Александр
Александр
20.05.2025 15:24

Всё так просто?!
Я уже дошел до изучения замыкания и декораторов. А тут надо тупо объявить глобальную переменную…