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

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

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

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

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

def update_dictionary(d, key, value):
    # put your python code here
    if key in d:
        d[key].append(value)
        #print('ключ есть')
    elif key is not d:
        #d[2*key]=[]
        if 2*key is d:
            d[2*key].append(value)
            #print('ключ 2*key уже есть')
        elif (2*key is not d) and d.get(2*key)==None:
            d[2*key]=[]
            d[2*key].append(value)
            #print('создание ключа и + новое значение списка')
        elif (2*key is not d) and d.get(2*key)!=None:
            d[2*key].append(value)
            #print('создание ключа и + значение списка')       
    return   

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

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

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

n='' #инициализация строки
n = str(input())
m = [] #инициализация списка
m.append([str(s.lower()) for s in n.split()]) 
d = {} #инициализация пустого словаря
li, lj = len(m), len(m[0])
for i in range(li):
    for j in range(lj):
        p = m[i][j]
        if p in d:
            d[p]+=1
        else:
            d[p] = 1
for key,value in d.items():
   print(key,value)

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

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

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

d = {}
for _ in range(int(input())):
    x = int(input())
    if x not in d:
        d[x] = f(x)
    print(d[x])
Понравилась статья? Поделиться с друзьями:
Комментарии: 1
  1. Bvc

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

Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!:

Adblock
detector