В вашем коде есть несколько ошибок и недоразумений, которые могут привести к тому, что принты не работают так, как вы ожидаете. Давайте рассмотрим их:
1. **Проверка условия цикла `while`**: Условие `while i != ['ugabuga']:` не сработает, потому что переменная `i` будет присваиваться списку, а не строке. Вам нужно использовать строку для сравнения. Кроме того, чтобы выйти из цикла, вы могли бы просто сделать проверку на пустую строку.
2. **Сравнение между списками и строками**: В строке `if j not in words:` вы сравниваете элемент `j` (строку) с элементами `words` (список списков). Это никогда не будет истинным, поскольку `j` – это строка, а элементы `words` – это списки. Вам нужно исправить это, чтобы проверить каждый элемент списка `words`.
3. **Вывод перевода**: Внутренний цикл `for i in words:` используется для поиска `j` в списке, но так как `words` – это список списков, вам нужно проходить через вложенные списки.
Исправленный код будет выглядеть так:
```python
words = []
while True:
i = input('Введите слово и перевод!\n').lower().split(' ')
if i == ['ugabuga']: # условие для выхода из цикла
break
words.append(i)
predlozhenie = input('Введите предложение\n').split()
words_in_predloshenie = []
for j in predlozhenie:
found = False
for pair in words: # проходим по каждому словарю (пара слов)
if j == pair[0]: # сравниваем только первое слово (слово)
print(pair[1], end=' ') # выводим перевод (второе слово)
found = True
break
if not found:
print('<unknown>', end=" ")
```
### Объяснение:
1. `while True:` — программа зациклится, пока не получит ввод `['ugabuga']`, чтобы выйти из цикла.
2. Внутри цикла записываются пары слов (входное слово и его перевод).
3. Код `if j == pair[0]:` проверяет, если слово в предложении совпадает с первым словом в паре, и выводит его перевод. Если слово не найдено, выводится `<unknown>`.
Теперь код должен работать корректно и выводить принты. Попробуйте его запустить!