我引用的刽子手代码来自于使用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循环究竟是如何工作的?
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