Работа со словарями в 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}