Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/304.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 提取字母并填充单词的点_Python_For Loop_While Loop - Fatal编程技术网

Python 提取字母并填充单词的点

Python 提取字母并填充单词的点,python,for-loop,while-loop,Python,For Loop,While Loop,我正在尝试制作一个脚本,其中有一个单词(“管理员”),还有一个字母的提取 这个词 我在每个循环后寻找的输出如下: 第1个循环:提取字母“d” _d!!!!!!!!! 第二个循环:提取字母“m” _d m! 第三个循环:提取字母“a” 一个d m uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu 现在,问题是我想一次只填补一个空缺。正如字母“a”所示,当一个字母在一个时间段内出现不止一次时 w

我正在尝试制作一个脚本,其中有一个单词(“管理员”),还有一个字母的提取 这个词

我在每个循环后寻找的输出如下:

第1个循环:提取字母“d”

_d!!!!!!!!!

第二个循环:提取字母“m”

_d m!

第三个循环:提取字母“a”

一个d m uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu

现在,问题是我想一次只填补一个空缺。正如字母“a”所示,当一个字母在一个时间段内出现不止一次时 word,脚本将填充字母所在的所有位置


可能解决方案基于这样一个事实,即脚本应该提取索引而不是单词,并填充相应的位置 通过一本字典来检索每个索引。我试着去做,但没有成功

你对我如何使它工作有什么想法吗

守则:

import time
import random


word = 'administrator'
letters_extracted = []

def string_word(word, letters_extracted):
    string = ''
    for letter in word:
        print("\nletter:", letter)
        print("letters_extracted:", letters_extracted)            
        if letter in letters_extracted:
            string += letter + " "
        else:
            string += ' _ '
    return string

letters_in_word = []
for letter in word:
    letters_in_word.append(letter)
    print("letters_in_word", letters_in_word)

while True:
    print(string_word(word, letters_extracted))
    new_letter = random.choice(letters_in_word)
    print("\nnew letter = ", new_letter)
    #in order to avoid to extract the same letter twice.
    letters_in_word.remove(new_letter)
    letters_extracted.append(new_letter)
    time.sleep(1)
    print(string_word(word, letters_extracted))
    if len(letters_in_word)==0:
        break
下面是我使用字典的尝试。为了提取随机字母,我重新排列了单词“administrator”,并将其放入一个名为“word\u dictionary\u shuffled”的字典中。问题是,当for循环开始时,它遵循重新排列的字典(word\u dictionary\u shuffled)中字母的顺序。因此,字母的顺序与原来的单词(“管理员”)不同。顺序是重新排列的单词的顺序。此外,下划线没有显示出来

import time
import random

word = 'administrator'
word_shuffled = ''.join(random.sample(word, len(word)))

word_dictionary = dict(enumerate(word))
word_dictionary_shuffled = dict(enumerate(word_shuffled))

print("word_dictionary", dict(enumerate(word)))
print("word_dictionary_shuffled", dict(enumerate(word_shuffled)))



def string_word(word_dictionary, word_dictionary_shuffled):
    string = ''
    for index,value in word_dictionary_shuffled.items():
        if index in word_dictionary_shuffled:
            string += value + " "
        else:
            string += ' _ '
        print("\nindex", index)
        print("string = ", string)
    return string


while True:
    print(string_word(word_dictionary, word_dictionary_shuffled))

    time.sleep(1)

    print(string_word(word_dictionary, word_dictionary_shuffled))    

将索引映射到字母不需要dict。字符串本身已经可以通过字母索引进行索引。您应该无序排列索引,而不是字母,这样您就可以通过无序排列的索引逐一取消相应字母的掩码:

import time
import random

word = 'administrator'

indices_shuffled = list(range(len(word)))
random.shuffle(indices_shuffled)
letters = ['_'] * len(word)
for i in indices_shuffled:
    letters[i] = word[i]
    print(''.join(letters))
    time.sleep(1)
样本输出:

_d___________
_d_____t_____
_dm____t_____
_dm__i_t_____
_dm__ist_____
_dm__ist_a___
_dm__ist_a_o_
adm__ist_a_o_
admi_ist_a_o_
admi_istra_o_
admi_istra_or
administra_or
administrator
另一个解决方案:

import random

word = 'administrator'
result = [[x, '_'] for x in word]
for i in result:
    res = random.choice([x for x in result if x[1] == '_'])
    index = result.index(res)
    result[index][1] = result[index][0]
    print(''.join([x[1] for x in result]))
输出:

____n________
____n___r____
____n_s_r____
____n_s_r__o_
____n_s_r__or
___in_s_r__or
a__in_s_r__or
a__in_str__or
ad_in_str__or
ad_in_stra_or
ad_inistra_or
ad_inistrator
administrator

那么,您想以随机顺序逐个显示字母吗?您可以
计算字母的出现次数,并可以使用
索引来查找索引“解决方案可能基于这样一个事实,即脚本应该提取索引而不是单词,并通过字典填充每个索引对应的位置。”。我尝试过这样做,但没有成功。“是的,这正是解决方案应该是什么,因此请向我们展示您在正确解决方案方面的非工作尝试,以便我们可以帮助解决问题。我添加了我尝试使用字典解决问题的内容。