IndexError:字符串超出范围

我正在尝试创建一个随机字母,但是我似乎将此字符串超出范围错误。

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

任何帮助将不胜感激

as5101 回答:IndexError:字符串超出范围

如果您移动

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"

如果这不是所需的输出,请给我们提供您要查找的输出的示例。

,

因此,如果目标只是随机化字母而不重复字符。我相信这个简单的解决方案会起作用:

import string
import random

all_chars = list('abcdefghijklmnopqrstuvwxyz')
random.shuffle(all_chars)
print (''.join(all_chars))
本文链接:https://www.f2er.com/2934128.html

大家都在问