подготовьте код анфисы к использованию на сервере
Яндекс.Практикум, где ошибка?
Напишите функцию process_query() (англ. process query, «обработать запрос»). Перенесите в неё весь код из тела основной программы. Эта функция будет принимать на вход запросы пользователя и выдавать ответ на них. Пока она может обработать всего один запрос — сообщить количество друзей.
Добавьте вызов функции process_query() в тело основной программы.
В чем ошибка?
Теперь покажите, что вы не проите нас решить за вас задачу
# перенесите в функцию process_query() вот этот код:
def process_query():
—-print(«Привет, я Анфиса!»)
—-count = len(FRIENDS)
—-print_friends_count(count)
Замените тире на пробелы или на tab
Напишите функцию process_query() (англ. process query, «обработать запрос»). Перенесите в неё весь код из тела основной программы. Эта функция будет принимать на вход запросы пользователя и выдавать ответ на них. Пока она может обработать всего один запрос — сообщить количество друзей.
Добавьте вызов функции process_query() в тело основной программы.
Яндекс.Практикум, где ошибка?
Напишите функцию process_query() (англ. process query, «обработать запрос»). Перенесите в неё весь код из тела основной программы. Эта функция будет принимать на вход запросы пользователя и выдавать ответ на них. Пока она может обработать всего один запрос — сообщить количество друзей.
Добавьте вызов функции process_query() в тело основной программы.
В чем ошибка?
Теперь покажите, что вы не проите нас решить за вас задачу
# перенесите в функцию process_query() вот этот код:
def process_query():
—-print(«Привет, я Анфиса!»)
—-count = len(FRIENDS)
—-print_friends_count(count)
Замените тире на пробелы или на tab
Напишите функцию process_query() (англ. process query, «обработать запрос»). Перенесите в неё весь код из тела основной программы. Эта функция будет принимать на вход запросы пользователя и выдавать ответ на них. Пока она может обработать всего один запрос — сообщить количество друзей.
Добавьте вызов функции process_query() в тело основной программы.
Что я сделал не так?
Измените код Анфисы. Оставьте вывод на экран, т.е. вызовы функции print(), только в одном месте — в основном теле программы. Эти вызовы уже написаны в предварительном коде задания.
Все прошлые выводы на экран — в функциях show_count_friends() и process_query() — замените на возвращения результатов из функции оператором return.
Подсказка
Не забудьте вернуть результат выполнения функции show_count_friends() из process_query(), чтобы первому вызову print() было что печатать.
не могу понять, куда вставлять «return»
> Что я сделал не так?
Как минимум, не использовал теги для форматирования кода
пропущен count в функции
FRIENDS = [‘Серёга’, ‘Соня’, ‘Дима’, ‘Алина’, ‘Егор’]
def show_count_friends(count_friends):
if count_friends == 1:
return (‘У тебя 1 друг’)
elif 2 = 5:
return (‘У тебя ‘ + str(count_friends) + ‘ друзей’)
def process_query(query):
if query == ‘Сколько у меня друзей?’:
count = len(FRIENDS)
return show_count_friends(count)
elif query == ‘Кто все мои друзья?’:
friends_string = ‘, ‘.join(FRIENDS)
return friends_string
else:
return ‘ ‘
# Внимание! Это те самые вызовы, которые не надо трогать
show_count_friends(5)
print(process_query(‘Сколько у меня друзей?’))
print(process_query(‘Кто все мои друзья?’))
print(process_query(‘Как меня зовут?’))
Eщё надо дописать return query
FRIENDS = [‘Серёга’, ‘Соня’, ‘Дима’, ‘Алина’, ‘Егор’]
def show_count_friends(count_friends):
if count_friends == 1:
return(‘У тебя 1 друг’)
elif 2 = 5:
return(‘У тебя ‘ + str(count_friends) + ‘ друзей’)
def process_query(query):
if query == ‘Сколько у меня друзей?’:
count = len(FRIENDS)
return show_count_friends(count)
elif query == ‘Кто все мои друзья?’:
friends_string = ‘, ‘.join(FRIENDS)
return(‘Твои друзья: ‘ + friends_string)
else:
return(‘ ‘)
return query
# Внимание! Это те самые вызовы, которые не надо трогать
print(process_query(‘Сколько у меня друзей?’))
print(process_query(‘Кто все мои друзья?’))
# Функции
Создание функции называется определение. Оно начинается с ключевого слова def (от англ. definition, «определение»), затем идут имя функции, её аргументы, или параметры в круглых скобках и двоеточие. Начиная со следующей строки, с отступом в 4 пробела от начала, записывают тело функции — код, который она выполняет. Обращение к функции называется вызов функции. Функция вызывается по имени, при вызове ей передают аргументы, с которыми она должна что-то сделать.
Напишем приветствие как функцию:
# Упражнения
# Упражнения tkinter
Напишите оконное приложение выводящее список количества друзей.
Напишите оконное приложение с полем ввода количества друзей. Кнопкой при нажатии на которую выводится сообщение о количестве друзей.
# Аргументы функции
В Python аргументам функций может быть присвоено значение по умолчанию. Оно подставляется, когда при вызове функции вы не оставляете насчёт аргументов никаких инструкций.
Функция say_hello() принимает два аргумента — current_hour и name (англ. name, «имя»), которому задано значение по умолчанию. При вызове только с одним аргументом current_hour значением второго аргумента name станет пустая строка.
При вызове функции можно явно указывать, какому аргументу какое значение соответствует. В таком случае порядок следования аргументов в скобках роли не играет.
# Упражнения
Анфиса может анализировать списки. Например, подсчитывать дни, когда в вашем городе или в городах ваших друзей стояла хорошая погода.
Есть списки средних дневных температур в Москве за май 2017 и 2018 годов. Создайте функцию comfort_count(temperatures) для подсчёта в переданном списке комфортных дней — дней с температурой воздуха от 22 до 26 градусов включительно.
# Разбиение на функции
В больших проектах, написанных на Python, принято выносить весь повторяющийся код в отдельные функции перед телом основной программы. Посмотрим на пример:
Функция say_hello() содержит основную логику, а runner() (от англ. run, «запускать») выполняет роль управляющего механизма. Такое разделение придаёт коду программы аккуратный внешний вид, делает его более выразительным, упрощает чтение.
# Упражнения
# Возврат значений из функции
Пока что все наши функции печатали результаты своей работы на экран. Но обычно задача функции не сводится к выступлениям в печати. Как правило, это код, производящий специальные вычисления. Он не выводит результаты на экран, а возвращает их как значения. Значение вернётся в вызывающий код, и там будет использовано. Например, сохранено в переменной. Если программе нужно, к примеру, несколько раз посчитать одно и то же, эти вычисления поручают особым функциям:
Ключевое слово return (англ. «возвращать») указывает, какое значение функция вернёт основному коду.
# Упражнения
# Вызов функции из функции
Функцию можно вызвать не только из основного кода, но и из другой функции.
Хорошая привычка — выделять вычисления и вывод в отдельные функции, чтобы печать результатов не была разбросана по всему коду.
Если бы мы ошиблись и забыли вернуть строку text из функции show_info(), то вывод получился бы странный:
ЯндексПрактикум, почему бот не видит вложенную функцию?
На серверы приходит множество запросов — от разных пользователей или от других серверов. Измените функцию process_query() (обработчик запроса), чтобы она поддерживала несколько разных запросов, а не только один.
Добавьте аргумент query в функцию process_query(). Этот аргумент будет сообщать, какой именно запрос необходимо обработать.
В начало функции process_query() добавьте проверку значения переменной query:
если значение равно ‘Сколько у меня друзей?’ — выведите ответ на этот вопрос, как в предыдущем задании;
в противном случае — выведите ‘ ‘;
Анфиса должна здороваться при любом запросе.
Добавьте вызов process_query(‘Сколько у меня друзей?’) в основное тело программы.
Добавьте ещё один вызов process_query(‘Как меня зовут?’) в основное тело программы.
Подсказка
Результат удовлетворяет вопросам задания:
Тем не менее бот не принимает ответ, пишет «Функция print_friends_count() не существует. Не удаляйте её.»
Не могу понять в чем причина 🙁
И еще вопрос:
Функция print_friends_count(count) запускается на выполнение командой print_friends_count(count). Если можно, объясните, пожалуйста, почему вызов функции process_query(query) неприемлем в этой программе. Если вызывать ее после оператора ELSE, командой process_query(query), то происходит цикличный вывод на экран, в зависимости от места вызова функции (отступы +/- 4 пробела на следующей строчке после ELSE):
Привет, я Анфиса!
У тебя 5 друзей
Привет, я Анфиса!
У тебя 5 друзей
.
Привет, я Анфиса!
У тебя 5 друзей
Привет, я Анфиса!
неизвестный запрос
Привет, я Анфиса!
неизвестный запрос
.
verbalistus, не убедили) Нужно вам немного питон поучить прежде чем задачки решать. Функция ни от чего не зависит. У неё есть параметр, у как его не называй, передать значение в функцию можно любое.
Привет, я Анфиса!
У тебя 5 друзей
Привет, я Анфиса!
неизвестный запрос
При запуске программы (или импорте модуля) по очереди выполняются все операторы (импорты, объявления функций/классов, присвоение имен результатам каких-то выражений. )
Мне кажется вам стоит скачать книжку Лутца про изучение питона с нуля и вдумчиво прочитать. По порядку.