Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Почему этот код не работает?

Андрей Панченко Ученик (6), на голосовании 2 недели назад
a = input()

while a != 'КОНЕЦ' or a != 'конец':
print(a)
a = input()
Голосование за лучший ответ
Miorrana Мастер (1167) 1 месяц назад
Какой язык программирования?
Андрей ПанченкоУченик (6) 1 месяц назад
Python
Miorrana Мастер (1167) Андрей Панченко, к сожалению, в этом языке я не разбираюсь
Gzhz Jzmak Мастер (1262) 1 месяц назад
В вашем коде есть логическая ошибка в условии цикла `while`. Давайте разберем его:

```python
a = input()

while a != 'КОНЕЦ' or a != 'конец':
print(a)
a = input()
```

### Проблема

В выражении `a != 'КОНЕЦ' or a != 'конец'` условие всегда будет истинным (True), потому что если `a` равно одному из этих значений (например, `a = 'КОНЕЦ'`), оно все равно будет не равно другому (`a != 'конец'`). Поэтому цикл будет выполняться бесконечно.

### Решение

Чтобы цикл завершался, когда вводится одно из значений "КОНЕЦ" или "конец", нужно использовать оператор `and` вместо `or`. Правильный вариант будет выглядеть так:

```python
a = input()

while a != 'КОНЕЦ' and a != 'конец':
print(a)
a = input()
```

### Альтернативный подход

Вы также можете использовать конструкцию `in` для упрощения условия:

```python
a = input()

while a not in ('КОНЕЦ', 'конец'):
print(a)
a = input()
```

Оба этих варианта будут работать правильно, и цикл завершится, когда будет введено одно из слов "КОНЕЦ" или "конец".
Евгений Куклич Знаток (310) 1 месяц назад
А что в нём не работающего? Компилируется хотя бы
Саша БутовГуру (2540) 1 месяц назад
инвалид
Евгений Куклич Знаток (310) Саша Бутов, обоснуй
Илья Маклаков Знаток (308) 1 месяц назад
while True:
a = input()
if a == 'КОНЕЦ' or a == 'конец':
break
print(a)
Вот так он будет работать. Как я понимаю проблема до этого была из-за того, что было две переменных a - глобальная(вне цикла) и a - локальная(внутри цикла). a - глобальная затмевает собой a - локальную, тем самым цикл выполняется вечно. То есть ты ввел значение, которое удовлетворяет условию, вошел в цикл, а выйти не можешь, потому что a - локальная не является условие цикла, условием цикла является a - глобальная. Мой код работает вечно, пока ввод пользователя удовлетворяет условию, а как только он РАВНЯЕТСЯ словам триггерам, он выходит из цикла. Если будут вопросы, спрашивай)
Ridens Verum Dicere! Искусственный Интеллект (133743) 1 месяц назад
В голову сразу пришел метод через break
попробуй этот вариант!
Похожие вопросы