Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.60/15: Рейтинг темы: голосов - 15, средняя оценка - 4.60
95 / 18 / 13
Регистрация: 27.02.2018
Сообщений: 60
1

Задача Название книги Число экземпляров

28.03.2018, 21:07. Просмотров 2833. Ответов 6
Метки нет (Все метки)

Всем привет. Решение есть, нужна помощь в написании в ООП стиле.


Считать одной строкой произвольное количество пар элементов "Название книги Число экземпляров", второй строкой название алгоритма хеширования md5
Aibolit 66 Barmaley 67
md5

Создать 2 класса:
1-й преобразует строку вида 'Aibolit 66 Babmaley 67', где название книги уникально, в словарь.
2-й осуществляет хеширования названия книги алгоритмом md5.
Вывести отдельными операторами вывода:
- элементы словаря, отсортированные по возрастанию ключа, например:
Aibolit 66
Barmaley 67
- результаты хеширования в виде пар названия алгоритма и результатов хеширования ключей, отсортированных по возрастанию, представленных в шестнадцатеричном виде, сведенных в одну строку через пробел вида
md5 c47.... md5 5d....' (без пробелов в начале и конце строки).

Пример входных данных:
Aibolit 66 Barmaley 67
md5

Пример выходных данных:
Aibolit 66
Barmaley 67
md5 768414e20f688934976716d717e7986b md5 96b0e4c581d12e5014c6b443e770c460


Код:

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
# coding=utf-8
import hashlib
 
new_list = input().split()
n = input()
words = []
numbers = []
 
for i in new_list:
    if i.isalpha():
        words.append(i)
 
for i in new_list:
    if i.isdigit():
        numbers.append(i)
 
z = tuple(zip(words, numbers))  # преобразует строку вида 'Aibolit 66 Babmaley 67',
dict1 = dict(z)                  #  где название книги уникально, в словарь
 
 
for key, value in sorted(dict1.items()):
    print(key, value)   #элементы словаря, отсортированные по возрастанию ключа
 
 
for key in sorted(dict1.keys()):
    print(n, hashlib.md5(key.encode()).hexdigest(), end=" ") #осуществляет хеширования названия книги алгоритмом md5

Пытался сделать как-то так:

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
import hashlib
 
 
new_list = input().split()
enc = input()
 
 
class New_dict:
 
    def get_dict(self):
        words = []
        numbers = []
        for i in new_list:
            if i.isalpha():
                words.append(i)
 
        for i in new_list:
            if i.isdigit():
                numbers.append(i)
 
        z = tuple(zip(words, numbers))
        dict1 = dict(z)
        
        for key, value in sorted(dict1.items()):
            print(key, value)
        return dict1
 
class Hash_md5(Get_dict):
 
    def get_hash(self):
        for key in sorted(dict1.keys()):
            print("md5", hashlib.md5(key.encode()).hexdigest(), end="")
 
 
a = New_dict()
a.get_dict()
b = Hash_md5()
print(b.get_hash())
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
28.03.2018, 21:07
Ответы с готовыми решениями:

Описать структуру Bibliotec, содержащую следующие поля: автор книги, инвентарный номер книги, название книги
Описать структуру BIBLIOTEC содержащий следующие поля: автор книги , инвентарный номер книги ,...

Построить запрос, выводящий для каждой книги название первого по алфавиту автора и общее количество авторов книги
Товарищи, хэлп. Есть одно задание составить запрос, но что-то не клеится. Формулировка задания:...

Выборка количества экземпляров книги с определённым названием и её чтецов
Как записать в один запрос выборку количества экземпляров книги с конкретным названием и кол-ва...

Разработать базу данных «Научно-техническая библиотека» (фамилия, имя, отечество, автор книги, название книги, город и издательство, год выпуска, тема
что то никак понять не могу(( Разработать базу данных «Научно-техническая библиотека» (фамилия,...

6
1786 / 1270 / 625
Регистрация: 21.03.2016
Сообщений: 3,540
28.03.2018, 21:45 2
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
import hashlib
 
class New_dict(object):
    
    book = {}
    def __init__(self, data):
        self.data = data
        
    def get_dict(self):
        s = iter(self.data.split())
        for key,val in zip(s,s):
            self.book[key] = val
        
class Hash_md5(New_dict):
    
    def __init__(self,enc):
        self.enc = enc 
        super(New_dict, self).__init__()
    
    def get_hash(self):
        for key in sorted(self.book):
            print("md5", hashlib.md5(key.encode()).hexdigest(), end="")
            
new_list = input()
enc =  input()
a = New_dict(new_list)
a.get_dict()
b = Hash_md5(enc)
b.get_hash()
у вас откуда взялся класс родитель Get_dict в 28 строке? вы параметры не передаете в классы на основе чего там будкт работать методы данных то нет. у меня код тоже не ас я пока еще сам вникаю в ооп
2
95 / 18 / 13
Регистрация: 27.02.2018
Сообщений: 60
28.03.2018, 21:53  [ТС] 3
Цитата Сообщение от Semen-Semenich Посмотреть сообщение
у вас откуда взялся класс родитель Get_dict в 28 строке?
Там у меня New_dict должно быть. Сейчас разберу ваш код, спасибо
0
1786 / 1270 / 625
Регистрация: 21.03.2016
Сообщений: 3,540
28.03.2018, 21:55 4
немного заплутал в ООП 18 строка не нужна.
0
151 / 102 / 33
Регистрация: 11.08.2016
Сообщений: 574
28.03.2018, 22:02 5
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
from hashlib import md5
 
class Books(dict):
    def __init__(self, text):
        l = text.split()
        super().__init__(zip(l[::2], [int(n) for n in l[1::2]]))
 
if __name__ == '__main__':
    b = Books('Aibolit 66 Barmaley 67')
    for n in sorted(b):
        print(n, b[n])
 
    print(' '.join(['md5 '+h for h in sorted([md5(n.encode()).hexdigest() for n in b])]))
Aibolit 66
Barmaley 67
md5 768414e20f688934976716d717e7986b md5 96b0e4c581d12e5014c6b443e770c460

Добавлено через 3 минуты
классы тут как бы не нужны, но раз просят ООП – вот класс и наследование.
2
0 / 0 / 0
Регистрация: 23.08.2017
Сообщений: 3
29.03.2018, 12:35 6
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
import hashlib
 
class New_dict(object):
    
    book = {}
    def __init__(self, data):
        self.data = data
        
    def get_dict(self):
        s = iter(self.data.split())
        for key,val in zip(s,s):
            self.book[key] = val
            print(key, val)
        
class Hash_md5(New_dict):
    
    def __init__(self,enc):
        self.enc = enc 
        super(New_dict, self).__init__()
    
    def get_hash(self):
        for key in sorted(self.book):
            print("md5", hashlib.md5(key.encode()).hexdigest(), end="")
            
new_list = input()
enc =  input()
a = New_dict(new_list)
a.get_dict()
b = Hash_md5(enc)
b.get_hash()
немного поправил
надо было print дописать, для нужного вывода)
0
0 / 0 / 0
Регистрация: 23.08.2017
Сообщений: 3
29.03.2018, 13:15 7
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
import hashlib
 
class New_dict(object):
    
    book = {}
    def __init__(self, data):
        self.data = data
        
    def get_dict(self):
        s = iter(self.data.split())
        for key,val in zip(s,s):
            self.book[key] = val
        
class Hash_md5(New_dict):
    
    def __init__(self,enc):
        self.enc = enc 
        super(New_dict, self).__init__()
    
    def get_hash(self):
        for key in sorted(self.book):
            print(key, self.book[key], end="\n")
        for key in sorted(self.book):
            print("md5", hashlib.md5(key.encode()).hexdigest(), end=" ")
            
new_list = input()
enc =  input()
a = New_dict(new_list)
a.get_dict()
b = Hash_md5(enc)
b.get_hash()
по условию:
Цитата Сообщение от Zarelix Посмотреть сообщение
2-й осуществляет хеширования названия книги алгоритмом md5.
Вывести отдельными операторами вывода:
- элементы словаря, отсортированные по возрастанию ключа, например:
Aibolit 66
Barmaley 67
ну вот так получилось)
0
Миниатюры
Задача Название книги Число экземпляров  
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
29.03.2018, 13:15

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Не могу сделать упорядочение книг по шифру в структуре: имя книги, автор, издание, количество экземпляров
прошу вас:help:

Структура имеет вид: название издания, газеты или журнала, стоимость одного экземпляра, количество экземпляров
Используя функции и режим меню, создать файл из 10 структур, просмотреть файл, добавить в файл...

Выбрать название продукта, для которого в 1990 г. было продано максимальное количество экземпляров продукта
Нужно сделать запрос , немогу понять в чем причина SELECT , MAX(ITEM.quantity) FROM PRODUCT...

Объявить класс «Вокзал» с указанием полей: название вокзала, местонахождение (название города), число направлений, поток пассажиров.
Объявить класс «Вокзал» с указанием полей: название вокзала, местонахождение (название города),...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.