对于刽子手游戏的for循环感到困惑?

Nat*_*dim 5 python

我引用的刽子手代码来自于使用Python发明你自己的游戏书:

在显示游戏板的功能中,有一个for循环用一个由下划线组成的字符串替换正确的猜测字母,这些字母对应于secretWord的内容:

    for i in range(len(secretWord)):
        if secretWord[i] in correctLetters:
            blanks = blanks[:i] + secretWord[i] + blanks[i+1]
Run Code Online (Sandbox Code Playgroud)

我很难理解并想象线条blanks = blanks[:i] + secretWord[i] + blanks[i+1] 让我们说secretWord = "otter"blanks = "_____"(五个下划线).for循环究竟是如何工作的?

Chr*_*ley 2

for i in range(len(secretWord)):
    if secretWord[i] in correctLetters:
        # blanks = the underscores from 0 to i found in blanks
        # + the secret letter at index i in secretWord
        # + the underscores from i+1 to the end found in blanks
        blanks = blanks[:i] + secretWord[i] + blanks[i+1:]
Run Code Online (Sandbox Code Playgroud)

例子:

blanks = _____ (5 underscores)
secretWord = Hi

lets assume that 'i' is in correct letters and 'h' is not
(loop 2 times since len('hi') == 2)
------------------------------------------------------
First iteration:

if 'h' in correctLetters (its not so skip):
------------------------------------------------------
Second iteration:

'i' is in correctLetters

blanks = __ (underscores from 0 to 1 in blanks) 
   + 'i' (the letter at secretWord[1]) 
   + __ (blanks[2:onward] - the rest of the underscores ignoring the one where the letter goes)
Run Code Online (Sandbox Code Playgroud)

将相同的逻辑应用于像 Otter 这样的较长单词,会发生的情况是,它将继续用正确字母中找到的 SecretWord 中的字母替换空白中的下划线。SecretWord otter 和空白 = _____ 的结果意味着空白 = otter