首页 > 解决方案 > Python一一显示字母,其余为点,空格为空格

问题描述

我正在做一个单词猜测器(用于 Discord)并且我有这个功能(我以前做过不同的事情,但在上一个问题中得到了一些帮助):

def hidden_word(self, keyword, counter=0):
    hidden = len(keyword) - counter
    dots = '.' * hidden
    return keyword[:counter] + dots

这需要要猜测的单词(称为关键字)和要显示的字母数量(计数器),例如,如果关键字是“test”并且计数器是 2,则该函数将返回“te..”

虽然如果关键字包含多个单词,例如“test word”(带有计数器 2),该函数将返回“te.......”,但这里的问题是不清楚关键字是否包含多个字。

我理想的输出是“te....”

经过一些研究,我认为这可以很容易地解决re.sub,如下所示:

# this function is called every x seconds
helpword = [re.sub(r'\S', '.', keyword)] # Returns "te.. ...." but not easily modifiable
helpword[counter] = keyword[counter] # Replace a dot with the following letter in the keyword

给出:TypeError:'str' 对象不支持项目分配,所以这不起作用。

我怎么能这样做?

ps我的完整代码在这里

标签: pythonlistre

解决方案


你好,代码不是很漂亮,但它可以工作

def hidden_word( keyword, counter=0):
    first_word = keyword.split(' ')[0]
    end=first_word[:counter]+"."*(len(first_word)-counter)+" "+" ".join(["."*len(i) for 
i in keyword.split(' ')[1:]])
    return end 


hidden_word("hello world !",2)

推荐阅读