Здравствуйте все! Прохожу бесплатный курс на Яндекс Практикуме по Питону и застрял на одной задаче. Прошу не пугаться, что ниже такой длинный код, на самом деле тут всё просто, изменения нужны небольшие, только я уже 2 часа не могу понять, почему код не работает )). Просмотрел уже не один раз, ну ведь должен он работать )).
В общем суть в том, что программа должна выдать такой результат:
Анфиса, сколько у меня друзей? - У тебя 7 друзей
Анфиса, кто все мои друзья? - Твои друзья: Сергей, Соня, Миша, Дима, Алина, Егор, Коля
Анфиса, где все мои друзья? - Твои друзья в городах: Омск, Москва, Красноярск, Пермь, Челябинск
Анфиса, кто виноват? - <неизвестный запрос>
Коля, ты где? - Коля в городе Красноярск
Соня, что делать? - <неизвестный запрос>
Антон, ты где? - У тебя нет друга по имени Антон
Уберу в спойлер формулировку задания:
Что-то неправильно написано в функции process_friend или в функции process_query. У меня получается такой результат (последние строки почему-то выводятся все в одну строку):
Анфиса, сколько у меня друзей? - У тебя 7 друзей
Анфиса, кто все мои друзья? - Твои друзья: Сергей, Соня, Миша, Дима, Алина, Егор, Коля
Анфиса, где все мои друзья? - Твои друзья в городах: Омск, Москва, Красноярск, Пермь, Челябинск
Анфиса, кто виноват?Коля, ты где?Соня, что делать?Антон, ты где? - <неизвестный запрос>
А вот код:
В общем суть в том, что программа должна выдать такой результат:
Анфиса, сколько у меня друзей? - У тебя 7 друзей
Анфиса, кто все мои друзья? - Твои друзья: Сергей, Соня, Миша, Дима, Алина, Егор, Коля
Анфиса, где все мои друзья? - Твои друзья в городах: Омск, Москва, Красноярск, Пермь, Челябинск
Анфиса, кто виноват? - <неизвестный запрос>
Коля, ты где? - Коля в городе Красноярск
Соня, что делать? - <неизвестный запрос>
Антон, ты где? - У тебя нет друга по имени Антон
Уберу в спойлер формулировку задания:
2.
А. Напишите функцию process_friend(name, query), принимающую имя друга name и запрос query.
В. Добавьте в список queries новые запросы вида:
А. Напишите функцию process_friend(name, query), принимающую имя друга name и запрос query.
- Если друга с указанным именем 'Н' нет в списке, то функция должна вернуть сообщение об ошибке У тебя нет друга по имени Н.
- Если запрос — «ты где?», то функция должна вернуть сообщения 'Н в городе Г', где Г определяется по данным словаря DATABASE.
- Если запрос не «ты где?», а какой-то другой, то функция должна вернуть сообщение об ошибке <неизвестный запрос>.
В. Добавьте в список queries новые запросы вида:
- Коля, ты где?
- Соня, что делать?
- Антон, ты где?
Что-то неправильно написано в функции process_friend или в функции process_query. У меня получается такой результат (последние строки почему-то выводятся все в одну строку):
Анфиса, сколько у меня друзей? - У тебя 7 друзей
Анфиса, кто все мои друзья? - Твои друзья: Сергей, Соня, Миша, Дима, Алина, Егор, Коля
Анфиса, где все мои друзья? - Твои друзья в городах: Омск, Москва, Красноярск, Пермь, Челябинск
Анфиса, кто виноват?Коля, ты где?Соня, что делать?Антон, ты где? - <неизвестный запрос>
А вот код:
Python:
DATABASE = {
'Сергей': 'Омск',
'Соня': 'Москва',
'Миша': 'Москва',
'Дима': 'Челябинск',
'Алина': 'Красноярск',
'Егор': 'Пермь',
'Коля': 'Красноярск'
}
def format_count_friends(count_friends):
if count_friends == 1:
return '1 друг'
elif 2 <= count_friends <= 4:
return f'{count_friends} друга'
else:
return f'{count_friends} друзей'
def process_anfisa(query):
if query == 'сколько у меня друзей?' or query == 'колько у меня друзей?': # был какой-то глюк тренажера и пришлось добавить фразу 'колько у меня друзей?'
count_string = format_count_friends(len(DATABASE))
return f'У тебя {count_string}'
elif query == 'кто все мои друзья?':
friends_string = ', '.join(DATABASE.keys())
return f'Твои друзья: {friends_string}'
elif query == 'где все мои друзья?':
unique_cities = set(DATABASE.values())
cities_string = ', '.join(unique_cities)
return f'Твои друзья в городах: {cities_string}'
else:
return '<неизвестный запрос>'
def process_query(query):
tokens = query.split(', ')
name = tokens[0]
if name == 'Анфиса':
query = query.strip('Анфиса, ')
return process_anfisa(query)
else:
query = query.strip('Коля, ')
return process_friend(name, query)
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 runner():
queries = [
'Анфиса, сколько у меня друзей?',
'Анфиса, кто все мои друзья?',
'Анфиса, где все мои друзья?',
'Анфиса, кто виноват?'
'Коля, ты где?'
'Соня, что делать?'
'Антон, ты где?'
]
for query in queries:
print(query + ' - ' + process_query(query))
runner()