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

Представление словарей с использованием if

26.02.2023, 09:51. Показов 4041. Ответов 3

Студворк — интернет-сервис помощи студентам
Добрый день

Пожалуйста, помогите решением данной задачи

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

я решила данную задачу с помощью цикла FOR

Теперь нужно написать в виде представление словарей

Но, у меня есть if и n (вес) меняется на минус j

Ниже оставлю свою версию
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
T = {}
for i in range(3):
    i = input("Введите название вещи: ")
    j = int(input("Введите вес: "))
    T.setdefault(i, j)
    
print(T)
n = int(input("Введите общий вес: "))
for i,j in T.items():
    if j <= n:
        print(i)
        n -= j
 
Предсатвление:
 
d = {i: j, n -= j for i,j in T.items() if j <= n}
print(d)
как мне в представлении указать, что n -= j ?
по синтаксису не проходит

помогите, пожалуйста
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
26.02.2023, 09:51
Ответы с готовыми решениями:

Задача с использованием функций, списка словарей и условных конструкций
Дан список словарей movies, который содержит информацию о фильмах. Ключи каждого словаря - название, жанр, длительность, год выпуска. ...

Написать программу для перебора словарей с использованием цикла for
Написать программу: а) для перебора словарей с использованием цикла for; б) для подсчета суммы значений, связанных ключом в списке...

Поиск по списку словарей и вывод списка словарей
У меня есть список словарей, например: data= Как мне вывести этот список, чтобы каждый словарь был на каждой отдельной строке,...

3
2431 / 1474 / 633
Регистрация: 01.11.2021
Сообщений: 2,269
26.02.2023, 10:12
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
arr = []
for _ in range(3):
    i = input("Введите название вещи: ")
    j = int(input("Введите вес: "))
    arr.append((i, j))
 
arr = sorted(arr, key=lambda x: -x[1])
print(arr)
 
n = int(input("Введите общий вес: "))
 
d = {k: v for k, v in arr if v <= n and (n := n - v) >= 0}
print(d)
1
0 / 0 / 0
Регистрация: 26.02.2023
Сообщений: 6
28.02.2023, 11:33  [ТС]
Цитата Сообщение от Alexarh Посмотреть сообщение
k: v for k, v in arr if v <= n and (n := n - v) >= 0
Добрый день.
спасибо за ответ

Можете строку d = {k: v for k, v in arr if v <= n and (n := n - v) >= 0} словами написать что к чему?
вроде понимаю, но когда пытаюсь также решить, у меня ругается программа.

Для представление у меня есть готовый словарь

arr= {'зажигалка': 20, 'компас': 100, 'фрукты': 500, 'рубашка': 300,
'термос': 1000, 'аптечка': 200, 'куртка': 600, 'бинокль': 400, 'удочка': 1200,
'салфетки': 40, 'бутерброды': 820, 'палатка': 5500, 'спальный мешок': 2250, 'жвачка': 10}
n = int(input("Введите общий вес: "))
d = {k: v for k, v in arr if v <= n and (n := n - v) >= 0}
print(d)
0
2431 / 1474 / 633
Регистрация: 01.11.2021
Сообщений: 2,269
28.02.2023, 13:50
dorema,
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
arr = {'зажигалка': 20, 'компас': 100, 'фрукты': 500, 'рубашка': 300,
       'термос': 1000, 'аптечка': 200, 'куртка': 600, 'бинокль': 400, 'удочка': 1200,
       'салфетки': 40, 'бутерброды': 820, 'палатка': 5500, 'спальный мешок': 2250, 'жвачка': 10}
 
items = sorted(arr.items(), key=lambda x: -x[1])
 
n = int(input("Введите общий вес: "))
 
s1 = s2 = s3 = n
 
d1 = {}
for name, weight in items:
    if weight <= s1 and (s1 := s1 - weight) >= 0:
        d1[name] = weight
# то же самое
d2 = {}
for name, weight in items:
    if weight <= s2 and s2 >= 0:
        s2 = s2 - weight
        d2[name] = weight
# то же самое
d3 = {k: v for k, v in items if v <= s3 and (s3 := s3 - v) >= 0}
 
print(d1)
print(d2)
print(d3)
Тут можно было бы отказаться от второй проверки в 1 (сделать только изменение n (s1) как в варианте 2) и 2 варианте and (s1 := s1 - weight) >= 0 и and s2 >= 0, нет смысла проверять, что вес не отрицательный в общем-то. А вот для 3 варианта, чтобы это все работало в строку, это сделать надо, чтобы значение n (s3) менялось.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
28.02.2023, 13:50
Помогаю со студенческими работами здесь

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

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

Представление графов с использованием динамических структур
Операция надразбиения заключается в замене двух смежных ребер (u,v) и (v,w), общая вершина v которых имеет степень 2, одним ребром (u,w)....

Представление больших чисел с использованием массива
Для заданного натурального числа K найти такое натуральное N, что в десятичном числе {5}^{N} встретится К нулей подряд.

Представление полинома Жегалкина с использованием БПФ
Решил реализовать алгоритм представления многочлена Жегалкина с помощью БПФ. Вот первый шаг сделал. А дальше трудность. Не подскажите как...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! */ #include <iostream> #include <stack> #include <cctype>. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru