Форум программистов, компьютерный форум, киберфорум
Python: Решение задач
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
0 / 0 / 0
Регистрация: 20.08.2021
Сообщений: 112

Coroutine

18.02.2026, 14:53. Показов 429. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Проблема заключается в том, что после обработки исключения KeyError генератор продолжает работу с последнего значения переменной letter, а именно с того, которое было отправлено перед исключением. Чтобы исправить ситуацию, нам нужно убедиться, что после исключения обрабатывается новая буква («c»), а не та, которая была ранее.

Давайте переработаем код следующим образом:

Мы обработаем исключение отдельно вне основного цикла, поскольку ошибка возникла именно в процессе отправки нового значения.
После выброса исключения сбросим внутренний цикл и продолжим выполнение с новым значением.

Исправленный вариант выглядит так:

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
DICTIONARY = {'a': 'apple', 'b': 'banana', 'c': 'cat'}
 
def alphabet():
    letter = yield  # инициализация первой буквы
    while True:
        try:
            # основной цикл с проверкой словаря
            for k, v in DICTIONARY.items():
                letter = yield DICTIONARY.get(letter, 'default')
                if letter == k:
                    yield v
        
        except KeyError:
            # Обрабатываем исключение и продолжаем с текущего состояния
            yield 'default'
Теперь давайте разберемся подробнее:

Что изменилось?

Обработка KeyError:
Когда возникает исключение KeyError, оно ловится и немедленно возвращается строка 'default'.


Использование метода .get():
Метод .get(key, default) вернет значение по указанному ключу, либо строку 'default', если ключа нет в словаре. Таким образом, сам словарь больше не вызывает исключения, если нужного ключа нет.


Последовательность действий:
Генератор правильно обрабатывает новый символ после исключения, начиная новую итерацию цикла.

Проверяем тестовые случаи:

Python
1
2
3
4
5
6
coro = alphabet()
next(coro)
print(coro.send('a'))     # apple
print(coro.send('b'))     # banana
print(coro.throw(KeyError))  # default
print(coro.send('c'))     # cat
Теперь ваш вывод будет соответствовать ожидаемому:

apple
banana
default
cat

Это решает проблему, и тесты будут проходить успешно.
Почему gpt считает, что решил задачу, но ответ по-прежнему неверный:

apple
banana
default
banana
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
18.02.2026, 14:53
Ответы с готовыми решениями:

Asyncio - coroutine vs future vs task
Доброго времени суток, форумчане! Приступил к изучению asyncio. Использую python 3.5. Гуру...

Ошибка "TypeError: Object of type coroutine is not JSON serializable"
Имеется код: class sensorreadings(Resource): async def get(self): data =...

Ошибка "TypeError: Object of type coroutine is not JSON serializable"
Имеется код: class sensorreadings(Resource): async def get(self): data =...

2
0 / 0 / 0
Регистрация: 20.08.2021
Сообщений: 112
18.02.2026, 21:50  [ТС]
Здравствуйте! Тему создавал с телефона, поэтому так получилось.
Благодарю за редакцию.
Подскажите, плиз, как исправить код, чтобы он корректно выводил решение
0
0 / 0 / 0
Регистрация: 20.08.2021
Сообщений: 112
Вчера, 20:26  [ТС]
Сорри!
Решение верное.
Это Stepic глючил.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
Вчера, 20:26
Помогаю со студенческими работами здесь

coroutine 'set.<locals>.spawn' was never awaited
Здравствуйте! Есть бот-таймер для дискорда,но он выбивает ошибка когда исполняется асинхронная...

coroutine News.global_news was never awaited
from modules.base_module import Module from modules.location import refresh_avatar import...

Coroutine выводит None
Решение задачи Проверка пароля Ваша задача — создать сопрограмму check_password, которая...

Thread vs coroutine
Есть такая задача: пройтись по нескольким (30-70) урлам, утянуть и распарсить с каждого из них...

Как правильно завершить Coroutine?
У меня возник вопрос, как сделать так, чтобы корутин правильно завершал свои действия? У меня он...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Функция установки текстового статуса в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
10 пpимет, которые всегда сбываются
Maks 31.03.2026
1. Чтобы, наконец, пришла маршрутка, надо закурить. Если сигарета последняя, маршрутка придет еще до второй затяжки даже вопреки расписанию. 2. Нaдоели зима и снег? Не надо переезжать. Достаточно. . .
Перемещение выделенных строк ТЧ из одного документа в другой
Maks 31.03.2026
Реализация из решения ниже выполнена на примере нетипового документа "ВыдачаОборудованияНаСпецтехнику" с единственной табличной частью "ОборудованиеИКомплектующие" разработанного в конфигурации КА2. . . .
Functional First Web Framework Suave
DevAlt 30.03.2026
Sauve. IO Апнулись до NET10. Из зависимостей один пакет, работает одинаково хорошо как в режиме проекта так и в интерактивном режиме. из сложностей - чисто функциональный подход. Решил. . .
Автоматическое создание документа при проведении другого документа
Maks 29.03.2026
Реализация из решения ниже выполнена на нетиповых документах, разработанных в конфигурации КА2. Есть нетиповой документ "ЗаявкаНаРемонтСпецтехники" и нетиповой документ "ПланированиеСпецтехники". В. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru