索引器:字符串超出范围

2024-06-24 13:30:47 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图创建一个随机字母表,但我似乎得到这个字符串超出范围的错误。你知道吗

def removeChar(string, idx):
    return string[:idx] + string[idx+1]

def keyGen():
    alphabet = 'abcdefghijklmnopqrstuvwxyz '
    key = ""
    for i in range(len(alphabet)):
        ch = random.randint(0,25-i)
        key = key + alphabet[ch]
        alphabet = removeChar(alphabet, ch)
    return key

print(keyGen())

我得到的错误是

line 109, in keyGen
key = key + alphabet[ch]
IndexError: string index out of range

任何帮助都将不胜感激


Tags: key字符串instringreturndef错误range
2条回答

所以如果目标只是随机排列字母表而不重复字符。我相信这个简单的解决方案会奏效:

import string
import random

all_chars = list('abcdefghijklmnopqrstuvwxyz')
random.shuffle(all_chars)
print (''.join(all_chars))

如果你搬家

alphabet = removeChar(alphabet, ch)

在for循环之外,它将工作。您得到的索引超出范围,因为removeChar每次迭代都将索引减少1。你知道吗

import random
def removeChar(string, idx):
    return string[:idx] + string[idx+1]

def keyGen():
    alphabet = 'abcdefghijklmnopqrstuvwxyz '
    key = ""
    for i in range(len(alphabet)-1):
        ch = random.randint(0,25-i)
        key = key + alphabet[ch]
    removeChar(alphabet, ch)
    return key
    print(ch, alphabet)
keyGen()

这会给你一个类似这样的输出:

"xtcrmofnojnenkidfaaabdccba"

如果这不是您想要的输出,请给我们一个您想要的输出的例子。你知道吗

相关问题 更多 >