python - 索引错误 : string index out of range while working with random module

标签 python python-3.x string random index-error

我在 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/

相关文章:

java - 如何使用 Matcher 正确替换字符串中出现的所有模式

python - Asyncio + aiohttp - redis Pub/Sub 和 websocket 在单个处理程序中读/写

python - 用户选择的变量从列表中删除

string - 从实数到字符串变量对话

python - 使用 `-m` 的目的是什么?

python - 根据 Django 模型中的条件根据需要创建模型字段

c - 从 C 中的字符串中删除第一个单词

python - 使用 OpenCv Python 将蒙版应用于图像

python - 将视频帧与另一个图像python进行比较?

python - Airflow 2/docker-compose : how to install Python dependencies for DAGs?