Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Python

Модерирует : ShIvADeSt

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 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

Открыть новую тему     Написать ответ в эту тему

Adm10



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Здесь обсуждается всё, что связано с использованием Python: программирование, библиотеки, ресурсы и другие вопросы

Python


Python - высокоуровневый язык программирования общего назначения с динамической типизацией и автоматическим управлением памятью, ориентированный на повышение производительности разработчика, читаемости кода и его качества, а также на обеспечение переносимости написанных на нём программ

С чего начать?
Простой, понятный и вместе с тем грамотный ресурс на русском языке: pythonworld.ru + самоучитель
Библия PEP8

Всего записей: 35 | Зарегистр. 13-10-2006 | Отправлено: 15:48 16-06-2007 | Исправлено: useretail, 21:51 22-06-2024
akaGM

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
классный пакет по работе нашёл --
 
xrayutilities

Всего записей: 24840 | Зарегистр. 06-12-2002 | Отправлено: 22:37 25-09-2024 | Исправлено: akaGM, 22:38 25-09-2024
akaGM

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Код:

                key = 32 * (dst[n] / 32) #первое появление key, dst -- целое
                dst[n] = unmunge(dst[n], key)
                ctr = 2*n

                if key & (1 << 5):

                        dst[ctr / 5 + 18] |= 1 << (ctr % 5)

                if key & (1 << 6):


 
красные строчки генерят
 
TypeError: unsupported operand type(s) for &: 'float' and 'int'
 
кого там надо кастануть? :)

Всего записей: 24840 | Зарегистр. 06-12-2002 | Отправлено: 01:53 29-10-2024 | Исправлено: akaGM, 01:56 29-10-2024
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
akaGM

Цитата:
for &

побитовый И, не знает сделать его между float и int типами.
 

Цитата:
кого там надо кастануть?

зависит от того, какой результат нужен. но вообще - bitwise & это для целичисленнных
https://wiki.python.org/moin/BitwiseOperators
 

Цитата:
#первое появление key, dst -- целое

результат будет float, в случае 3го питона
https://stackoverflow.com/questions/21316968/integer-division-in-python-2-and-python-3

Всего записей: 15587 | Зарегистр. 20-09-2014 | Отправлено: 01:58 29-10-2024 | Исправлено: Mavrikii, 02:03 29-10-2024
akaGM

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mavrikii

Цитата:
зависит от того, какой результат нужен.
да фиг его знает, чужой код -- потёмки...
ну пусть будет инт ?

Всего записей: 24840 | Зарегистр. 06-12-2002 | Отправлено: 02:37 29-10-2024
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
akaGM

Цитата:
ну пусть будет инт ?

key должен быть интом.

Всего записей: 15587 | Зарегистр. 20-09-2014 | Отправлено: 02:47 29-10-2024
akaGM

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mavrikii

Цитата:
key = 32 * (dst[n] / 32) #первое появление key, dst -- целое

Цитата:
 
key должен быть интом.
зашибись ответ, зашибись язык...
я и спрашиваю: что надо для этого сделать?
 
key = (int)(32 * (dst[n] / 32)) так
key = int(32 * (dst[n] / 32)) или так
key = (32 * (dst[n] div 32)) или перетак
 
или вообще вот так до использования ?
int key = 0
 
как?
 
Добавлено:
 
 
во, придумал:
 
key = 32 * (dst[n] / 32)
==>
 
key = ( (dst[n] >> 5) << 5)
тока это онанизм называется...
 
key =  32 * (dst[n] >> 5)
так вроде ест, но толку...
 
 
попёрло блин...
 
for n in range(0,18): # n -- целое
ctr = 2*n
dst[(ctr+1) / 5 + 18] |= 1 << ((ctr+1) % 5)
TypeError: list indices must be integers or slices, not float
 
в этом удаве есть вообще целочисленные операции или приведение типов?

Всего записей: 24840 | Зарегистр. 06-12-2002 | Отправлено: 04:14 29-10-2024
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
akaGM

