У меня есть var DICTIONARY — словарь, в котором ключами являются английские буквы, а значениями — слова, начинающиеся с соответствующей буквы. Первоначальное наполнение СЛОВАРА выглядит так:
DICTIONARY = {
'a': 'apple',
'b': 'banana',
'c': 'cat',
'd': 'dog',
...
}
Я пытаюсь написать сопрограмму под названием «Алфавит», которая принимает буквы в качестве входных данных и возвращает слова, связанные с данной буквой, из СЛОВАРА.
Sample Input 1:
coro = alphabet()
next(coro)
print(coro.send('a'))
print(coro.send('b'))
print(coro.send('c'))
Sample Output 1:
text
apple
banana
cat
Sample Input 2:
python
coro = alphabet()
next(coro)
for letter in 'qwerty':
print(coro.send(letter))
Sample Output 2:
text
quail
walrus
elephant
rabbit
tiger
yak
мой код использует 2 выхода, 1 назначен как переменная:
def alphabet():
while True:
ch = yield
yield DICTIONARY[ch]
однако два оператора доходности, используемые в сопрограмме, на самом деле всегда пропускают одно значение:
Test input:
coro = alphabet()
next(coro)
print(coro.send('a'))
print(coro.send('b'))
print(coro.send('c'))
Correct output:
apple
banana
cat
Your code output:
apple
None #this is the problem
cat
Я не знаю, что делать с None, и он пропускает букву b для банана.
обновлено:
#still dont really get it how it works
def alphabet(letter='a'):
while True:
letter = yield DICTIONARY[letter]
Подробнее здесь: https://stackoverflow.com/questions/790 ... -coroutine
Как сгенерировать правильный вывод, используя 2 оператора доходности в сопрограмме? ⇐ Python
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение