Уведомления

Группа в Telegram: @pythonsu

#1 Май 23, 2019 22:12:12

DewCooper
Зарегистрирован: 2019-05-23
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

Как исправить ошибку ValueError: invalid literal for int() with base 10: ''

Приветствую Всех Друзья! Помогите пожалуйста не особо силен в программирование. Нужно исправить код скрипта. Использую 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: ''

Отредактировано DewCooper (Май 23, 2019 22:16:42)

Прикреплённый файлы:
attachment ValueError.png (67,0 KБ)

Офлайн

#2 Май 24, 2019 02:03:41

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9981
Репутация: +  857  -
Профиль   Отправить e-mail  

Как исправить ошибку ValueError: invalid literal for int() with base 10: ''

У тебя в файле есть пустые строки, их надо убрать

  
>>> 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
>>>



Отредактировано py.user.next (Май 24, 2019 02:03:55)

Офлайн

#3 Май 24, 2019 06:44:03

DewCooper
Зарегистрирован: 2019-05-23
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

Как исправить ошибку ValueError: invalid literal for int() with base 10: ''

А что в коде изменить нужно чтобы все заработало ?

 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))

Офлайн

#4 Май 24, 2019 14:15:05

Rafik
Зарегистрирован: 2018-09-04
Сообщения: 231
Репутация: +  27  -
Профиль   Отправить e-mail  

Как исправить ошибку ValueError: invalid literal for int() with base 10: ''

А теперь-то на что ругается? Не вижу сообщения об ошибке. Самому некогда, да и лень прогонять Ваш код.

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version