Python 3.8-list.append(';█;';)但不用于空格字符?

Python 3.8-list.append(';█;';)但不用于空格字符?,python,Python,我是Python的初学者,正在努力编写我的第一个程序。我正在尝试创建一个游戏,游戏需要猜一个硬编码的句子 mystery_sentence='All things excellent are as difficult as they are rare' def printGuessedLetter(): print("This is the sentence to guess: " + ''.join(userGuesslist)) for n in mystery_sentenc

我是Python的初学者,正在努力编写我的第一个程序。我正在尝试创建一个游戏,游戏需要猜一个硬编码的句子

mystery_sentence='All things excellent are as difficult as they are rare'

def printGuessedLetter():
    print("This is the sentence to guess: " + ''.join(userGuesslist))


for n in mystery_sentence:
    userGuesslist.append('█')
printGuessedLetter()
上面的代码返回:

这是要猜测的句子:█████████████████████████████████████████████████████

下面是上面的一段代码:

letter = input("> Enter a letter:\n>> ").lower()[0]

if letter in userGuesses:
    print("You've already submitted this letter")

else:
    attempts -= 1
    userGuesses.append(letter)
    if letter in mystery_sentence:
        print("\nNice guess")
        if attempts > 0:
            print("You have ", attempts, "remaining attempt")
            for i in range(len(mystery_sentence)):
                if letter == mystery_sentence[i]:
                    letterIndex = i
                    userGuesslist[letterIndex] = letter.upper()
            printGuessedLetter()
由于“猜测”一句包含空格,我认为玩家更容易看到以下内容:██ ██████ █████████ ███ ██ █████████ ██ ████ ███ ████

然后,当玩家提交一封信时,它会如下所示:

下面是要猜测的句子: ██ ██████ █████████ A.██ A.█ █████████ A.█ ████ A.██ █A.██

等等

但是,我无法用完整块替换空格字符。我不确定list.append是正确的函数

有人有什么建议吗?

您可以使用替换所有非空白(
\S
)字符:

import re

mystery_sentence='All things excellent are as difficult as they are rare'
hidden = re.sub(r'\S', '█', mystery_sentence)

print(hidden)
# ███ ██████ █████████ ███ ██ █████████ ██ ████ ███ ████
如果您确实希望将此作为列表:

userGuesslist = list(hidden)

没有正则表达式的另一个选项:

hidden = ''.join(['█' if char !=' ' else ' ' for char in mystery_sentence])
print(hidden)    
# ███ ██████ █████████ ███ ██ █████████ ██ ████ ███ ████
或者,如果您真的想要列表而不是字符串:

userGuesslist = ['█' if char !=' ' else ' ' for char in mystery_sentence]
您可以使用替换所有非空白(
\S
)字符:

import re

mystery_sentence='All things excellent are as difficult as they are rare'
hidden = re.sub(r'\S', '█', mystery_sentence)

print(hidden)
# ███ ██████ █████████ ███ ██ █████████ ██ ████ ███ ████
如果您确实希望将此作为列表:

userGuesslist = list(hidden)

没有正则表达式的另一个选项:

hidden = ''.join(['█' if char !=' ' else ' ' for char in mystery_sentence])
print(hidden)    
# ███ ██████ █████████ ███ ██ █████████ ██ ████ ███ ████
或者,如果您真的想要列表而不是字符串:

userGuesslist = ['█' if char !=' ' else ' ' for char in mystery_sentence]

也许这会有帮助。可以将Unicode字符用于块

您可以像这样打印多个文件:

num = 10
block = u'\u2588'
blocks = block * num
print(blocks)
>> ██████████

num = 25
block = u'\u2588'
blocks = block * num
print(blocks)
>> █████████████████████████
您也可以这样做:

num = 25
block = chr(9608)
blocks = block * num
print(blocks)
>> █████████████████████████

也许这会有帮助。可以将Unicode字符用于块

您可以像这样打印多个文件:

num = 10
block = u'\u2588'
blocks = block * num
print(blocks)
>> ██████████

num = 25
block = u'\u2588'
blocks = block * num
print(blocks)
>> █████████████████████████
您也可以这样做:

num = 25
block = chr(9608)
blocks = block * num
print(blocks)
>> █████████████████████████

正则表达式对于您的问题来说是一种过分的手段。在用块字符替换其他字符时保留空格的简单方法是

userGuesslist = []
for n in mystery_sentence:
    if n == ' ':
        userGuesslist.append(' ')
    else:
        userGuesslist.append('█')

另外,请注意,
letterIndex
变量在代码中是多余的(您可以只保留
i

正则表达式对于您的问题来说是一个多余的变量。在用块字符替换其他字符时保留空格的简单方法是

userGuesslist = []
for n in mystery_sentence:
    if n == ' ':
        userGuesslist.append(' ')
    else:
        userGuesslist.append('█')

另外,请注意,
letterIndex
变量在代码中是多余的(您可以只保留
i

它似乎破坏了我的代码,因为我需要以下代码:forn in summary\u句话:userGuesslist.append('█') printGuessedLetter()要执行它。我尝试用“隐藏”替换“神秘句子”,但没有成功。你知道怎么回事吗?我将输出添加为列表,但如果你要做的只是打印它们,只需使用字符串。这似乎破坏了我的代码,因为我需要以下代码:对于神秘句子中的n:usergustislist.append('█') printGuessedLetter()来执行它。我尝试用“隐藏”替换“神秘句子”,但没有效果。你知道怎么回事吗?我将输出添加为列表,但如果你要做的只是打印它们,只需使用字符串即可。