Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.88/25: Рейтинг темы: голосов - 25, средняя оценка - 4.88
3 / 3 / 1
Регистрация: 28.09.2016
Сообщений: 98

сортировка deque

17.03.2017, 03:46. Показов 5447. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, форумчане. Выполнял задание и вот стало ясно, что надо отсортировать деку(дали, как обязательный тип данных вместо списка), а потом как-то с индексами, что-то придумать - по коду разберетесь

Скиньте любые материалы или может саму реализацию сортировки и может чего посоветуете по поводу индексов (если допустить, что мы его отсортировали, то потом как-то надо будет переделать и все остальные deq[i]), пожалуйста, а то чутка устал.

И приму любую критику относительно кода(объективную и адекватную).

Вот оригинальное задание:
6. Составить инвентарную ведомость игрушек, включив следующие данные:
название игрушки, ее стоимость (в руб.), возрастные границы детей, для
которых предназначена игрушка. Вывести в новый список информацию о тех
игрушках, которые предназначены для детей от N до M лет, отсортировав их
по стоимости(по возрастанию).

Вот код:

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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
from collections import deque, OrderedDict 
 
 
 
class Collect:
    spisok_name = ['Пистолет Eagle ','Машинка BMW ','Радиоуправляемый вертолет ',\
    'Мяч ','Водяной пистолет ']
    spisok_price = [120, 12, 1400, 55, 10]
    spisok_age =[3, 8, 3, 12, 10]
    all_spisok = [spisok_name, spisok_price, spisok_age]
    deq = deque(all_spisok)
 
    def __init__(self, name = None, price = None, age = None):
        self.name = name
        self.price = price
        self.age = age
        self.dict()
        while True:
            self.answer = input('Вывести список игрушек(Да/Нет): ')
            if self.answer == 'Да':
                print('\n')
                self.printer()
                break
            elif self.answer == 'Нет':
                break
            else:
                continue
        if self.name == None or self.price == None or self.age == None:
            pass
        else:
            self.app()
            print('В список внесены новые данные.')
            
    def dict(self):
        self.d = OrderedDict({'Название игрушки: ': self.deq[0], 
                  'Стоимость в грн.: ': self.deq[1] ,
                  'Возрастные границы детей : ': self.deq[2]})
        #self.struct = OrderedDict(self.d)
        
    def printer(self):
        for self.key in self.d:
            print(self.key)
            self.temp = self.d.get(self.key)
            i = 0
            while i < len(self.deq[0]):
                print(self.temp[i])
                i += 1
            print('\n')
            
    def app(self):
        self.deq[0].append(self.name)
        self.deq[1].append(self.price)
        self.deq[2].append(self.age)
 
    def sort(self):#вот здесь должно быть сортировка деки
        print('Начало сортировки ')
        self.N = int(input('Введите от какого возраста сортируем игрушки: '))
        self.M = int(input('Введите до какого возраста сортируем игрушки: '))
        print('Игрушки предназначенные для детей от ',self.N ,' до ',self.M,' лет')   
        for self.key in self.d:
            print('\n',self.key, sep='')
            self.temp = self.d.get(self.key)
            i = 0
            while i < len(self.deq[0]):
                if self.d['Возрастные границы детей : '][i] >= self.N and \
                   self.d['Возрастные границы детей : '][i] <= self.M:
                   print(self.temp[i])                 
                i += 1
                 
while True:
    answer_obj = input('Занести новую игрушку? (Да/Нет): ')
    if answer_obj == 'Да':
            n = input('Введите название игрушки: ')
            p = input('Введите стоимость в грн.: ')
            a = int(input('Введите возрастные границы детей для игрушки "'\
            + n + '": '))
            obj = Collect(n, p, a)
            continue
    elif answer_obj == 'Нет':
            obj = Collect()
            break
    else:
            continue
    
obj.sort()
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
17.03.2017, 03:46
Ответы с готовыми решениями:

Реализовать класс Deque
Добрый день! Возникла проблема с решением задачи, описание которой привожу ниже. Реализуйте класс Deque с помощью методов ниже и...

Сортировка выбором, Сортировка простыми вставками, Сортировка пузырьком, Сортировка слиянием, Быстрая сортировка Хоара
Имеется список товаров, хранящихся на базе. Каждая строка этого списка содержит: инвентарный номер товара; количество видов этого товара;...

Пример с атрибутом класса и deque
смотрел на ютубе лекцию С.Лебедева (из CSC) по классам Python (ч.1). не понял вот этот пример. from collections import deque class...

4
440 / 432 / 159
Регистрация: 21.05.2016
Сообщений: 1,338
17.03.2017, 05:38
Лучший ответ Сообщение было отмечено Smart108 как решение

Решение

На ваш код страшно смотреть. Проще заново все написать, чем исправить

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
27
28
29
30
from collections import deque
 
class Item:
    def __init__(self, name, price, l_age, u_age = 18):
        self.name = name
        self.price = price
        self.l_age = l_age
        self.u_age = u_age
    def __repr__ (self):
        return '({}: {:} руб, от {:} до {:} лет)'.format (self.name, self.price, self.l_age, self.u_age)
 
class Reg:
    def __init__(self):
        self.deq = deque()
    def add(self, item):
        self.deq.append(item)
    def print_all(self):
        for item in self.deq:
            print(item)
    def get_list_by_age(self,n,m):
        return [item for item in sorted(self.deq, key=lambda Item: (Item.price, Item.l_age, Item.u_age)) if item.l_age <=n and item.u_age >= m]
   
if __name__ == '__main__':
    inv = Reg()
    inv.add(Item('Игрушка 1', 150, 2,6))
    inv.add(Item('Игрушка 2', 50,  5  ))
    inv.add(Item('Игрушка 3', 250, 1,3))
    inv.add(Item('Игрушка 4', 550, 1,5))
    list_by_age = inv.get_list_by_age(2,4)
    print (list_by_age)
1
3 / 3 / 1
Регистрация: 28.09.2016
Сообщений: 98
17.03.2017, 10:37  [ТС]
Вот сейчас больно было, но суть была в том, как отсортировать деку по ВОЗРАСТАНИЮ стоимости от N до M лет - то есть:


Python
1
deq = deque([14,2,13,1])
и сделать с ней sort() как для списка, но не превращая в список.

но все-равно спасибо, ваш код прекрасный пример для изучения антирукожопства.

Добавлено через 10 минут
И что это мы такое сделали?
Python
1
if __name__ == '__main__':
Добавлено через 6 минут
А нет, вы так и сделали, извиняюсь, но всё-же хочется увидеть пример сортировки деки
0
440 / 432 / 159
Регистрация: 21.05.2016
Сообщений: 1,338
17.03.2017, 10:51
Deque нельзя отсортировать. Можно получить сортированный список на основе deque
0
3 / 3 / 1
Регистрация: 28.09.2016
Сообщений: 98
17.03.2017, 11:00  [ТС]
Даже с кучей if-ов и циклов?

Жаль. Спасибо, что ответили .
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
17.03.2017, 11:00
Помогаю со студенческими работами здесь

Сортировка массива каждым из 3 способов (пузырьковая сортировка, сортировка выбором, сортировка вставкой)
1. Напишите программу, которая выполняет следующие функции: • заполнение элементов массива вещественными числами с заданной ...

Сортировка deque
Добрый вечер! Я реализовал свой класс deque. Возникло несколько вопросов... 1) Возможно ли как-то сделать, чтобы в деке были числа и...

Сортировка Deque
public class code7 { private String name; private String firma; private int kolvo; public void setName(String name) ...

Есть Deque, он заполнен 100 числами от -50 до 50. Нужно найти минимальный элемент, а затем каждый элемент Deque умножить
Здравствуйте. Задание следующие: есть Deque, он заполнен 100 числами от -50 до 50. Нужно найти минимальный элемент, а затем каждый элемент...

deque
Помогите пожалуйста: Контейнер deque 1. Создать объект-контейнер, дек, заполнить его данными, тип ***, где тип*** –...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
10 пpимет, которые всегда сбываются
Maks 31.03.2026
1. Чтобы, наконец, пришла маршрутка, надо закурить. Если сигарета последняя, маршрутка придет еще до второй затяжки даже вопреки расписанию. 2. Нaдоели зима и снег? Не надо переезжать. Достаточно. . .
Перемещение выделенных строк ТЧ из одного документа в другой
Maks 31.03.2026
Реализация из решения ниже выполнена на примере нетипового документа "ВыдачаОборудованияНаСпецтехнику" с единственной табличной частью "ОборудованиеИКомплектующие" разработанного в конфигурации КА2. . . .
Functional First Web Framework Suave
DevAlt 30.03.2026
Sauve. IO Апнулись до NET10. Из зависимостей один пакет, работает одинаково хорошо как в режиме проекта так и в интерактивном режиме. из сложностей - чисто функциональный подход. Решил. . .
Автоматическое создание документа при проведении другого документа
Maks 29.03.2026
Реализация из решения ниже выполнена на нетиповых документах, разработанных в конфигурации КА2. Есть нетиповой документ "ЗаявкаНаРемонтСпецтехники" и нетиповой документ "ПланированиеСпецтехники". В. . .
Настройка движения справочника по регистру сведений
Maks 29.03.2026
Решение ниже реализовано на примере нетипового справочника "ТарифыМобильнойСвязи" разработанного в конфигурации КА2, с целью учета корпоративной мобильной связи в коммерческом предприятии. . . .
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru