Ошибка в выводе данных

InFocusLife

Новичок
Пользователь
Янв 7, 2022
3
0
1
Код:
DATABASE = {
    'Серёга': 'Омск',
    'Соня': 'Москва',
    'Миша': 'Москва',
    'Дима': 'Челябинск',
    'Алина': 'Красноярск',
    'Егор': 'Пермь',
    'Коля': 'Красноярск'
}

def process_anfisa(query):
    if query == 'Анфиса, сколько у меня друзей?':
        count = len(DATABASE)
        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 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:
        city = DATABASE[name]
        if query == 'ты где?':
            return f'{name} в городе {city}'
        else:
            return '<неизвестный запрос>'
    else:
        return f'У тебя нет друга по имени {name}'


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} друзей.'




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


Добрый день!
В коде выше допущена ошибка, не могу найти. Пожалуйста, разъясните что не так.

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

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

regnor

Модератор
Команда форума
Модератор
Июл 7, 2020
2 582
457
83
у вас функции перепутаны, с вопросом ты где функция process_friend, а вы вызываете process_query, и аргументы будут не верны в функции process_friend
вот так работает
Python:
DATABASE = {
    'Серёга': 'Омск',
    'Соня': 'Москва',
    'Миша': 'Москва',
    'Дима': 'Челябинск',
    'Алина': 'Красноярск',
    'Егор': 'Пермь',
    'Коля': 'Красноярск'
}

def process_anfisa(query):
    if query == 'Анфиса, сколько у меня друзей?':
        count = len(DATABASE)
        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 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:
        city = DATABASE[name]
        if query == 'ты где?':
            return f'{name} в городе {city}'
        else:
            return '<неизвестный запрос>'
    else:
        return f'У тебя нет друга по имени {name}'


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} друзей.'




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


PS
и уже был вопрос с такой задачей...
можно воспользоваться поиском...
 

Ципихович Эндрю

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

regnor

Модератор
Команда форума
Модератор
Июл 7, 2020
2 582
457
83
чтобы такое заполучить такой огромный код? спорить не буду но по моему многовато..........
это задача с какого то курса, там разные вопросы для каждой функции...
 

InFocusLife

Новичок
Пользователь
Янв 7, 2022
3
0
1
у вас функции перепутаны, с вопросом ты где функция process_friend, а вы вызываете process_query, и аргументы будут не верны в функции process_friend
вот так работает
Python:
DATABASE = {
    'Серёга': 'Омск',
    'Соня': 'Москва',
    'Миша': 'Москва',
    'Дима': 'Челябинск',
    'Алина': 'Красноярск',
    'Егор': 'Пермь',
    'Коля': 'Красноярск'
}

def process_anfisa(query):
    if query == 'Анфиса, сколько у меня друзей?':
        count = len(DATABASE)
        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 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:
        city = DATABASE[name]
        if query == 'ты где?':
            return f'{name} в городе {city}'
        else:
            return '<неизвестный запрос>'
    else:
        return f'У тебя нет друга по имени {name}'


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} друзей.'




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


PS
и уже был вопрос с такой задачей...
можно воспользоваться поиском...
Спасибо!
Постараюсь быть внимательнее.
 

InFocusLife

Новичок
Пользователь
Янв 7, 2022
3
0
1
это задача с какого то курса, там разные вопросы для каждой функции...
да, это курс яндекс практикум
 

Форум IT Специалистов