Python 我怎样才能理解这个For循环?(难以完全理解循环)

Python 我怎样才能理解这个For循环?(难以完全理解循环),python,for-loop,Python,For Loop,在我的Python教科书中,他们创建了一个“刽子手”游戏。完整资料来源: 我在理解以下代码片段时遇到了极大的困难: new = "" for i in range(len(word)): if guess == word[i]: new += guess else: new += so_far[i] so_far = new 我不知道“我”到底是什么。我也不知道如何用英语“说”/“想象”For循环。我无法理解/想象这段代码中发生了什么,尽管我已经

在我的Python教科书中,他们创建了一个“刽子手”游戏。完整资料来源:

我在理解以下代码片段时遇到了极大的困难:

new = ""
for i in range(len(word)):
    if guess == word[i]:
        new += guess
    else:
        new += so_far[i]
so_far = new
我不知道“我”到底是什么。我也不知道如何用英语“说”/“想象”For循环。我无法理解/想象这段代码中发生了什么,尽管我已经完成了本章中的所有准备工作,并且到目前为止一切都是正确的

在我的计划/算法中对于《刽子手》游戏的这一部分,我写道:

*检查单词的每个字符,检查猜测的字母是否在单词中。如果猜测的字母在单词中,请记下其位置。 然后在“至今”中转到上述位置,并替换为猜测的字母。“*

我真的很头痛,试图理解这段代码。当我试图自己写《刽子手》的时候,我总是被困在这里,我不知道该怎么做

也许有人和我的处境相似。有人能解释这个For循环是什么意思吗?也许这是一种理解其余代码的方法

“我不知道
I
到底是什么”

i
是分配给
范围内的每个项目的名称。第一次通过循环时,
i==0
。第二次,
i==1
,依此类推

“我不知道如何用英语“说”/“想象”
-for的
循环。”

Python中的
for
循环有两个部分;要分配给的名称和要迭代的iterable。对于iterable中的每个值,循环运行一次*,将该值指定给提供的名称

您的示例相对简单:

for i in range(...):
此处
范围(开始[,停止[,步骤]])
提供从
start
stop
的每个
步骤中的整数(不包括在内)。您只有一个
stop
,因此使用默认的
start=0
step=1
,给出:

range(n) ~= [0, 1, 2, ..., n-1, n]  
这些值依次分配给名称
i
,允许您在循环中访问它们


*除非您
中断
返回
或出现错误
提升
d

,否则
循环遵循以下简单设计:

让我们把这条线分解一下:

for i in range(len(word)):
首先,让我们看看:

for i
的关键字
称为循环。它将重复/迭代相同的代码块,直到满足条件为止。
i
是当前变量(在本例中为数值变量)。想象有人说,把数字从1写到10,那么你的
i
就会从数字1变成数字10

in
中的关键字
将声明上一个变量
i
将等于的值范围。我们来分析一下:

range(len(word))
这将转换为变量
word
长度的范围值。假设
单词
等于“hello”,则长度为5。这意味着5的范围是0,1,2,3,4(范围不包括最终值)

基本上,这是:

for i in range(len(word)):
指:

iterate the variable `i` from the range of the length of the the variable `word`.
查看
i
的一个简单测试是将代码更改为:

new = ""
for i in range(len(word)):
    print i #this will print the values
    if guess == word[i]:
        new += guess
    else:
        new += so_far[i]
so_far = new
记住,网上有很多教程:

此行创建一个空字符串

for i in range(len(word)):
在这一行中,代码告诉解释器0到
word-1
len()
函数获得的长度范围内的每一个数字,执行下面的代码

例如
len('Thing')
将是5。现在,如果代码是:

for i in range(len('thing')):
    print('Hello, world')
Hello,world
将被打印5次。在Python中,您不需要像在其他语言中那样增加
i
。因此,当循环通过if/else块后开始
i==0
时,它将自动递增为1

if guess == word[i]:
此行检查变量
guess
是否等于索引
i
处的
word
值。例如,如果
word='thing'
那么
word[0]
将是
t
。计算机从0开始计数,而不是从1开始计数,因此
word[4]
将是
g

  new += guess
这行是
new=new+guess
的简写。因为我们使用的是字符串,
+
操作符将它们连接起来,或者将它们粘合在一起。例如
'a'+'b'
将是
ab

else:
该行指示如果不满足<代码>条件,该怎么办。例如:

if some_number > 10:
    print('hello')
else:
    print('Bye')
word = "example"
for i in range(len(word))
for i in range(3):
    print "The number is " + i
word = "example"
word[0] = "e"
word[1] = "x"
. . .
如果
某个\u编号
大于10,则会打印hello。如果不是的话,我会打印

 new += so_far[i]
这一行连接了new和目前为止索引i中的任何内容

so_far = new

这将
到目前为止
设置为new。

在您的程序中,Python的range()函数接受一个整数(这里是您试图猜测的单词的长度),并返回从0到该数字的整数列表。*因此:

word = "example"
len(word) //equals 7
range(len(word)) //returns [0,1,2,3,4,5,6]
Python中的列表是可编辑的数据类型。这意味着您可以迭代元素,即一次移动一个元素,并对每个元素执行某些操作。首先它将i设置为0,然后执行for循环体中包含的任何操作。然后它将i设置为1,并再次执行for循环体中包含的任何操作。它一直持续到列表的末尾。以你的例子来说:

if some_number > 10:
    print('hello')
else:
    print('Bye')
word = "example"
for i in range(len(word))
for i in range(3):
    print "The number is " + i
word = "example"
word[0] = "e"
word[1] = "x"
. . .
您告诉Python对列表[0,1,2,3,4,5,6]中的每个元素i执行一些操作。“我”在这里没什么特别的。您可以随意命名它,但它只是一种用于以后引用元素的传统速记符号。例如:

if some_number > 10:
    print('hello')
else:
    print('Bye')
word = "example"
for i in range(len(word))
for i in range(3):
    print "The number is " + i
word = "example"
word[0] = "e"
word[1] = "x"
. . .
这张照片是:

The number is 0
The number is 1
The number is 2
在Python中,字符串可以通过索引访问。例如:

if some_number > 10:
    print('hello')
else:
    print('Bye')
word = "example"
for i in range(len(word))
for i in range(3):
    print "The number is " + i
word = "example"
word[0] = "e"
word[1] = "x"
. . .
将其与for循环相结合,您可以:

word = "example"
myWordLength = len(word)
for i in range(myWordLength):
    print "The letter is " + word[i]
这是印刷品:

The letter is e
The letter is x
The letter is a
The letter is m
The letter is p
The letter is l
The letter is e
Range(),用于循环和列表