Уведомления

Группа в Telegram: @pythonsu

#1 Ноя. 7, 2023 23:41:54

dobrodun
Зарегистрирован: 2023-11-07
Сообщения: 1
Репутация: +  0  -
Профиль   Отправить e-mail  

Задача от яндекс.практикум

Уважаемые эксперты помогите!
Условия задачи
3.
Объявите функцию process_friend(name, query), принимающую имя друга name и запрос query. В этой функции будут обрабатываться запросы, в которых имя — не «Анфиса».
В функции process_friend() напишите ветвление:
если друг с именем name есть в словаре DATABASE:
если переменная query содержит строку ‘ты где?’ — функция должна вернуть сообщение ‘{имя_друга} в городе {название_города}’; название города нужно получить из словаря DATABASE.
если переменная query содержит какую-то другую строку — функция должна вернуть сообщение <неизвестный запрос>.
если друга с именем name нет в словаре DATABASE — функция должна вернуть сообщение: У тебя нет друга по имени {имя_друга}.
Теперь нужно дописать функцию process_query().
Добавьте в ветвление if name == ‘Анфиса’ блок else: если запрос начинается не с имени «Анфиса» — верните результат вызова функции process_friend(), передав в неё два аргумента: имя друга и текст вопроса.
Добавьте новые вызовы функции process_query():
print(process_query('Коля, что делать?'))
print(process_query('Антон, ты где?'))

Я написал код:

 
DATABASE = {
'Серёга': 'Омск',
'Соня': 'Москва',
'Миша': 'Москва',
'Дима': 'Челябинск',
'Алина': 'Красноярск',
'Егор': 'Пермь',
'Коля': 'Красноярск'
}

def process_query (query):
elements = query.split(', ')
if elements[0] == 'Анфиса':
return process_anfisa(elements[1])
else:
process_friend(elements[0], elements[1])
# Новая функция, она возвращает правильное словосочетание, склоняя слово "друзья"
# в зависимости от того, какое число передано в аргументе friends_count
def format_friends_count(friends_count):
if friends_count == 1:
return '1 друг'
elif 2 <= friends_count <= 4:
return f'{friends_count} друга'
else:
return f'{friends_count} друзей'

def process_friend(name, query):
if name in DATABASE:
if query == 'ты где?':
city = DATABASE[name]
return f'{name} в городе {city}'
else:
print ('<неизвестный запрос>')
else:
print (f'У тебя нет друга по имени {name}')

def process_anfisa(query):
if query == 'сколько у меня друзей?':
count = len(DATABASE)
# Вызовите функцию format_friends_count() и передайте в неё count.
# Отредактируйте строку ниже: в ней должно использоваться выражение,
# которое вернёт функция format_friends_count()
return f'У тебя {format_friends_count(count)}.'
elif query == 'кто все мои друзья?':
friends_string = ', '.join(DATABASE)
return f'Твои друзья: {friends_string}'
elif query == 'где все мои друзья?':
unique_cities = set(DATABASE.values())
cities_string = ', '.join(unique_cities)
return f'Твои друзья в городах: {cities_string}'
else:
return '<неизвестный запрос>'


print('Привет, я Анфиса!')
print(process_query('Анфиса, сколько у меня друзей?'))
print(process_query('Анфиса, кто все мои друзья?'))
print(process_query('Анфиса, где все мои друзья?'))
print(process_query('Анфиса, кто виноват?'))
print(process_query('Соня, ты где?'))
print(process_query('Коля, что делать?'))
print(process_query('Антон, ты где?'))

У меня получилось:
Привет, я Анфиса!
У тебя 7 друзей.
Твои друзья: Серёга, Соня, Миша, Дима, Алина, Егор, Коля
Твои друзья в городах: Москва, Красноярск, Омск, Пермь, Челябинск
<неизвестный запрос>
None
<неизвестный запрос>
None
У тебя нет друга по имени Антон
None

А должно:
Привет, я Анфиса!
У тебя 7 друзей.
Твои друзья: Серёга, Соня, Миша, Дима, Алина, Егор, Коля
Твои друзья в городах: Москва, Красноярск, Омск, Пермь, Челябинск
<неизвестный запрос>
Соня в городе Москва
<неизвестный запрос>
У тебя нет друга по имени Антон

Офлайн

#2 Ноя. 8, 2023 07:21:22

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9731
Репутация: +  843  -
Профиль   Отправить e-mail  

Задача от яндекс.практикум

dobrodun
А должно:
Привет, я Анфиса!
У тебя 7 друзей.
Твои друзья: Серёга, Соня, Миша, Дима, Алина, Егор, Коля
Твои друзья в городах: Москва, Красноярск, Омск, Пермь, Челябинск
<неизвестный запрос>
Соня в городе Москва
<неизвестный запрос>
У тебя нет друга по имени Антон
  
>>> DATABASE = {
...     'Серёга': 'Омск',
...     'Соня': 'Москва',
...     'Миша': 'Москва',
...     'Дима': 'Челябинск',
...     'Алина': 'Красноярск',
...     'Егор': 'Пермь',
...     'Коля': 'Красноярск'
... }
>>> 
>>> def process_query (query):
...     elements = query.split(', ')
...     if elements[0] == 'Анфиса':
...         return process_anfisa(elements[1])
...     else:
...         return process_friend(elements[0], elements[1])
... 
>>> # Новая функция, она возвращает правильное словосочетание, склоняя слово "друзья"
... # в зависимости от того, какое число передано в аргументе friends_count
... def format_friends_count(friends_count):
...     if friends_count == 1:
...         return '1 друг'
...     elif 2 <= friends_count <= 4:
...         return f'{friends_count} друга'
...     else:
...         return f'{friends_count} друзей'
... 
>>> def process_friend(name, query):
...     if name in DATABASE:
...         if query == 'ты где?':
...             city = DATABASE[name]
...             return f'{name} в городе {city}'
...         else:
...             return '<неизвестный запрос>'
...     else:
...         return f'У тебя нет друга по имени {name}'
... 
>>> def process_anfisa(query):
...     if query == 'сколько у меня друзей?':
...         count = len(DATABASE)
...         # Вызовите функцию format_friends_count() и передайте в неё count.
...         # Отредактируйте строку ниже: в ней должно использоваться выражение,
...         # которое вернёт функция format_friends_count()
...         return f'У тебя {format_friends_count(count)}.'
...     elif query == 'кто все мои друзья?':
...         friends_string = ', '.join(DATABASE)
...         return f'Твои друзья: {friends_string}'
...     elif query == 'где все мои друзья?':
...         unique_cities = set(DATABASE.values())
...         cities_string = ', '.join(unique_cities)
...         return f'Твои друзья в городах: {cities_string}'
...     else:
...         return '<неизвестный запрос>'
... 
>>> 
>>> def f():
...     print('Привет, я Анфиса!')
...     print(process_query('Анфиса, сколько у меня друзей?'))
...     print(process_query('Анфиса, кто все мои друзья?'))
...     print(process_query('Анфиса, где все мои друзья?'))
...     print(process_query('Анфиса, кто виноват?'))
...     print(process_query('Соня, ты где?'))
...     print(process_query('Коля, что делать?'))
...     print(process_query('Антон, ты где?'))
... 
>>> f()
Привет, я Анфиса!
У тебя 7 друзей.
Твои друзья: Серёга, Соня, Миша, Дима, Алина, Егор, Коля
Твои друзья в городах: Омск, Москва, Пермь, Красноярск, Челябинск
<неизвестный запрос>
Соня в городе Москва
<неизвестный запрос>
У тебя нет друга по имени Антон
>>>



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version