Python 2.7 Python:用于随机创建字母表的超出范围列表
我想创建一个随机字母表。因此,我的代码如下:Python 2.7 Python:用于随机创建字母表的超出范围列表,python-2.7,Python 2.7,我想创建一个随机字母表。因此,我的代码如下: alphabet = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'] def new_alphabet(): for i in range(0, 26): j = 25 my_new_alphabet = [
alphabet = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z']
def new_alphabet():
for i in range(0, 26):
j = 25
my_new_alphabet = [None] * 26
my_new_alphabet[i] = alphabet[random.randint(0, j)]
alphabet.remove(my_new_alphabet[i])
j = j-1
return my_new_alphabet
print new_alphabet()
但当我尝试执行它时:
my_new_alphabet[i] = alphabet[random.randint(0, j)]
IndexError: list index out of range
这可能很简单,但我无法找到问题所在。提前感谢。您的代码有一些问题
- 您的
缺少字母字母表
,因此它只有25个元素,因此循环和随机索引的范围是一次性的,因此存在超出范围的错误“S”
- 行
和j=25
应该在循环之前,否则在每次迭代中都会重置它们my_new_alphabet=[None]*26
j
,只需使用实际字母表的边界即可:
def new_alphabet():
my_new_alphabet = []
while alphabet:
letter = alphabet[random.randint(0, len(alphabet) - 1)]:
# or just use this: letter = random.choice(alphabet)
alphabet.remove(letter)
my_new_alphabet.append(letter)
return my_new_alphabet
或者直接使用,这正是您想要的:
def new_alphabet():
my_new_alphabet = list(alphabet) # copy
random.shuffle(my_new_alphabet)
return my_new_alphabet