Работа со словарями в Python (задание из викторины)

Наткнулся на очень интересное задание по Python и вот его суть: Дополните программный код, в котором функция count_simbols(word) возвращает словарь со следующей структурой - {<'символ_1'>:<количество_в_слове>, <'символ_2'>:<количество_в_слове>, ... и.т.д.} или False если на вход подана не строка.

word - type str. EXAMPLE OF input/output when using this function:

>>> print(count_simbols('abracadabra')) => {'a':5, 'r':2, 'b':2, 'c':1, 'd':1}

###################################################

def count_simbols(word):
   dict = {}
   .....
   .....
   .....
   .....
   .....
   .....

   else:

   .....
   .....

#########

##########################################

Есть варианты строк кода, которые можно использовать и вставить их до блока else: шесть и после блока else: две! Не больше не меньше!!! строго: 6 и 2! только так.

Вот варианты строк кода, которые даются для использования в ответе:

1) return keys
 2) for n in str(word)
 3) for n in word
 4) if n in keys:
 5) dict[n] = 1
 6) return dict
 7) keys = dict.keys()
 8) return False
 9) if n is keys:
 10) print(False)
 11) dict[n] += 1
 12) if isinstance(word, str)
 13) if not isinstance(word, str)

Выберете вариант строки кода и вставьте его в соответствующее место в коде программы вместо точек "....."


Помогите пожалуйста разобраться, вроде и просто и сломал себе голову и уложиться в 6 и 2 строки ну никак не могу. Заранее спасибо за ответ. Мой вариант:

def count_simbols(word):
    dict = {}

    if isinstance(word, str):
        keys = dict.keys()
        for n in word:
            dict[n] = 1
            if n in keys:
                dict[n] += 1
        return dict
    else:
        if not isinstance(word, str):
            return False

print(count_simbols("abracadabra"))

результат:

{'a': 2, 'b': 2, 'r': 2, 'c': 2, 'd': 2}

вариант №2 (убрал лишний isinstance):

def count_simbols(word):
    dict = {}

    if isinstance(word, str):
        for n in word:
            dict[n] = 1
            keys = dict.keys()
            if n in keys:
                dict[n] += 1
            else:
                dict[n] = 1
        return dict

print(count_simbols("abracadabra"))

результат все равно один и тот же)))

{'a': 2, 'b': 2, 'r': 2, 'c': 2, 'd': 2}

я не могу понять что я делаю не так...

Решение:

def count_simbols(word):
    dict = {}

    if not isinstance(word, str):
        return False

    for n in word:
        keys = dict.keys()
        if n in keys:
            dict[n] += 1
        else:
            dict[n] = 1
    return dict

print(count_simbols("abracadabra"))

результат:

{'a': 5, 'b': 2, 'r': 2, 'c': 1, 'd': 1}

Ответы (0 шт):