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

Вывод количества пунктов меню

09.09.2021, 07:53. Показов 2647. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
В файле data.json в рабочей директории находится описание меню для приложения.
{"menu": {
"id": "file",
"value": "File",
"popup": {
"menuitem": [
{"value": "New", "onclick": "CreateNewDoc()"},
{"value": "Open", "onclick": "OpenDoc()"},
{"value": "Close", "onclick": "CloseDoc()"}
]
}
}}
Формат вывода
Выведите одно число – количество пунктов меню (menuitem) в разделе настройки всплывающих окон (popup) для объекта меню (menu).
Обратите внимание, что определенных полей с некоторыми из требуемых имен (menu, popup, menuitem) может не быть в данных, в этом случае нужно считать, что требуемых пунктов меню ноль.

Пример 1

Ввод:

{"menu": {
"id": "file",
"value": "File",
"popup": {
"menuitem": [
{"value": "New", "onclick": "CreateNewDoc()"},
{"value": "Open", "onclick": "OpenDoc()"},
{"value": "Close", "onclick": "CloseDoc()"}
]
}
}}


Вывод: 3
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
09.09.2021, 07:53
Ответы с готовыми решениями:

Вывод дочерних пунктов в меню
Подскажите пожалуйста, какое условие указать, чтобы при выборе родительского пункта меню выводились только его дочерние пункты? Из базы...

Вывод пунктов меню: InsertMenu(...)
помогите пожалуйста. как мне сделать так чтоб программа выводила пункты меню : InsertMenu (...); #include <Windows.h> ...

Вывод содержимого пунктов меню на одну и ту же страницу
Добрый вечер! Я новичок в веб (базовый html, css). В процессе верстки сайта столкнулась с проблемой. Хотелось бы выложить картинки...

9
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
09.09.2021, 10:07
Лучший ответ Сообщение было отмечено Catstail как решение

Решение

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
import json
 
 
def foo(d):
    if 'menuitem' in d.keys():
        return len(d['menuitem'])
    for k in d.keys():
        if isinstance(d[k], dict):
            return foo(d[k])
 
 
s = '''{"menu": 
{
    "id": "file",
    "value": "File",
    "popup": {
        "menuitem": [
            {"value": "New", "onclick": "CreateNewDoc()"},
            {"value": "Open", "onclick": "OpenDoc()"},
            {"value": "Close", "onclick": "CloseDoc()"}
        ]
    }
}}'''
 
data = json.loads(s)
print(foo(data))
3
Эксперт Python
8849 / 4501 / 1864
Регистрация: 27.03.2020
Сообщений: 7,317
09.09.2021, 10:14
iSmokeJC, только вроде в foo() нужно в конце добавить return 0:
Обратите внимание, что определенных полей с некоторыми из требуемых имен ( ... menuitem) может не быть в данных, в этом случае нужно считать, что требуемых пунктов меню ноль
1
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
09.09.2021, 10:16
Gdez, а, ну да, чето упустил.
Ну, пусть ТС сам сделает хоть что-нибудь
0
0 / 0 / 0
Регистрация: 16.03.2020
Сообщений: 69
10.09.2021, 06:12  [ТС]
Для проверки наличия имен (menu, popup...) Добавляю условие if перед if 'menuitem' in d.keys():...
получается так:
if 'popup' in d.keys() :
if 'menuitem' in d.keys():


Но получается ошибка. Как правильно добавить ещё одно условие?
0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
10.09.2021, 09:06
elif ?

Добавлено через 19 минут
mikhail8899, вообще, если так разобраться, вопрос не полон. Можно, конечно, притянуть за уши...
Python
1
2
3
4
5
6
def foo(d):
    if 'popup' in d.keys():
        return len(d['popup']['menuitem'])
    for k in d.keys():
        if isinstance(d[k], dict):
            return foo(d[k])
1
0 / 0 / 0
Регистрация: 16.03.2020
Сообщений: 69
12.09.2021, 15:34  [ТС]
Почему не отрабатывает множественное условие? Что не так делаю?:
Python
1
2
3
4
5
6
7
8
def foo(d):
if ('menu' in d.keys() and 'popup' in d.keys() and 'menuitem' in d.keys()):
    return len(d[menu]['popup']['menuitem'])
else:
    quit("0")
for k in d.keys():
    if isinstance(d[k], dict):
         return foo(d[k])
Последовательно несколько if, тоже не работает. Отрабатывает только первое условие:
Python
1
2
3
4
5
6
7
8
if ..:
   return....
else:
    ....
if ....:
    return....
else:
    ....
Необходимо проверить наличие menu, poput, nenuutem. И в случае если все три условия выполняются, то вывести число пунктов меню. Если хоть одного нет из условия, то вывести 0
0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
12.09.2021, 18:26
Какая-то дичь...
Ну вот и решение дикое ))))))
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
import re
 
s = '''
{"menu": {
"id": "file",
"value": "File",
"popup": {
"menuitem": [
{"value": "New", "onclick": "CreateNewDoc()"},
{"value": "Open", "onclick": "OpenDoc()"},
{"value": "Close", "onclick": "CloseDoc()"}
]
}
}}
'''
 
if all(map(lambda x: x in s, ['menu', 'popup', 'menuitem'])):
    print(len(re.search(r'(?ms)(?<=menuitem": \[)(.*?)]', s).group(1).split('},')))
1
0 / 0 / 0
Регистрация: 16.03.2020
Сообщений: 69
14.09.2021, 07:35  [ТС]
Спасибо! Все красиво. То что надо
0
0 / 0 / 0
Регистрация: 19.09.2021
Сообщений: 1
19.09.2021, 19:22
Еще более дикое

Python
1
2
3
4
5
6
7
8
import json
 
with open('data.json', 'r', encoding='utf-8') as f: #открыли файл с данными
    data = json.load(f)
    try:
        print(len(data['menu']['popup']['menuitem']))
    except:
        print(0)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
19.09.2021, 19:22
Помогаю со студенческими работами здесь

Вывод меню из базы. Создание пунктов в админке
Здравсвуйте. Ни как не могу нагуглить как хранить и выводить меню из базы mysql с помощью php. А так же изменение пунктов меню через...

Создать скрипт, осуществляющий вывод меню, состоящего из следующих пунктов
Создать скрипт, осуществляющий вывод меню, состоящего из следующих пунктов: текущий пользователь, объем используемой памяти, объем...

Вывод дочерних пунктов одного пункта меню в разные модули (с исключением)
Здравствуйте, Уважаемые коллеги. Joomla 2.5.28. Имеется меню - родитель (It-решения) url: it-resheniya В нем есть около 100 дочерних...

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

Центровка пунктов в выпадающем меню по центру ul блока (Битрикс меню)
Всем привет! Требуется в выпадающем меню, т.е. в самых блоках выпадающего меню, сделать чтобы все ссылки были в центре, т.е. чтобы они...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru