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

Цикл while зациклился, несмотря на break

28.12.2019, 11:11. Показов 3891. Ответов 4

Студворк — интернет-сервис помощи студентам
Доброго времени суток! Столкнулась с проблемой зацикливания.
На входе имеем следующие данные:
1) 2 списка
m= [129.0, 129.0, 187.0, 193.0, 210.0, 214.0, 262.0, 266.0, 294.0, 294.0, 83.0, 97.0, 115.0, 117.0, 143.0, 151.0, 248.0, 252.0, 148.0, 148.0, 162.0, 162.0, 92.0, 102.0, 127.0, 135.0, 188.0, 188.0, 219.0, 219.0]

r= [117.0, 129.0, 181.0, 189.0, 210.0, 214.0, 262.0, 266.0, 288.0, 288.0, 103.0, 103.0, 117.0, 121.0, 143.0, 143.0, 248.0, 252.0, 140.0, 152.0, 162.0, 186.0, 96.0, 102.0, 125.0, 127.0, 178.0, 182.0, 209.0, 219.0]

2) Условие: сравниваем первый объект из списка r с первым и вторым объектом из m. Если имеется совпадение, то выводим True 1, если нет совпадений, то проводим аналогичные действия с вторым объектом из r. Если имеется совпадение, то выводим True 2. Если нет совпадений, то выводим False. При любом исходе, переходим на 3 и 4 объект из r и так далее, пока не переберем все 30 объектов.

3) Непосредственно написанный код:

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
k= len(m)
print(k)
posiciya=0
while k>=posiciya:
    if r[posiciya]==m[posiciya] or r[posiciya]==m[posiciya+1]:
        print('True 1',posiciya, posiciya+1 )
        posiciya=+2
        continue
 
    elif r[posiciya+1]==m[posiciya] or r[posiciya+1]==m[posiciya+1]:
        print('True 2',posiciya, posiciya+1)
        posiciya=+2
        continue
 
    else:
        print('False',posiciya, posiciya+1)
        posiciya = +2
        continue
Проблема: Идёт зацикливание, после прохождения блока else, при этом не происходит прибавление +2 к переменной posiciya. Почему игнорируется continue? Как расциклить цикл в цикле ? Вывод при зацикливании следующий:

Python
1
2
3
4
5
6
7
8
True 2 0 1
False 2 3 
False 2 3 
False 2 3 
False 2 3 
False 2 3 
False 2 3 
~
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
28.12.2019, 11:11
Ответы с готовыми решениями:

Цикл do.while и break
Задача: написать программу, которая принимает от пользователя 10 int чисел, затем выводит их в строку, находит среднее значение. Так же...

цикл и break
помогите пожалуйста. Вот задача: Вычислить сумму всех чисел, введенных с клавиатуры до первого отрицательного. Использовать break. ...

Break не останавливает цикл
Здравствуйте! У меня возникла такая проблема - в этом коде break не хочет выходить из цикла, если ему попадается строка "}"....

4
 Аватар для Damenikx
955 / 341 / 114
Регистрация: 04.08.2018
Сообщений: 2,533
28.12.2019, 12:05
Если же у тебя уже есть список, попробуй сделать с явным выделением индекса списка:

Python
1
for i,j in enumrate(m)
Добавлено через 53 секунды
Так ты сможешь конкретно работать именно с индексом. Может, я глуп, но тут в принципе while не нужен, можно всё сделать в for.

Добавлено через 4 минуты
ВалерияВС, грубо говоря ты запуталась в индексах.

Добавлено через 19 секунд
Да я и сам сейчас пытаюсь сделать и путаюсь
0
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38178 / 21113 / 4307
Регистрация: 12.02.2012
Сообщений: 34,716
Записей в блоге: 14
28.12.2019, 12:14
Лучший ответ Сообщение было отмечено ВалерияВС как решение

Решение

ВалерияВС, ты везде написала

Python
1
posicya=+2
а надо-то:

Python
1
posicya+=2
1
2 / 2 / 0
Регистрация: 22.02.2019
Сообщений: 35
28.12.2019, 12:59  [ТС]
Большое спасибо! Все заработало! Тогда возникает дополнительный вопрос, почему при первом прохождении он сплюсовал индексы и только при втором заглючил?
0
Эксперт Python
5438 / 3859 / 1215
Регистрация: 28.10.2013
Сообщений: 9,552
Записей в блоге: 1
28.12.2019, 13:56
Цитата Сообщение от ВалерияВС Посмотреть сообщение
Цикл while зациклился, несмотря на break
А причем тут break, если у вас его нет?
Цитата Сообщение от ВалерияВС Посмотреть сообщение
continue
Скрипач не нужен.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
28.12.2019, 13:56
Помогаю со студенческими работами здесь

Цикл for и оператор break
Привет всем. Задание такое я должен вводить элементы массива. Если ввод неправильный (т.е. не число ) то я должен сохранить индекс...

Цикл for и оператор break
Привет всем. Задане такое я должен вводить элементы массива. Если ввод неправильный (т.е. не число ) то я должен сохранить индекс этого...

break не завершает цикл
{ if ($aaa) break; $aaa = 'blablabla'; } while ($aaa); Собственно. Этот цикл должен завершиться на второй итерации. Но он не...

Программа на бесконечный цикл с оператором break
Программа на бесконечный цикл с оператором break и вводом символа 'q' для завершения программы. class Break2 { public...

Простейшая задача на цикл. Не работает break
Не могу решить простейшую задачу: В одном из первых уроков про циклы вы запустили ракету SpaceY в космос. Сейчас она бесконечно летает...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru