Задача: Глубокое копирование

vilkov75

Новичок
Пользователь
Окт 17, 2021
1
0
1
Есть такая задача:
Вы сделали для заказчика структуру сайта по продаже телефонов:

Заказчик рассказал своим коллегам на рынке, и они тоже захотели такой сайт, только для своих товаров. Вы посчитали, что это лёгкая задача, и быстро принялись за работу.

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

Условия: структуру сайта нужно описать один раз, копипасту никто не любит.

Подсказка: используйте рекурсию.


Я сделал вот так:

Python:
import copy

site = {
    'html': {
        'head': {
            'title': 'Куплю/продам телефон недорого'
        },
        'body': {
            'h2': 'У нас самая низкая цена на iphone',
            'div': 'Купить',
            'p': 'продать'
        }
    }
}


def func_all(site):
    for _ in range(question):
        product = input('Введите название продукта для нового сайта: ').lower()
        print(f'Сайт для {product}:')
        site_copy = copy.deepcopy(site)
        site_copy['html']['head']['title'] = f'Куплю/продам {product} недорого'
        site_copy['html']['body']['h2'] = f'У нас самая низкая цена на {product}'
        func(site_copy)


def func(s, depth=0):
    for i in s:
        print(' ' * depth, i)
        if isinstance(s[i], dict):
            func(s[i], depth + 1)
        else:
            print(' ' * (depth + 1), ' '.join(s[i]))


question = int(input('\nСколько будет сайтов: '))
func_all(site)

В результате мне написали, что:

Вы сейчас заменяете заранее заданные теги
а что если сайт будет чуть другой? что если названия будут другие у тегов? придётся переписывать весь код
вот я и предлагаю - давайте попробуем написать функцию, которая получает на вход словарь, тег, новое значение
эта функция должна будет рекурсивно перебирать все элементы словаря, искать ключ, который равен тегу и заменять по этому тегу значение на новое

На данный момент у меня пака ничего не получается. Прошу помощи у сообщества в решении данной задачи!
 

Вложения

  • 2021-10-21_123829.png
    2021-10-21_123829.png
    27,9 КБ · Просмотры: 62
Последнее редактирование:

regnor

Модератор
Команда форума
Модератор
Июл 7, 2020
2 599
464
83
вставьте код как код, соблюдая отступы, подробнее тут как задать вопрос
плюс это же задачи какие то, какой то курс, кто вам ответил у него и спросите, в чем проблема...
 

Sergey_2gis

Новичок
Пользователь
Дек 15, 2021
1
0
1
Python:
site = {
    'html': {
        'head': {
            'title': 'Куплю/продам телефон недорого'
        },
        'body': {
            'h2': 'У нас самая низкая цена на iphone',
            'div': 'Купить',
            'p': 'продать'
        }
    }
}


def find_key(struct, key, meaning):
    if key in struct:
        struct[key] = meaning
        return site

    for sub_struct in struct.values():
        if isinstance(sub_struct, dict):
            result = find_key(sub_struct, key, meaning)
            if result:
                return site



number_sites = int(input('Сколько сайтов: '))
for _ in range(number_sites):
    product_name = input('Введите название продукта для нового сайта: ')
    key = {'title': f'Куплю/продам {product_name} недорого', 'h2': f'У нас самая низкая цена на {product_name}'}
    for i in key:
        find_key(site, i, key[i])

    print(f'Сайт для {product_name}:')
    print(site, '\n')
 

Форум IT Специалистов