|
0 / 0 / 0
Регистрация: 20.04.2025
Сообщений: 19
|
|
Коллбэки07.05.2025, 21:36. Показов 1662. Ответов 1
Метки задачи python (Все метки)
Иногда бывают ситуации, когда вы хотите поручить управление программой функции, а не ориентироваться на результат её выполнения. Этому может быть много причин.
Во-первых, это упрощает код, который пользуется вашей функцией. Во-вторых, бывают программы, в которых несколько наборов команд выполняется параллельно и независимо друг от друга. Например, когда ваша программа подключается к интернету, это обычно делается параллельно с работой остальной программы, ведь запрос может занять как долю секунды, так и минуты. Так же обычно поступают, когда вычисление занимает очень много времени. Взаимодействие с пользователем тоже может занимать очень много времени по меркам компьютерной программы - секунды на то, чтобы пользователь ввёл текст. Было бы очень неудобно, если бы, пока выполняется запрос, зависла бы вся программа. Проблема с частями программы, которые выполняются независимо друг от друга – в том, что основная программа не может отследить, когда интернет-запрос завершится, если только не будет постоянно это проверять. Зато сам запрос точно знает, когда он завершился и может что-то сделать по завершении. Например, показать вам загруженную картинку или обновить ленту сообщений. А иногда – сообщить о том, что произошла ошибка. Но на результат завершения одного и того же запроса можно реагировать по-разному: иногда не нужно делать ничего, в других случаях – показать результат, в третьих – сохранить результат в файл и так далее. Значит, программе нужно знать, как реагировать на окончание запроса. Это делается при помощи так называемых коллбэков (callback), что переводится как обратный звонок. Коллбэком называется специальная функция, которая вызывается, когда ваше вычисление завершилось. Для программы, запустившей запрос или долгое вычисление, коллбэк – это способ сообщить, что надлежит сделать, когда вычисление завершится. Коллбэк обычно передают как аргумент функции запуска вычисления. ________________________________________ __________________________ Ваша задача – написать функцию ask_password(login, password, success, failure), которая получает логин и пароль пользователя и проверяет их правильность. Пароль считается правильным, если в нём содержится ровно три английские гласные буквы (гласными считать буквы a,e,i,o,u,y) и ровно такой же набор согласных (все буквы, кроме перечисленных шести), как в логине. Порядок и количество согласных также должно совпадать. Логин и пароль приводятся к нижнему регистру и передаются. Пример: для логина “login” подойдут пароли “aaalgn” и “luagon“. Если пароль правильный, функция должна вызвать коллбэк success, передав ему в качестве аргумента логин. А если пароль был неверный - failure, передав ему в качестве аргументов логин и сообщение об ошибке (в таком порядке). Сообщение об ошибке должно быть одним из трёх вариантов: “Wrong number of vowels”, если в пароле неверное число гласных; “Wrong consonants”, если в пароле набор согласных отличается от набора согласных логина; “Everything is wrong”, если оба условия нарушены. Также напишите функцию main(login, password), которая вызывает написанную функцию ask_password так, чтобы в случае успеха она печатала “Привет, {логин}!”, а в случае ошибки – “Кто-то пытался притвориться пользователем {логин}, но в пароле допустил ошибку: {текст ошибки, большими буквами}.”. Внимание! При вводе логина и пароля НЕ выводите подсказку для пользователя вида “Введите логин:”, так как это собьет с толку проверяющую систему. Пример 1 Ввод main("anastasia", "nsyatos") Вывод Привет, anastasia! Пример 2 Ввод main("eugene", "aanig") Вывод Кто-то пытался притвориться пользователем eugene, но в пароле допустил ошибку: WRONG CONSONANTS. Пример 3 Ввод ask_password("anastasia", "nsyatos", lambda login: print('super'), lambda login, err: print('bad')) Вывод super
0
|
|
| 07.05.2025, 21:36 | |
|
Ответы с готовыми решениями:
1
Коллбэки
Потоки или коллбэки? |
|
Нарушитель
110 / 86 / 32
Регистрация: 10.05.2023
Сообщений: 323
|
||||||
| 07.05.2025, 23:14 | ||||||
1
|
||||||
| 07.05.2025, 23:14 | |
|
Помогаю со студенческими работами здесь
2
Нужны ли коллбэки или это синтаксический сахарок сомнительно Почему BLE-коллбэки "перебивают" выполнение кода handler? Коллбэки Зачем нужны коллбэки? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Первый деплой
lagorue 16.01.2026
Не спеша развернул своё 1ое приложение в kubernetes.
А дальше мне интересно создать 1фронтэнд приложения и 2 бэкэнд приложения
развернуть 2 деплоя в кубере получится 2 сервиса и что-бы они. . .
|
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ *
Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам
Кирхгофа, решает её и находит токи на L и напряжения на C в установ. режимах до и. . .
|
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым.
Но восстановить их можно так.
Для этого понадобится консольная утилита. . .
|
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
|
|
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
|
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11
— это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
|
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11
Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
|
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
|