IndexError: string index out of range while working with random module

IndexError: string index out of range while working with random module

我正在 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 < brandom.randint(a, b) 给出了从 a <= x <= b 的随机整数。要纠正这个问题,我们可以使用

letter_index = random.randint(zero, lenght - 1)

甚至更好,

random_symbol = random.choice(symbols)