有人能帮助我理解这个吗?

时间:2017-03-22 01:54:37

标签: python python-3.x

所以我对下面的代码有一个快速的问题。在程序中,它将显示一系列破折号以匹配所选的随机单词。当玩家猜到时,程序会经历一个检查猜测的循环。我的问题是,我真正感到困惑的是,程序如何知道如何更换显示准确且部分显示的单词所需的精确短划线?什么是新的+ = so_far [i]在做什么?总的来说,那部分确实让我困惑,我非常感谢一些澄清。谢谢!

    IN(31,1)

1 个答案:

答案 0 :(得分:0)

您正在寻找执行该操作的代码中的此部分

for i in range(len(word)):
    if guess == word[i]:
        new += guess
    else:
        new += so_far[i]
so_far = new

假设您猜到'S'这个词,并说出要猜到的词是'超级'

初始状态

Sofar : -----

在迭代过程中,为每个单词匹配赋予变量'new'的值。如果不匹配则从so_far获取该值[i] 在我们的案例中

word的长度= len('Super')= 5 Iter 1:只会进入ig循环,因为'S'只出现一次。

这意味着所有其他迭代都转到else条件,因为所有so_far[i] has '-'都是值。 因此,在第一次迭代循环之后,您的值看起来像这样

new: S----

在循环结束时,将new重新分配给so_far。这意味着现在'so_far'变量已从'-----'更改为'S----'

我建议您使用pdb在for循环之上进行调试,并在将来遇到这些疑问时获取详细信息。

希望这有帮助。