Python 提取字母并填充单词的点
我正在尝试制作一个脚本,其中有一个单词(“管理员”),还有一个字母的提取 这个词 我在每个循环后寻找的输出如下: 第1个循环:提取字母“d” _d!!!!!!!!! 第二个循环:提取字母“m” _d m! 第三个循环:提取字母“a” 一个d m uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu 现在,问题是我想一次只填补一个空缺。正如字母“a”所示,当一个字母在一个时间段内出现不止一次时 word,脚本将填充字母所在的所有位置Python 提取字母并填充单词的点,python,for-loop,while-loop,Python,For Loop,While Loop,我正在尝试制作一个脚本,其中有一个单词(“管理员”),还有一个字母的提取 这个词 我在每个循环后寻找的输出如下: 第1个循环:提取字母“d” _d!!!!!!!!! 第二个循环:提取字母“m” _d m! 第三个循环:提取字母“a” 一个d m uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu 现在,问题是我想一次只填补一个空缺。正如字母“a”所示,当一个字母在一个时间段内出现不止一次时 w
可能解决方案基于这样一个事实,即脚本应该提取索引而不是单词,并填充相应的位置 通过一本字典来检索每个索引。我试着去做,但没有成功 你对我如何使它工作有什么想法吗 守则:
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
那么,您想以随机顺序逐个显示字母吗?您可以
计算字母的出现次数,并可以使用索引来查找索引“解决方案可能基于这样一个事实,即脚本应该提取索引而不是单词,并通过字典填充每个索引对应的位置。”。我尝试过这样做,但没有成功。“是的,这正是解决方案应该是什么,因此请向我们展示您在正确解决方案方面的非工作尝试,以便我们可以帮助解决问题。我添加了我尝试使用字典解决问题的内容。