开发者社区 问答 正文

当处理随机模块时,字符串索引超出范围

我正在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中出现)。没有什么帮助。 问题来源StackOverflow 地址:/questions/59378424/indexerror-string-index-out-of-range-while-working-with-random-module

展开
收起
kun坤 2019-12-30 10:33:50 1815 分享
分享
版权
举报
1 条回答
写回答
取消 提交回答
  • 错误在这里:

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

    不像range(a, b),它给出从a到b的数字,不包括b,即a <= x < b,随机的。randint(a, b)给出了一个来自a <= x <= b的随机整数

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

    或者更好的是,

    random_symbol = random.choice(symbols)
    
    2019-12-30 10:33:56 举报
    赞同 评论

    评论

    全部评论 (0)

    登录后可评论
问答地址:
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等