Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/18: Рейтинг темы: голосов - 18, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 26.03.2019
Сообщений: 11

Прошу совета у опытных людей. Цикл while и 2 условия через логическое или (or)

09.12.2019, 16:37. Показов 3788. Ответов 5

Студворк — интернет-сервис помощи студентам
Есть код. В два счетчика попадают числа, не важно как. Я хотел, чтобы при выполнении одного из условий, программа выходила из цикла. В итоге он бесконечен. Прошу опытных людей подсказать почему. Если есть желание, можно исправить. Спасибо!
Python
1
2
3
4
5
6
                    while (count1 - count2 != g) or (count1 - count2 != 1):
                        count2 = q.pop()
                        q.push(count2)
                    graph[count2][count1] = 1
                    q.push(count1)
                    count2 = count1
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
09.12.2019, 16:37
Ответы с готовыми решениями:

Прошу совета опытных людей о создании сайта
Здравствуйте товарищи. У вас тут в ветке «PHP для начинающих» какие то вопросы серьезные, не как не для начинающих))) Спрошу кратко и...

Ищу совета опытных людей
День добрый! Я недавно начал изучать сей чудный язык, да и в общем программирование и решил попрактиковаться в написании первых...

Прошу совета знающих людей
Очень хочу стать програмистом,привлекает эта работа,но я обучаюсь в небольшом вузе провинциального города.. Оказалось,что нужным вещам...

5
Просто Лис
Эксперт Python
 Аватар для Рыжий Лис
5973 / 3735 / 1099
Регистрация: 17.05.2012
Сообщений: 10,791
Записей в блоге: 9
09.12.2019, 16:46
Цикл бесконечен, потому что значение всех трёх переменных (count1, count2, g) не меняется.
0
0 / 0 / 0
Регистрация: 26.03.2019
Сообщений: 11
09.12.2019, 16:48  [ТС]
Меняются, забыл указать это в вопросе. Я думаю заменить or на and.
0
Просто Лис
Эксперт Python
 Аватар для Рыжий Лис
5973 / 3735 / 1099
Регистрация: 17.05.2012
Сообщений: 10,791
Записей в блоге: 9
09.12.2019, 16:56
А вот и нет. Добавьте print(count1, count2, g) внутрь цикла и увидите сами.

Не по теме:

конечно, если у вас не многопоточное приложение.

0
0 / 0 / 0
Регистрация: 26.03.2019
Сообщений: 11
14.12.2019, 23:19  [ТС]
Вот такая же проблема. Тут видно, что переменные меняются.
Python
1
2
3
    while tele_v_1 == tele_v_2 or tele_v_1 == finish or tele_v_2 == finish or (tele_v_1 - tele_v_2) == 1 or (tele_v_1 - tele_v_2) == -1 or (tele_v_1 - tele_v_2) == g or (tele_v_1 - tele_v_2) == -g:
        tele_v_1 = rand.choice(t_v)
        tele_v_2 = rand.choice(t_v)
0
Эксперт Python
5438 / 3859 / 1215
Регистрация: 28.10.2013
Сообщений: 9,552
Записей в блоге: 1
15.12.2019, 00:47
Лучший ответ Сообщение было отмечено FelixTI как решение

Решение

Python
1
x = tele_v_1 - tele_v_2 # вычисляем один раз. глупо делать это снова и снова
# заменяем неуклюжую и нечитабельую цепочку (ее часть в данном случае) на просто выражение
Python
1
x in [1,  g, -g]
Цитата Сообщение от FelixTI Посмотреть сообщение
Я думаю заменить or на and.
То есть смысла своей логической цепочки сами не понимаете?
Не проще тогда сделать while бесконечным и уже внутри тела цикла делать вычисления, проверки и ставить break для выхода? Так, по крайней мере, это будет читабельным. В первую очередь для самого автора скрипта.

Добавлено через 26 минут
... А, я кажется понял причину (и глубину) непонимания логики цепочек or ТС-ом.
Дело в том, что Python (внезапно?, да нет - во многих других ЯП точно также) вовсе не проверяет всю цепочку условий or.
Он останавливает проверку на первом условии вернувшем True и далее не ходит. Потому что лень.
Это так и называется - ленивая оценка логических условий.
Поэтому чем больше в цикле понапихано таких условий, тем больше вероятности, что какое-то из них всегда будет выдавать True и цикл никогда не остановится.
Остановится он только когда все условия дружно вернут False, потому что только в этом случае результат всей цепочки будет False.
Python
1
2
3
4
5
6
7
>>> False or False or True
True
>>> True or False or False or False
True
>>> False or False or False
False
>>>
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
15.12.2019, 00:47
Помогаю со студенческими работами здесь

Прошу совета у знающих людей
Всем привет! Прошу помощи у знающих людей, нужно собрать системник. Необходимо, что-бы он справлялся с расчетами в excel 2010, файлы с...

Прошу дельного совета у знающих людей
ребят имеется вот такой код на выдачу данных из БД select ... , Case when ... like '%in%' then N'вход' when ... like '%out%'...

Меняю процессор, прошу совета понимающих людей
Здравствуйте, уважаемые форумчане. Ситуация такая: у меня i5 3470, gtx 1070, БП 600W, вот решил поменять процессор, ибо он уже...

Прошу совета по firebird\Mssql у знающих людей
Здравствуйте. Меня зовут, Константин. Мне 40 лет, живу я на острове Сахалин. Это моё первое сообщение на этом форуме и оно о просьбе...

прошу совета у людей, работающих python-программистами
всем привет! у меня назрела парочка вопросов) сразу оговорюсь, что у меня нету технического образования и я никогда в жизни не...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
Использование значений реквизитов справочника в документе, с определенными условиями и правами
Maks 07.04.2026
1. Контроль срока действия договора Алгоритм из решения ниже реализован на примере нетипового документа "ЗаявкаНаРаботу", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если. . .
Доступность команды формы по условию
Maks 07.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: сделать доступной кнопку (команда формы "ЗавершитьСписание") при. . .
Уведомление о неверно выбранном значении справочника
Maks 06.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "НарядПутевка", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если в документе выбран неверный склад. . .
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru