Conversation
| else: | ||
| d[char] = 1 | ||
| leaves = [Leaf(char, freq) for char, freq in d.items()] | ||
| leaves.sort(key=lambda x: (x.freq, -ord(x.ch))) |
There was a problem hiding this comment.
Достаточно просто
leaves.sort(key=lambda x: x.freq)
| i = 0 | ||
| while i < len(leaves): | ||
| if leaves[i].freq < parent.freq: | ||
| i += 1 | ||
| else: | ||
| break | ||
| leaves.insert(i, parent) |
There was a problem hiding this comment.
Заменить это обычным добавлением в список и его сортировкой sort. Так делать не надо, тк у тебя тут получается линейное время сортировки в теории, да и просто громоздко.
| leaves.insert(i, parent) | ||
| code = {} | ||
| leaves[0].walk(code, "") | ||
| t = "" |
There was a problem hiding this comment.
содержательные имена переменных.
| code = {} | ||
| leaves[0].walk(code, "") | ||
| t = "" | ||
| for x in s: |
There was a problem hiding this comment.
содержательные имена переменных.
|
|
||
|
|
||
| def decode(t, code): | ||
| tt = "" |
There was a problem hiding this comment.
содержательные имена переменных.
| def file_encode(filename1, filename2): | ||
| try: | ||
| with open(filename1, 'r') as f: | ||
| s = f.read() | ||
| t, code = encode(s) | ||
| except UnicodeDecodeError: | ||
| with open(filename1, 'rb') as f: | ||
| binary_data = f.read() | ||
| s = binary_data.decode('utf-8') | ||
| t, code = encode(s) | ||
| with open(filename2, 'w') as f: | ||
| f.write(t) | ||
| return filename2, code |
There was a problem hiding this comment.
в данной функции необходимо записывать в файл и таблицу.
| def file_decode(filename1, filename2, code): | ||
| with open(filename1, 'r') as f: | ||
| s = f.read() | ||
| t = decode(s, code) | ||
| with open(filename2, 'w') as f: | ||
| f.write(t) | ||
| return filename2 |
There was a problem hiding this comment.
Эта функция соответсвенно должна считывать и обрабатывать из файла таблицу, а не спрашивать её у пользователя.
весь смысл в том, чтобы можно было вызвать последовательно file_encode() и file_decode() без передачи между ними вспомогательной информации, кроме как названия файлов.
No description provided.