开发者社区> 问答> 正文

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

我正在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 1797 0
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
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载