Я считаю, что ваша IndexError: string index out of range
ошибка проистекает из этой логики:
for x in range(0, 3 ** len(hexa)):
Что, вероятно, должно быть:
for x in range(len(hexa) ** len(inp)):
Гораздо меньшее число.Это никогда не сработает при вводе более одной цифры:
if(hexa[x] == pass):
Вам необходимо переосмыслить это.Используя собственную функцию hex()
в Python, я получил приблизительное представление о том, что, по-моему, вы пытаетесь сделать:
hexadecimal = input('hex value of 1-3 digits: ').lower()
hex_digits = '0123456789abcdef'
for x in range(len(hex_digits) ** len(hexadecimal)):
if hex(x) == "0x" + hexadecimal:
print("pos: %d, pass: %s" % (x, hexadecimal))
break
OUTPUT
> python3 test.py
hex value of 1-3 digits: 36f
pos: 879, pass: 36f
>
Если это не то, что вы пытаетесь сделать, объясните, пожалуйста, в своем вопросе.
Другие вопросы, которые следует учитывать: не используйте pass
в качестве имени переменной, это ключевое слово Python;input()
возвращает str
, вам не нужно звонить str
на него;избегайте точек с запятой (;) в Python.