Не выводит результат. Практикум. задача1, тема5

Не выводит результат.

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 == 'сколько у меня друзей?':
        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 runner():
    queries = [
        'Анфиса, сколько у меня друзей?',
        'Анфиса, кто все мои друзья?',
        'Анфиса, где все мои друзья?',
        'Анфиса, кто виноват?'
    ]
    for query in queries:
        print(query, '-', process_anfisa(query))
        
def process_query(query):
    tokens = query.split(', ')
    name = tokens[0]
    if name == 'Анфиса': 
        return process_anfisa(tokens[1])


runner()

Ответы (1 шт):

Автор решения: ПИТОНИСТ версия-3-8
  1. Измените функцию process_query (у слова Анфиса в конце есть запятая, метод .strip(',') её убирает):
def process_query(query):
    tokens = query.split(', ')
    name = tokens[0].strip(',') #изменил
    if name == 'Анфиса':
        return process_anfisa(tokens[1])
  1. Измените вызов в runner() (не process_anfisa, а process_query):
def runner():
    queries = [
        'Анфиса, сколько у меня друзей?',
        'Анфиса, кто все мои друзья?',
        'Анфиса, где все мои друзья?',
        'Анфиса, кто виноват?'
    ]
    for query in queries:
        print(query, '-', process_query(query)) #изменил

Новый код:

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 == 'сколько у меня друзей?':
        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 runner():
    queries = [
        'Анфиса, сколько у меня друзей?',
        'Анфиса, кто все мои друзья?',
        'Анфиса, где все мои друзья?',
        'Анфиса, кто виноват?'
    ]
    for query in queries:
        print(query, '-', process_query(query)) #изменил
        
def process_query(query):
    tokens = query.split(', ')
    name = tokens[0].strip(',') #изменил
    if name == 'Анфиса':
        return process_anfisa(tokens[1])


runner()

У меня работает:

Фото консоли

→ Ссылка