我在 python 中制作密码生成器,这是我一直遇到的错误。这是我的代码:
import random
symbols = 'qwertyuiopasdfghjklzxcvbnm'
choosing_len = int(input('> '))
def password_generating():
def random_letter():
zero = 0
lenght = len(symbols)
letter_index = random.randint(zero, lenght+1)
random_symbol = symbols[letter_index]
return random_symbol
password = []
while len(password) != choosing_len:
key = [random_letter()]
password = password + key
print(''.join(password))
password_generating()
我不得不说这个错误是随机出现的(它几乎从不出现在 6 上)。我试着一步一步地分析它并删除了一些代码部分。没有任何帮助。
最佳答案
错误在这里:
letter_index = random.randint(zero, lenght+1)
不同于range(a, b)
,它给出了从 a 到 b 的数字,不包括 b,即 a <= x < b
, random.randint(a, b)
从 a <= x <= b
中给出一个随机整数.要纠正这个问题,我们可以使用
letter_index = random.randint(zero, lenght - 1)
甚至更好,
random_symbol = random.choice(symbols)
关于python - 索引错误 : string index out of range while working with random module,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59378424/