Форум сайта python.su
Приветствую Всех Друзья! Помогите пожалуйста не особо силен в программирование. Нужно исправить код скрипта. Использую Python 3.
with open('text.txt') as f: text = f.read() compressed_keys = text.split('\n') uncompressed_keys = [] p = 0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2f for compressed_key in compressed_keys: y_parity = int(compressed_key[:2]) - 2 x = int(compressed_key[2:], 16) a = (pow_mod(x, 3, p) + 7) % p y = pow_mod(a, (p+1)//4, p) if y % 2 != y_parity: y = -y % p uncompressed_key = '04{:x}{:x}'.format(x, y) uncompressed_keys.append(uncompressed_key) with open('result.txt', 'w') as f: f.write('\n'.join(uncompressed_keys))
Traceback (most recent call last): File "D:\bit\A2\02\PubKey_04txt6.py", line 9, in <module> y_parity = int(compressed_key[:2]) - 2 ValueError: invalid literal for int() with base 10: ''
Отредактировано DewCooper (Май 23, 2019 22:16:42)
Прикреплённый файлы: ValueError.png (67,0 KБ)
Офлайн
У тебя в файле есть пустые строки, их надо убрать
>>> compressed_keys = '\ne7\n'.split('\n') >>> compressed_keys ['', 'e7', ''] >>> compressed_keys = [i for i in '\ne7\n'.split('\n') if i] >>> compressed_keys ['e7'] >>>
>>> int('e7') Traceback (most recent call last): File "<stdin>", line 1, in <module> ValueError: invalid literal for int() with base 10: 'e7' >>> int('e7', 16) 231 >>>
Отредактировано py.user.next (Май 24, 2019 02:03:55)
Офлайн
А что в коде изменить нужно чтобы все заработало ?
with open('text.txt') as f: text = f.read() compressed_keys = text.split('\n') uncompressed_keys = [] p = 0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2f for compressed_key in compressed_keys: y_parity = int(compressed_key[:2]) - 2 x = int(compressed_key[2:], 16) a = (pow_mod(x, 3, p) + 7) % p y = pow_mod(a, (p+1)//4, p) if y % 2 != y_parity: y = -y % p uncompressed_key = '04{:x}{:x}'.format(x, y) uncompressed_keys.append(uncompressed_key) with open('result.txt', 'w') as f: f.write('\n'.join(uncompressed_keys))
Офлайн
А теперь-то на что ругается? Не вижу сообщения об ошибке. Самому некогда, да и лень прогонять Ваш код.
Офлайн