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 < b
,random.randint(a, b)
给出了从 a <= x <= b
的随机整数。要纠正这个问题,我们可以使用
letter_index = random.randint(zero, lenght - 1)
甚至更好,
random_symbol = random.choice(symbols)
我正在 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)