|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
15.11.2024, 14:11 | #1 |
Пользователь
Регистрация: 31.05.2023
Сообщений: 27
|
Состояние и методы генератора python
Здравствуйте, подскажите пожалуйста что нужно подправить в коде. В последней строчке теста выдает banana, а нужно cat.
На предыдущем уроке вы решали задачу «Словарь». В ней гарантировалось, что в сопрограмму alphabet будут передаваться только значения, которые являются ключами глобальной переменной DICTIONARY. Теперь вам необходимо переписать сопрограмму alphabet так, чтобы она могла обрабатывать исключение KeyError. В случае, когда возникнет исключение KeyError, сопрограмма должна генерировать значение «default». Переменная DICTIONARY вам в редакторе кода по-прежнему не видна, но вы можете обращаться к ней внутри сопрограммы alphabet. Sample Input 1: coro = alphabet() next(coro) print(coro.send('a')) print(coro.send('b')) print(coro.throw(KeyError)) print(coro.send('c')) Sample Output 1: apple banana default cat Sample Input 2: coro = alphabet() next(coro) for letter in 'qwerty': print(coro.send(letter)) print(coro.throw(KeyError)) Sample Output 2: quail default walrus default elephant default rabbit default tiger default yak default Sample Input 3: coro = alphabet() next(coro) print(coro.send('apple')) print(coro.send('banana')) print(coro.throw(KeyError)) print(coro.send('dog')) print(coro.send('d')) Sample Output 3: default default default default dog Код:
|
16.11.2024, 01:41 | #2 |
МегаМодератор
СуперМодератор
Регистрация: 09.11.2010
Сообщений: 7,394
|
Код:
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
|
16.11.2024, 12:43 | #3 |
Старожил
Регистрация: 23.10.2010
Сообщений: 2,353
|
BDA, всё ещё не понимаю до конца, но ведь ваш код работает и так:
Код:
Код:
PS: Использовал этот словарь: Код:
Как-то так, ...
|
16.11.2024, 17:47 | #4 |
МегаМодератор
СуперМодератор
Регистрация: 09.11.2010
Сообщений: 7,394
|
ViktorR, я тоже сначала именно так исправил (добавил присваивание letter), но если будет два исключения подряд (сначала из-за словаря, а потом из-за throw), то не сработает, и придется второй yield тоже оборачивать в try блок и добавлять третий yield. Пример (на основе Sample Input 3):
Код:
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
|
17.11.2024, 22:17 | #5 |
Старожил
Регистрация: 23.10.2010
Сообщений: 2,353
|
Да, так я не проверил.
Как-то так, ...
|
Опции темы | Поиск в этой теме |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Программирование на Python Магические методы в классах | Nicodim | Помощь студентам | 2 | 10.09.2023 20:25 |
Реализовать конструкторы и методы класса Python | AliceF | Помощь студентам | 0 | 10.06.2023 23:46 |
Методы сбора и анализа экспертных данных(методы: Ранжирование, непосредственная оценка), C# | Desired | Помощь студентам | 6 | 22.03.2014 13:33 |
Turbo Pascal состояние программы и методы использования окон отладчика. | djquins | Помощь студентам | 0 | 15.12.2013 01:26 |
Период генератора | Faton 11 | Общие вопросы C/C++ | 2 | 06.11.2012 20:44 |