3 / 3 / 2
Регистрация: 21.10.2011
Сообщений: 50

Продолжение выполнения цикла после нажатия клавиши

05.02.2013, 05:39. Показов 6011. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Имеется двумерный list, пример:
Python
1
2
3
[[1, 11, 111],
[2, 22, 222],
[3, 33, 333]]
, в котором заключены введёные пользователем данные. Необходимо составить схему (точнее, list с данными, как относятся элементы каждого из внутренних листов. Т.е. есть ли связи типа:
root - 1
root - 11
root - 111
root - 1 - 2
root - 1 - 22
...
root - 111 - 222 - 3
root - 111 - 222 - 33
root - 111 - 222 - 333
При этом, если установлено, что нет связи
root - 1
, то и спрашивать у пользователя на счёт, к примеру, связи
root - 1 - 2
не имеет смысла. Пример необходимого сопостовления в нарисованной схеме и текстовом виде:
http://rghost.ru/43532322/image.png
http://pastebin.com/SSXWCW1c

В примере все связи захватывают все 4 группы, но это может быть не так. К примеру, если пользователь отвергнет связи
root - 111 - 222 - 3
root - 111 - 222 - 33
root - 111 - 222 - 333
, то в ветке root - 111 - 222 - * максимальной будет лишь root - 111 - 222 (например, узел "система - организация - кадры" может не иметь связи с последним блоком (исполнители)).

На рисунке обычная древовидная структура, у которой немного видоизменён низ. Есть 2 группы по 4 элемента, 1 группа с 6ю элементами, и 1 корневой элемент. Пользователь сначала решает, нужны ли ему каждый из элементов 1й группы. Затем каждый из нужных элементов 1й группы соединяет в каждым из элементов 2й группы и смотрит, нужно ли ему каждое из соединений. Затем каждую из полученных пар сравнивает с каждым из элементов 3й группы... Из примера всё, но вообще так до тех пор, пока не закончатся группы.

Очень слабо представляю, как это всё можно реализовать. Надеюсь, подробно объяснил структуру.

Конкретно проблемы возникли, во-первых, в обходе каждой из связей. Чувствую, что надо использовать рекурсию, но как - всё понять не могу. Во-вторых, как корректно сделать ожидание нажатия клавиши в цикле с паузой его работы. Программа графическая, используется фреймворк PyQt 4.9.1, Python 3.2.3. Смотрел в сторону QMutex, но выглядит очень костыльно.

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

Добавлено через 22 часа 49 минут
Решение ожидания ввода клавиши с последующим совершением одной итерации: http://pastebin.com/ZTTuG5gR

А вот задача декартова произведения неизвестного количества групп пока остаётся открытой...

Добавлено через 1 час 5 минут
Ну вот, отдохнул немного и всё сразу написалось. http://pastebin.com/eNTbwRet . Проблема декартова произведения решена, остались мелочи.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
05.02.2013, 05:39
Ответы с готовыми решениями:

Продолжение выполнения цикла после нажатия клавиши
Собственно короткий вопрос от новичка по Qt 4.9.1: Имеется несколько вложенных циклов, в самой глубине которого необходимо вывести в...

Продолжение выполнения цикла только после нажатия другой кнопки
Добрый вечер!! Вопрос следующий: Как организовать чтобы цикл продолжался только после того как будет нажата другая кнопка? А именно: ...

Продолжение выполнения программы после нажатия кнопки
Подскажите пжлст как сделать так чтобы программа на определенных моментах останавливалась и не продолжала выполнятся пока не будет нажата...

4
4866 / 3288 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
05.02.2013, 06:09
python.org. product

Python
1
2
3
4
5
6
>>> import itertools
>>> 
>>> t = [[1, 2, 3], ['a', 'b', 'c'], ['_1', '_2', '_3'], ['_a', '_b', '_c']]
>>> print(*itertools.product(*t))
(1, 'a', '_1', '_a') (1, 'a', '_1', '_b') (1, 'a', '_1', '_c') (1, 'a', '_2', '_a') (1, 'a', '_2', '_b') (1, 'a', '_2', '_c') (1, 'a', '_3', '_a') (1, 'a', '_3', '_b') (1, 'a', '_3', '_c') (1, 'b', '_1', '_a') (1, 'b', '_1', '_b') (1, 'b', '_1', '_c') (1, 'b', '_2', '_a') (1, 'b', '_2', '_b') (1, 'b', '_2', '_c') (1, 'b', '_3', '_a') (1, 'b', '_3', '_b') (1, 'b', '_3', '_c') (1, 'c', '_1', '_a') (1, 'c', '_1', '_b') (1, 'c', '_1', '_c') (1, 'c', '_2', '_a') (1, 'c', '_2', '_b') (1, 'c', '_2', '_c') (1, 'c', '_3', '_a') (1, 'c', '_3', '_b') (1, 'c', '_3', '_c') (2, 'a', '_1', '_a') (2, 'a', '_1', '_b') (2, 'a', '_1', '_c') (2, 'a', '_2', '_a') (2, 'a', '_2', '_b') (2, 'a', '_2', '_c') (2, 'a', '_3', '_a') (2, 'a', '_3', '_b') (2, 'a', '_3', '_c') (2, 'b', '_1', '_a') (2, 'b', '_1', '_b') (2, 'b', '_1', '_c') (2, 'b', '_2', '_a') (2, 'b', '_2', '_b') (2, 'b', '_2', '_c') (2, 'b', '_3', '_a') (2, 'b', '_3', '_b') (2, 'b', '_3', '_c') (2, 'c', '_1', '_a') (2, 'c', '_1', '_b') (2, 'c', '_1', '_c') (2, 'c', '_2', '_a') (2, 'c', '_2', '_b') (2, 'c', '_2', '_c') (2, 'c', '_3', '_a') (2, 'c', '_3', '_b') (2, 'c', '_3', '_c') (3, 'a', '_1', '_a') (3, 'a', '_1', '_b') (3, 'a', '_1', '_c') (3, 'a', '_2', '_a') (3, 'a', '_2', '_b') (3, 'a', '_2', '_c') (3, 'a', '_3', '_a') (3, 'a', '_3', '_b') (3, 'a', '_3', '_c') (3, 'b', '_1', '_a') (3, 'b', '_1', '_b') (3, 'b', '_1', '_c') (3, 'b', '_2', '_a') (3, 'b', '_2', '_b') (3, 'b', '_2', '_c') (3, 'b', '_3', '_a') (3, 'b', '_3', '_b') (3, 'b', '_3', '_c') (3, 'c', '_1', '_a') (3, 'c', '_1', '_b') (3, 'c', '_1', '_c') (3, 'c', '_2', '_a') (3, 'c', '_2', '_b') (3, 'c', '_2', '_c') (3, 'c', '_3', '_a') (3, 'c', '_3', '_b') (3, 'c', '_3', '_c')
>>>
1
3 / 3 / 2
Регистрация: 21.10.2011
Сообщений: 50
05.02.2013, 13:22  [ТС]
Где же вы раньше-то были... О product() я знал, но о *args не знал. Точнее забыл. Нагуглил, понял, офигенно. Как-то так оно проще, да, спасибо.
0
4866 / 3288 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
05.02.2013, 14:18
Цитата Сообщение от nivs Посмотреть сообщение
Где же вы раньше-то были...
раньше мы ждали, когда появится более внятное объяснение задачи
0
3 / 3 / 2
Регистрация: 21.10.2011
Сообщений: 50
05.02.2013, 14:56  [ТС]
Да, это моя пожизненная беда...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
05.02.2013, 14:56
Помогаю со студенческими работами здесь

Выход из цикла после нажатия определенной клавиши
Здравствуйте, собственно, хотел узнать, как мне выйти из цикла, нажав определенную клавишу? Обычный цикл по заполнению массива

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

Выход из цикла и продолжение выполнения
Доброго времени суток. Нужно продолжить выполнение после выхода из цикла. Можно наглядный пример? @echo off echo. SetLocal...

Выход из цикла или продолжение выполнения в С++
Надо чтобы при вводе W, A, S или D цикл прекратился, а если не введено ничего -- продолжался. При этом он не должен останавливаться. С++

После нажатия клавиши Enter или нажатия на Button
Помогите пожалуйста.:-[ Задача: После нажатия клавиши Enter или нажатия на Button поле курсора переходит в соответствующий компонент...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

Новые блоги и статьи
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США. Нашел на реддите интересную статью под названием «Кто-нибудь знает, где получить бесплатный компьютер или. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru