-
Notifications
You must be signed in to change notification settings - Fork 119
/
Copy pathpractice4.py
57 lines (44 loc) · 2.49 KB
/
practice4.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
from typing import Any, Optional
def search_phone(content: Any, name: str) -> Optional[str]:
"""
Функция поиска номера телефона пользователя в структуре данных.
Алгоритм работы следующий:
1) принимаем на вход структуру content, состоящую из словарей,
списков и строковых ключей в списке
2) внутри структуры может быть запись следующего формата:
{
'name': 'user_name',
'phone': 'user_phone',
}
3) необходимо пройтись по всей структуре
4) если встречаем словарь, в котором ключ name совпадает с
аргументом функции name - берем из этого словаря поле phone
и возвращаем этот телефон из функции
5) если поле name с таким значением не найдено - возвращаем из
функции None
Может пригодиться:
1) Чтобы проверить, является ли объект списком используйте функцию:
isinstance(some_object, list)
если some_object список - результат будет True
если some_object не список - False
2) Чтобы проверить, является ли объект словарем используйте функцию:
isinstance(some_object, dict)
:param content: словарь или список, внутрь которого вложены объекты. Внутри
может скрываться номер телефона пользователя
:param name: имя пользователя, у которого будем искать номер телефона
:return: номер телефона пользователя или None
"""
# пиши свой код здесь
if isinstance(content, list):
for cont in content:
phone = search_phone(cont, name)
if phone:
return phone
elif isinstance(content, dict):
if content.get('name') == name:
return content.get('phone')
for cont in content.values():
phone = search_phone(cont, name)
if phone:
return phone
return None