gpt4 book ai didi

python - 使用数组时无法解决 "List index out of range"错误

转载 作者:行者123 更新时间:2023-12-01 02:18:36 27 4
gpt4 key购买 nike

我正在尝试编写一个“钱箱”风格的密码破解程序,它可以旋转拨号盘,每个拨号盘上都有每个字符,直到找到答案。我对 Python(以及一般的编码)还很陌生,但是在很多帮助下,我能够使用数字和字母(大写和小写)来完成此操作

现在我正在尝试构建它,以便它只检查数字和小写字母,而不是大写字母。这是我得到的:

def method_2(num_pass_wheels):
result = False
still_searching = True
print()
print("Using method 2 and searching with " + str(num_pass_wheels) + " characters.")
wheel = " abcdefghijklmnopqrstuvwxyz0123456789"
# set all of the wheels to the first position
pass_wheel_array = array('i', [1, 0, 0, 0, 0, 0, 0, 0, 0])

while still_searching:
ourguess_pass = ""
for i in range(0, num_pass_wheels): # once for each wheel
if pass_wheel_array[i] > 0:
ourguess_pass = wheel[pass_wheel_array[i]] +
ourguess_pass
print ("trying [" + ourguess_pass + "]")
if (check_pass(which_password, ourguess_pass)):
print ("Success! Password " + str(which_password) + " is " + ourguess_pass)
still_searching = False # we can stop now - we found it!
result = True

# spin the rightmost wheel and if it changes, spin the next one over and so on
carry = 1
for i in range(0, num_pass_wheels): # once for each wheel
pass_wheel_array[i] = pass_wheel_array[i] + carry
carry = 0
if pass_wheel_array[i] > 62:
pass_wheel_array[i] = 1
carry = 1
if i == (num_pass_wheels - 1):
still_searching = False

return result

错误消息指向:

line 341, in <module>
foundit = method_2(8)

line 188, in method_2
ourguess_pass = wheel[pass_wheel_array[i]] + ourguess_pass

并抛出错误:

IndexError: string index out of range

我知道这与我从“wheel”中删除大写字母有关,但我不知道如何修复它。有什么帮助吗?

最佳答案

您在此处硬编码长度检查限制:

        if pass_wheel_array[i] > 62: <-----
pass_wheel_array[i] = 1
carry = 1

wheel 在您发布的版本中只有 36 项。使用 len(wheel) 而不是使用 62

但是由于数组索引是从零开始的,您可能需要将其更改为

if pass_wheel_array[i] > len(wheel) - 1:
#or
if pass_wheel_array[i] == len(wheel):

关于python - 使用数组时无法解决 "List index out of range"错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48143610/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com