根据字符串的索引对列表进行排序

Sort a list according to the indexes of a string

如何使列表中输入的元素与给定单词的索引相同?

在这种情况下,它是一个在刽子手游戏中随机选择的神秘词。

它可能看起来像这样(这只是我采用的代码部分,但问题就在这里):

import random
    
WORDS = ('Fire', 'Wind', 'Water', 'Earth')
word = random.choice(WORDS)
letters = []
    
while len(letter) != len(word):
    aletter = input('choose a letter...') 
    if aletter in word and len(aletter) == 1:
        for i in range(len(word)):
            letter.append(aletter)

我不知道怎么说,每个添加到列表中的元素都不会乱放,即使我们在输入的第一个字母之前输入它,也会按顺序排列aletter

例如,如果单词是 Wind,我在 'W' 之前发送 'i'(在单词中),但我在它之后输入 'W' 然后 'i'将附加在 'W' 之前而不是 ['W', 'i'] (正常顺序是 ['W', 'i', 'n', 'd'] 但对于这个问题,字母可能会完全颠倒,具体取决于它们的附加顺序。我认为这与元素的索引有关。

这就是我试图以某种方式表达的意思:

"此列表 (letters) 将根据 word 中元素的索引重新排列自身。"

letters[i] = word[k]

上面这个例子有一个双循环,一个用于aletter,一个用于word,索引是ik

letters.insert(i, aletter)

在这个中,我想在 i.

的位置插入 word 索引中的所有 aletter

letters.index(aletter) == i

最后,在这一个中,我希望输入元素的每个索引都等于 word

我将列表转换成字符串来比较它们,但我的问题是如何先对这个列表进行排序。

IIUC,您可能需要使用一些占位符,例如下划线,用于尚未猜出的字母。例如:

import random

WORDS = ('Fire', 'Wind', 'Water', 'Earth')
word = random.choice(WORDS)
letters = ['_' for letter in word]

while '_' in letters:
    print(''.join(letters))
    aletter = input('choose a letter...') 
    if aletter in word and len(aletter) == 1:
        for i, c in enumerate(word):
            if aletter == c:
                letters[i] = c