Цитата:
key = (int)(32 * (dst[n] / 32)) так
key = int(32 * (dst[n] / 32)) или так

а попробовать сложно? посмотреть значение и будет очевидно.
любой из процитированных вариантов
 

Цитата:
зашибись ответ, зашибись язык..

ну так знаете, что нужно кастать.
 

Цитата:
в этом удаве есть вообще целочисленные операции или приведение типов?

деление дает сразу float, добавление к нему int не меняет тип.

Всего записей: 15587 | Зарегистр. 20-09-2014 | Отправлено: 04:47 29-10-2024 | Исправлено: Mavrikii, 04:50 29-10-2024
U235

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Не надо ничего кастить. Надо просто подумать, а для чего число сначала делиться на 32, а затем умножается на 32...?
И смысла в этом нет.. Точнее в Python3 нет смысла, а в Python2 смысл есть, т.к. деление там для целых чисел целочисленное.
И код надо исправить так (округление к кратному 32):  
key = 32 * (dst[n] // 32)
Все.
 
Добавлено:
Еще варианты:
 
Код:
key = dst[n]&(~31)

 
Код:
key = -32&dst[n]

Всего записей: 980 | Зарегистр. 14-12-2005 | Отправлено: 05:17 29-10-2024 | Исправлено: U235, 06:06 29-10-2024
MBK2

Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
U235

Цитата:
округление к кратному 32

Не так. Правильно - обрезать младшие 5 бит двоичного целого числа.

Всего записей: 5032 | Зарегистр. 18-09-2018 | Отправлено: 07:35 29-10-2024
U235

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
MBK2, обрезание 5 битов это вроде как  сдвиг. А тут именно зануление. Что в результате дает число кратное 32.

Всего записей: 980 | Зарегистр. 14-12-2005 | Отправлено: 07:45 29-10-2024
MBK2

Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
А тут именно зануление.

Именно так. Сдвиг влево - обратно вправо дает искомое. Но проще сделать логический AND по маске ~0x1F
Я к тому, что это никак не округление, поскольку округление происходит в ближайшую сторону, а нам надо именно отбросить младшие биты.

Всего записей: 5032 | Зарегистр. 18-09-2018 | Отправлено: 08:02 29-10-2024
U235

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
MBK2, округление бывает разное. К ближайшему, вниз, вверх и т.д. https://ru.m.wikipedia.org/wiki/%D0%9E%D0%BA%D1%80%D1%83%D0%B3%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5

Всего записей: 980 | Зарегистр. 14-12-2005 | Отправлено: 08:48 29-10-2024
akaGM

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
господа профессоры, кто мне напишет одну строчку?
из вашей дискуссии я вынес только
key = 32 * (dst[n] // 32)
я прав, и с этим выносом пора уносить ноги? :)
 
 
Mavrikii

Цитата:
а попробовать сложно?
а одну строчку написать и сказать "так", а не моралитэ разыгрывать -- сложнее? я -- не 16-летный пОдросток, севший за "пайтон"...

Всего записей: 24840 | Зарегистр. 06-12-2002 | Отправлено: 12:59 29-10-2024 | Исправлено: akaGM, 14:41 29-10-2024
MBK2

Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Всегда надо предлагать один вариант решения проблемы.
Предложи человеку несколько вариантов - он не попробует ни одного, день промучавшись проблемой выбора, после чего бросит, обидевшись на всех...

Всего записей: 5032 | Зарегистр. 18-09-2018 | Отправлено: 13:31 29-10-2024
akaGM

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ещё и ослом обозвал...
 
Добавлено:
 
о! осталось-то всего ничего...
или ты ещё и вторую пятилетку будешь ударно заканчивать?

Всего записей: 24840 | Зарегистр. 06-12-2002 | Отправлено: 14:42 29-10-2024
MBK2

Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
akaGM
Действительно, обсуждение как то затягивается
Вот рабочий вариант скрипта

Код:
 
import random
import sys
 
def unmunge(c, n):
    assert c != 0x81
    c -= n
    if 0 <= c <= 25:
        return ord('A') + c
    elif 26 <= c <= 31:
        return ord('4') + c - 26
    else:
        raise Exception('Character out of range')
 
 
def construct(version, dst):
    version ^= 0x3b3
    dst[15] = (version >> 14) & 0x7f
    dst[16] = (version >> 7) & 0x7f
    dst[17] = version & 0x7f
 
    dst[15] ^= dst[0] ^ dst[3] ^ dst[6] ^ dst[9]  ^ dst[12]
    dst[16] ^= dst[1] ^ dst[4] ^ dst[7] ^ dst[10] ^ dst[13]
    dst[17] ^= dst[2] ^ dst[5] ^ dst[8] ^ dst[11] ^ dst[14]
 
    lookup_inv = [0x08, 0x5B, 0x5F, 0x49, 0x1C, 0x3F, 0x41, 0x1B, 0x4D, 0x22, 0x3D, 0x5A, 0x2C, 0x20, 0x15, 0x13,  
        0x3C, 0x6E, 0x0A, 0x7D, 0x71, 0x66, 0x6F, 0x61, 0x32, 0x6D, 0x57, 0x76, 0x35, 0x59, 0x63, 0x73,  
        0x11, 0x52, 0x16, 0x02, 0x1F, 0x1D, 0x25, 0x10, 0x09, 0x0B, 0x64, 0x6B, 0x0F, 0x51, 0x4B, 0x47,  
        0x5C, 0x2F, 0x70, 0x39, 0x5E, 0x05, 0x5D, 0x07, 0x4A, 0x7B, 0x7A, 0x69, 0x75, 0x06, 0x33, 0x3E,  
        0x17, 0x65, 0x54, 0x42, 0x04, 0x45, 0x1E, 0x2A, 0x4F, 0x26, 0x14, 0x30, 0x72, 0x01, 0x62, 0x58,  
        0x3A, 0x55, 0x6C, 0x24, 0x74, 0x1A, 0x27, 0x77, 0x2D, 0x50, 0x38, 0x12, 0x31, 0x68, 0x4C, 0x00,  
        0x40, 0x6A, 0x2B, 0x29, 0x34, 0x46, 0x4E, 0x03, 0x53, 0x0D, 0x0C, 0x28, 0x67, 0x7F, 0x0E, 0x7E,  
        0x23, 0x7C, 0x19, 0x3B, 0x21, 0x60, 0x79, 0x44, 0x36, 0x2E, 0x37, 0x43, 0x56, 0x48, 0x78, 0x18]
 
    for i in range(18):
        dst[i] += dst[(i+1) % 18] + i*3
        dst[i] %= 128
        dst[i] = lookup_inv[dst[i]]
 
    for n in range(18,26):
        dst[n] = 0
 
    for n in range(0,18):
        key = 32 * (dst[n] // 32)
        dst[n] = unmunge(dst[n], key)
        ctr = 2*n
        if key & (1 << 5):
            dst[ctr // 5 + 18] |= 1 << (ctr % 5)
        if key & (1 << 6):
            dst[(ctr+1) // 5 + 18] |= 1 << ((ctr+1) % 5)
        
    for n in range(18, 26):
        dst[n] = unmunge(dst[n], 0)
 
    perm_table = [14, 3, 5, 11, 8, 9, 12, 25, 4, 13, 22, 16, 2, 10, 6, 24, 0, 21, 19, 1, 20, 17, 23, 7, 15, 18]
    dst = [dst[perm_table[i]] for i in range(len(dst))]
 
    return dst
 
 
def generate(name, grace='a', version=1014):
    chars = ['\x00', '\x20', '\x61', '\x62', '\x63', '\x64', '\x65', '\x66', '\x67', '\x68', '\x69', '\x6A', '\x6B', '\x6C', '\x6D', '\x6E',  
        '\x6F', '\x70', '\x71', '\x72', '\x73', '\x74', '\x75', '\x76', '\x77', '\x78', '\x79', '\x7A', '\x41', '\x42', '\x43', '\x44',  
        '\x45', '\x46', '\x47', '\x48', '\x49', '\x4A', '\x4B', '\x4C', '\x4D', '\x4E', '\x4F', '\x50', '\x51', '\x52', '\x53', '\x54',  
        '\x55', '\x56', '\x57', '\x58', '\x59', '\x5A', '\x30', '\x31', '\x32', '\x33', '\x34', '\x35', '\x36', '\x37', '\x38', '\x39',  
        '\xCB', '\xE7', '\xE5', '\xCC', '\x80', '\x81', '\xAE', '\x82', '\xE9', '\x83', '\xE6', '\xE8', '\xED', '\xEA', '\xEB', '\xEC',  
        '\x3F', '\x84', '\xF1', '\xEE', '\xEF', '\xCD', '\x85', '\xD8', '\xAF', '\xF4', '\xF2', '\xF3', '\x86', '\x3F', '\x3F', '\xA7',  
        '\x88', '\x87', '\x89', '\x8B', '\x8A', '\x8C', '\xBE', '\x8D', '\x8F', '\x8E', '\x90', '\x91', '\x93', '\x92', '\x94', '\x95',  
        '\x3F', '\x96', '\x98', '\x97', '\x99', '\x9B', '\x9A', '\x2D', '\xBF', '\x9D', '\x9C', '\x9E', '\x9F', '\x3F', '\x3F']
 
    assert len(name) <= 13, 'Name cannot be longer than 13 characters'
    for c in name:
        assert c in chars, 'Name contains invalid character: ' + c
 
    padding = ''.join([random.choice(chars) for _ in range(13 - len(name))])
    skeleton = name + '\x00' + padding + grace + '\x00'*3 + '\x00'*8
 
    skeleton_indices = [chars.index(c) for c in skeleton]
    serial_ords = construct(version, skeleton_indices)
    serial = ''.join([chr(n) for n in serial_ords])
    return serial
 
 
if len(sys.argv) == 2:
    name = sys.argv[1]
else:
    name = 'rufo'
 
print( 'ColorPerfect v2.22 keygen by rufo')
print( 'Using name: ' + name + '\n'       )
 
for (v_name, v_id) in [('English - Windows', 1014), ('English - Mac', 879), ('German - Windows', 477), ('German  - Mac', 492)]:
    serial = generate(name, version=v_id)
    print( serial + ' (' + v_name + ')')
 
 

Результат работы в Варезнике

Всего записей: 5032 | Зарегистр. 18-09-2018 | Отправлено: 15:23 29-10-2024
akaGM

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
U235
Mavrikii
MBK2

 
спасибо всем помогшим и неравнодушным...
 
 
 
MBK2
 
да, спасибо, я и сам допилил...
 

Цитата:
Действительно, обсуждение как то затягивается
я вообще-то о 6-ти оставшихся постах...
поспокойнее будет? ;)

Всего записей: 24840 | Зарегистр. 06-12-2002 | Отправлено: 15:42 29-10-2024 | Исправлено: akaGM, 16:36 29-10-2024
skell

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Подскажите, какая последняя версия программы ставится на Win 7 SP1?
Установил 3.5, но нужен 3.9 для поиска для некоторых плагинов в qBittorrent.
Установлена Windows 7 Home Basic SP1, но при установке 3.9 ругается что нужен первый сервиспак,
есть вариант как-то обойти, принудительно обновить?
 
Систему пока поменять не могу, на этом железе на ней почти все шустро работает.

Всего записей: 217 | Зарегистр. 11-11-2006 | Отправлено: 11:46 09-11-2024
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
skell
https://github.com/adang1345/PythonWin7

Всего записей: 15587 | Зарегистр. 20-09-2014 | Отправлено: 11:50 09-11-2024
skell

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mavrikii большое спасибо!
Получилось! )

Всего записей: 217 | Зарегистр. 11-11-2006 | Отправлено: 12:22 09-11-2024 | Исправлено: skell, 23:03 09-11-2024
Открыть новую тему     Написать ответ в эту тему

Страницы: 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

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Python


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru