Найти - Пользователи
Полная версия: Как исправить ошибку ValueError: invalid literal for int() with base 10: ''
Начало » Python для новичков » Как исправить ошибку ValueError: invalid literal for int() with base 10: ''
1
DewCooper
Приветствую Всех Друзья! Помогите пожалуйста не особо силен в программирование. Нужно исправить код скрипта. Использую 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))


В файле: 'text.txt'

вот эти значения:

0200e7c810f4553fe1722522f8dcfc8e810757ef427efefef79bdf08ddf3700fd5
0216b3e68fed004b2fea2119cdbb8ab2393dfe8fc99398da18e40b6e949e9e1278
022bbf0fcde9bcba6e1038b78bd6906ed00be95d1a6f912a7352f5aca2d7bb6bbc
021060631ef4a610aebc3c9e24f5b0e33dcd0eb422b8223dbd75c1e6edfd21dd72
0218cbb66d6a417890aea6bf5f8a83a4d181a89c5aba8121e20def5b42c311514e
025d8ea956802ed00ebec42b480c0eb77c6ada6ed3fceb40e5fff9aed0fa31c6b4
02264a8c56551abeb68d6112863249857a4360c38528d02b9313988ba062e6efed



При запуске данного скрипта выходит ошибка:
 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: ''

py.user.next
У тебя в файле есть пустые строки, их надо убрать
  
>>> compressed_keys = '\ne7\n'.split('\n')
>>> compressed_keys
['', 'e7', '']
>>> compressed_keys = [i for i in '\ne7\n'.split('\n') if i]
>>> compressed_keys
['e7']
>>>

Также у тебя основание системы счисления равно 10, надо передать 16 вторым аргументом
  
>>> 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
>>>
DewCooper
А что в коде изменить нужно чтобы все заработало ?

 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))
Rafik
А теперь-то на что ругается? Не вижу сообщения об ошибке. Самому некогда, да и лень прогонять Ваш код.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB