Принты не отображаются. В чём причина?

<b>В чем заключается ошибка в данном коде?</b> <br/> У меня не выводятся принты. <br/> <blockquote><pre><code class="python">i=''
words=[]
while i!= ['ugabuga']:
    i=input('Введите слово и перевод!\n').lower().split(' ')
    words.append(i)
predlozhenie=input('Введите предложение\n').split()
words_in_predloshenie=[]
for j in predlozhenie:
    if j not in words:
        print('&lt;unknown&gt;', end=" ")
    else:
        for i in words:
            if i==j:
                print(j, end=' ')</code></pre></blockquote>
  • 22 января 2025 г. 7:13
Ответы на вопрос 2
В вашем коде есть несколько ошибок и недоразумений, которые могут привести к тому, что принты не работают так, как вы ожидаете. Давайте рассмотрим их:

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>`.

Теперь код должен работать корректно и выводить принты. Попробуйте его запустить!
1. В print('<unknown>' end=" ") и print(j end=' ') пропущены запятые перед аргументом end. 
2. В if j not in words: вы проверяете наличие слова j в words, но words содержит списки, а не строки.
3 В if i==j: вы сравниваете список i со строкой j
Похожие вопросы