Решение модуля 3.2 из курса «Программирование на Python»

Показываю разборы с ответами и решениями урока 3.2 (Словари) для курса «Программирование на Python».
Предыдущий модуль 3.1 следующий модуль 3.4

Напишите функцию update_dictionary(d, key, value), которая принимает на вход словарь d и два числа: key и value.

Если ключ key есть в словаре d, то добавьте значение value в список, который хранится по этому ключу.
Если ключа key нет в словаре, то нужно добавить значение в список по ключу 2 * key. Если и ключа 2 * key нет, то нужно добавить ключ 2 * key в словарь и сопоставить ему список из переданного элемента [value].

Требуется реализовать только эту функцию, кода вне её не должно быть.
Функция не должна вызывать внутри себя функции input и print.

# Определение функции update_dictionary с параметрами d (словарь), key (ключ) и value (значение).
def update_dictionary(d, key, value):
    # Проверяем, существует ли ключ key в словаре d.
    if key in d:
        # Если ключ существует, добавляем значение value в список, связанный с этим ключом.
        d[key].append(value)
    else:
        # Если ключ key отсутствует в словаре d, вычисляем новый ключ, равный удвоенному значению key.
        new_key = 2 * key
        # Проверяем, существует ли новый ключ new_key в словаре d.
        if new_key in d:
            # Если новый ключ существует, добавляем значение value в связанный с ним список.
            d[new_key].append(value)
        else:
            # Если новый ключ new_key также отсутствует в словаре d, создаем новую запись в словаре.
            # Новый ключ new_key связываем со списком, содержащим значение value.
            d[new_key] = [value]

Когда Антон прочитал «Войну и мир», ему стало интересно, сколько слов и в каком количестве используется в этой книге.

Помогите Антону написать упрощённую версию такой программы, которая сможет подсчитать слова, разделённые пробелом и вывести получившуюся статистику.

Программа должна считывать одну строку со стандартного ввода и выводить для каждого уникального слова в этой строке число его повторений (без учёта регистра) в формате «слово количество» (см. пример вывода).
Порядок вывода слов может быть произвольным, каждое уникальное слово должно выводиться только один раз.

# Функция для подсчета слов и создания статистики
def word_count(sentence):
    # Преобразуем всю строку в нижний регистр для учета регистра
    sentence = sentence.lower()
    
    # Разбиваем строку на слова, используя пробел в качестве разделителя
    words = sentence.split()
    
    # Создаем пустой словарь для хранения статистики
    word_counts = {}
    
    # Проходим по каждому слову в списке
    for word in words:        
        # Если слово уже встречалось, увеличиваем счетчик
        if word in word_counts:
            word_counts[word] += 1
        else:
            # Если слово встречается первый раз, создаем запись в словаре
            word_counts[word] = 1
    
    # Возвращаем словарь с результатами
    return word_counts

# Получаем строку 
input_string = input()

# Получаем статистику и выводим результат
result = word_count(input_string)
for word, count in result.items():
    print(word, count)

Напишите программу, которая считывает строку с числом nn, которое задаёт количество чисел, которые нужно считать. Далее считывает n строк с числами xi​, по одному числу в каждой строке. Итого будет n+1 строк.

При считывании числа xi​ программа должна на отдельной строке вывести значение f(xi​). Функция f(x) уже реализована и доступна для вызова. 

Функция вычисляется достаточно долго и зависит только от переданного аргумента xx. Для того, чтобы уложиться в ограничение по времени, нужно избежать повторного вычисления значений.

# Словарь для кэширования результатов
cache = {}

# Функция для вычисления f(x) с использованием кэширования
def calculate_f(x):
    # Если результат уже есть в кэше, возвращаем его
    if x in cache:
        return cache[x]
    
    # Иначе вычисляем значение f(x)
    result = f(x)
    
    # Сохраняем результат в кэше
    cache[x] = result
    
    return result

# Считываем количество чисел n
n = int(input())

# Считываем и обрабатываем каждое число xi
for _ in range(n):
    xi = int(input())
    
    # Вычисляем f(xi) с использованием кэширования и выводим результат
    result = calculate_f(xi)
    print(result)

Если у вас не отображается решение последних задач, значит у вас включен блокировщик рекламы который вырезает эти ответы

Понравилась статья? Поделиться с друзьями:
Подписаться
Уведомить о
guest

1 Комментарий
Новые
Старые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии
Bvc
Bvc
1 год назад

Ну а где 3-я задача?

1
0
Оставьте комментарий! Напишите, что думаете по поводу статьи.x